9月27日记录
动手动脑1:
在方法外定义value并赋值为1,在方法中再次定义value后赋值为2,此时输出value为2,若将方法中定义value语句注释掉,输出则为1,方法中使用的同名赋值屏蔽掉了方法外的赋值。
注释前:
注释后:
动手实验(TestDouble.java):
输出结果:
使用double类型的数值进行计算结果是不精确的;
原因如下:计算机存储数据使用的是二进制,我们计算使用的十进制数字会先转换为二进制,其中:十进制小数到二进制小数一般是整数部分除 2 取余,逆序排列,小数部分使用乘 2 取整数位,顺序排列,这就导致有可能会碰到一种情况:
当十进制小数2.1转换为二进制时,其整数部分可以正常转换,而小数部分会陷入10.0001100110011...的无限循环,计算机能够存储的位数是有限的,它就会截取一段数字,从而产生了不精确的结果。
如何解决:
可以使用BigDecimal类,
使用时需要将String作为BigDecimal构造参数的计算结果
结果如下:
在使用double作为BigDecimal构造参数计算结果时,出现了计算不准的情况,是由于double只能进行16位的精确存储,超过16位就会大大降低精确度;
动手动脑2:

结果如下:
在第一条输出语句中,“x+y”表示输出字符,之后的+x+y表示在上一个字符输出后输出x与y的值;
在第二条输出语句中,x+y表示输出x+y计算式的值,之后的+"=x+y"表示输出字符“=x+y”;