01JAVA语言基础课后作业

1.问题

一个Java类文件中真的只能有一个公有类吗?

请使用Eclipsejavac检测一下以下代码,有错吗?

 

回答  真的只能有一个公有类

一个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

第一个中的XY没有进行相加运算,原因是“X+Y=”是String类型的加号联结的是相同类型的,会把后面的XY自动转化为String类型的,故不再进行加法运算,第二个一开始的XYint型的,可以进行加法运算,股输出结果如上。

posted @ 2017-10-08 01:03  想不到8  阅读(182)  评论(0编辑  收藏  举报