Java课堂作业02

一、

1.问题:一个Java类文件中真的只能有一个公有类吗?

2.解答:

 

定义了两个公有类,如果里面什么也不加就能运行,但是在第二个里加了东西就不行了。

因为(以下转自互联网):一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必

须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。
至于main()不是必须要放在public类中才能运行程序。

每个编译单元只能有一个公开的接口,而这个接口就由其public 类来表示。如果能有多个public类,程序就无法识别该从哪里导入程序了。

二、

1.问题:把main()方法的返回值由 void 改为 int ,程序能编译通过吗?能运行吗?

2.解答:

看来是不行了。

三、

1.问题:为什么java规定作为程序入口点的main() 方法静态的?

2.解答(转自互联网):main函数其实也是所在类的一个方法,就比如一个类是test,那么该类的main其实就是test.main(String[] args),众所周知如果一个方法不是静态的,则要先实例化该类,比如要这样 A a=new A();
然后才能调用 a.main(); 
而这对于运行一个程序的主函数来说是不现实的,所以比如把main函数定义为static,使a.main()可以直接被调用。
因此,java规定了main函数必须是静态的。

四、

1.问题:Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。

2.解答:

可以看到输出的是2。

五、

1.问题:

2.解答:int  short long byte 表示整数,其值是精确的,而float double均为浮点型,表示近似值,所以当整型转换成浮点类型的近似值会有精度损失。而ASCLL都是整数,所以char转换成整型不会有精度损失。

六、

1.问题:

以下代码的输出结果是什么?
  int X=100;
  int Y=200;
  System.out.println("X+Y="+X+Y);
  System.out.println(X+Y+"=X+Y");
 为什么会有这样的输出结果?

2.解答(以下资料来自互联网):

因为:当"X+Y="在前时,默认的把int型X,Y转化为String型,"X+Y="使编译器认为X,Y是String型的了,System.out.println()本身的参数默认为String型,遇到这种情况默认了转化,产生了如此结果,而第二个就是简单的输出,没有让计算器产生“误解”。

   

原文地址:https://www.cnblogs.com/y862621115/p/7636083.html