课后作业2
动手动脑

逐行分析:
System.out.println(st); → false
s指向SMALL,t指向LARGE,它们是不同的枚举常量
枚举常量是单例的,但不同的常量是不同的对象
System.out.println(s.getClass().isPrimitive()); → false
枚举类型不是原始数据类型,而是引用类型
枚举实际上是继承自java.lang.Enum的类
System.out.println(su); → true
Size.valueOf("SMALL")返回的是SMALL枚举常量
由于枚举常量是单例的,所以s和u指向同一个对象
循环输出:SMALL, MEDIUM, LARGE
Size.values()返回包含所有枚举常量的数组
按照定义的顺序输出
重要结论:
枚举是类类型,不是原始数据类型
枚举常量是单例的,每个常量在JVM中只有一个实例
枚举提供类型安全,比使用整数或字符串常量更安全
枚举有内置方法:values(), valueOf(), name(), ordinal()等
枚举可以用于switch语句,提供更好的可读性
动手实验

0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
这个结果确实很意外
浮点数的精度问题造成的.
怎样处理精度损失?
解决方法——使用BigDecimal类
Demo:TestBigDecimal.java


浙公网安备 33010602011771号