java课后习题

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

package work;

public class EnumTest {
public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一个对象?
System.out.println(st); //
//是原始数据类型吗?
System.out.println(s.getClass().isPrimitive());
//从字符串中转换
Size u=Size.valueOf("SMALL");
System.out.println(s
u); //true
//列出它的所有值
for(Size value:Size.values()){
System.out.println(value);
}
}

}
enum Size{SMALL,MEDIUM,LARGE};
运行结果为:
false
false
true
SMALL
MEDIUM
LARGE
运行结果表明上述代码中s和t并不是引用的同一对象,也不是原始数据类型,枚举类型是引用类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

2、请运行以下代码(TestDouble.java)
package work;

public class TestDouble {
public static void main(String args[]) {
System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
System.out.println("4.015 * 100 = " + (4.015 * 100));
System.out.println("123.3 / 100 = " + (123.3 / 100));
}
}
运行结果:
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
由运行结果得知,使用double类型的数值进行计算,其结果是不精确的。这主要是因为二进制和十进制之间的转换,我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来,而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

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
结果差异主要源于Java中字符串连接和算术运算的优先级和结合性。
第一个输出中字符串"X+Y="与+X结合,之后+Y、第二个输出中先执行X+Y,然后+"=X+Y"

posted @   无名客QF  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示