PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: 缺省值,default 值,默认值三个词是一个意思。代表某种数值类型的......默认值。
作者回复: 👍👍,建议有基础的同学把这一段看懂
作者回复: 其实我觉得我有时候废话还是挺多的囧
作者回复: > 为什么byte和short后面不用加字母呢? 是的, 编译器可以检查byte和short的值阈, 如果超出会报错. 比如 byte b = 999; 这个更多的是Java编译器从易用性做的一种简化. 如果每次给byte和short赋值, 都要标明一下类型, 会很繁琐. > 后面的问题... 其实不存在long的值包含在int里面, 比如 long abc = 999; 这个过程其实是一种Java的自动类型转换, 低精度的数字可以赋值给高精度的数字. 这部分内容在"15 | 基本数据类型的更多语法点"有讲述.
作者回复: JVM不是只能跑在高性能的服务器上,或者动则几个G的手机里,也可能跑在嵌入式设备里,跑在内存CPU很小的设备上。这时候JVM可能就值得优化了。 这就是标准的能力。标准只规定了boolean的使用规范,并不涉及其底层是怎么存储的。只要能当boolean用就行。 对于服务器之类的,当然是不在乎boolean占一个字节还是一个bit,访问的效率更重要,那就用一个byte。对于内存稀罕的,对访问速度又没什么要求的,没准可以(但是我觉得可能性也不高,寻址有问题)用一个byte表示好几个boolean。
作者回复: 这个不是四舍五入的范畴,而是计算机里的浮点数(不止是Java)无法精确表示每一个小数的问题。详细参见 https://github.com/deepnighttwo/LetsJava/blob/master/FAQ/01%E7%AB%A0-%E4%B8%BA%E4%BB%80%E4%B9%88%E8%AE%A1%E7%AE%97%E6%9C%BA%E9%87%8C%E7%9A%84%E6%B5%AE%E7%82%B9%E6%95%B0%E4%B8%8D%E7%B2%BE%E7%A1%AE.md
作者回复: double的问题在于无法精确的比较。而且有些场景可能会出现精度问题,比如本来应该是3,结果double变成了2.9999999999这都是有可能的。 由此造成的问题就是,要比较两个double的值很繁琐,要用两个double的数字相减,然后看差值的绝对值是不是小于一个对于业务足够可以忽略。比如对于表示钱的两个double数字,差的绝对值如果小于0.001,也就是一厘,那就可以认为是相等的。 如果业务上是整数,尽量用int或者long。比如表示手机的个数,汽车的个数等。
作者回复: 搜索“intellij 快捷键”就可以找到了
作者回复: double的值域有,但是意义不大,当表示非常大的数字时,double的精度会丢失的非常厉害。就好像你用天文望远镜看星星,测量误差可能都是光年级别的。
作者回复: Java中的整数默认最多是int类型,比如9,8,99999999,最多是int类型。再想向上,就要加个L后缀,就代表是long类型。 而浮点数默认是double类型,比如1.1,所以如果要给float赋值,要加个后缀f代表是float而不是double。