01JAVA语言基础课后作业
1.问题
一个Java类文件中真的只能有一个公有类吗?
请使用Eclipse或javac检测一下以下代码,有错吗?
回答 真的只能有一个公有类
一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必
须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。
至于main()不是必须要放在public类中才能运行程序。
可以编译 运行结果 Exception in thread "main" java.lang.Error: 无法解析的编译问题:
at day0.Test.main(Test.java:3)
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 d = 2.4;
System.out.println(d);
输出的是2.4,而不是2.3999999999999999。也就是说,不进行浮点计算的时候,在十进制里浮点数能正确显示。浮点数并不适合用于精确计算,而适合进行科学计算。
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=”是String类型的,加号联结的是相同类型的,会把后面的X和Y自动转化为String类型的,故不再进行加法运算,第二个一开始的X和Y是int型的,可以进行加法运算,股输出结果如上。