1.动手动脑
·仔细阅读示例: EnumTest.java,运行它,分析运行结果,
你能得到什么结论?你掌握了枚举类型的基本用法了吗?
·结论:枚举类型是引用类型, 不属于原始数据类型,它的每个具体值都引用一个特定的对象,相同的值则引用同一个对象。对于枚举类型的变量,"=="和equals()方法执行的结果是等价的。
2.动手实验
· 请运行以下代码(TestDouble.java), 你看到了什么样的输出,意外吗?
·示例的运行结果:
0.05+0.01=0.060000000000000005
1.0 - 0.42= 0.5800000000000001
4.015* 100=401.49999999999994
123.3 / 100 = 1.2329999999999999
·结论:使用double类型的数值进行计算, 其结果是不精确的。
·你知道原因吗? 为什么double类型的数值进行运算得不到"数学上精确"的结果?
·(1)根本原因:二进制浮点数表示的限制
(2)Java中的double类型使用IEEE 754浮点数标准
(3) 很多十进制小数无法用二进制精确表示(比如0.1在二进制中是无限循环小数)
(4) 计算机存储时会有精度损失,计算时误差会累积
·怎样处理精度损失?
解决方法﹣﹣使用BigDecimal类
3.动手动脑
以下代码的输出结果是什么?
intX=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
为什么会有这样的输出结果?
·输出结果:
X+Y=100200
300 =X+Y
·原因:
先进行整数加法,然后再与字符串连接。