动手又动脑

1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗?

运行结果:

false
false
true
SMALL
MEDIUM
LARGE

第一个输出是判断s和t是否相等,不相等所以是false

第二是输出是判断是否是原始类型,不是原始类型所以是false

第三个输出判断是否从字符串转换,所以是true

最后是从小到中在到达循环输出所以是SMALL
                                                           MEDIUM
                                                           LARGE

2.

0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999

面对这样的输出很意外。

 

 原因:

在java中在十进制与二进制的转换过程中存在一些数据类型占用位数的问题(double类占用64位)。而且在二进制中最高位有的时候表示正负号,但有时也会是真实的数值,有时64位并不能把我们要写的数准确的表达出来,因此才会出现问题。

3.以下代码的输出结果是什么?

int X=100; int Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");

为什么会有这样的输出结果?

输出结果为:

X+Y=100200
300=X+Y

原因:

在双引号的作用下导致直接的将在里边的数输出,+x+y意思是依次的输出x,y的值。而x+y+表示x的值+y的值加上后边的引号里面的内容。

posted @ 2019-09-18 20:43  kai_kaikai  阅读(127)  评论(0编辑  收藏  举报