代码改变世界

作业day2

2017-10-08 00:45  Robortxin  阅读(89)  评论(0编辑  收藏  举报

问题一:

Java类中只能有一个公有类吗?用Eclipse检测以下程序是否正确。是否在接口中同样适用。

 

 

因为公共类名必须和这个java源程序文件名相同,所以只能有一个公共类,相应的,main方法作为程序的入口只能写在公共类中一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。

问题二

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

不能通过,也不能运行,若为int,main函数里面应该雨返回值,返回值类型为int型。

问题三

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

假设不使用static,那么main()方法在调用时必须先对其实例化,而main()做为程序的主入口显然不可能先对其实例化,所以使用static修饰,可以更方便的直接用类.main()对其调用。

问题四:

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

package aa;

 

public class aaa {

 

int point=0;

public static void main(String[] args)

{

int point=1;

System.out.println(point);

 

}

}

 

问题五:

看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?(虚线表示有精度损失,实线表示没精度损失)

 

 

精度是指的各种数据类型的位宽byte8 位short16 位int32 位,long64位,float32 位double 64 位char 16 位
2.数据降级都会损失精度的,体现在各种数据类型能表示的范围不一样相比之下当然位数愈多精度愈高了,其他整数类型的精度就简单了,首位表示正负,所有的都表示数值,位数越高当然精度越高。低精度向高精度转化不丢失精度,反之,从高精度传向低精度则会损失。

问题六

运行以下程序:

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));

    }

}

你看到了什么样的输出,意外吗?

答:程序结果

 

 

原因:事实上浮点运算很少是精确的,只要是超过精度能表示的范围就会产生误差。往往产生误差不是因为数的大小,而是因为数的精度

问题七

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

 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

原因:System.out.println("X+Y="+X+Y)中的“+”为连接运算符,System.out.println(X+Y+"=X+Y")中的“+”为加法运算符,所以不同。