码迷,mamicode.com
首页 > 编程语言 > 详细

java课后思考问题

时间:2017-10-08 10:09:31      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:rgs   4.0   需要   技术   包括   数学   image   9.png   测试   

---恢复内容开始---

1.一个Java类文件中真的只能有一个共有类吗?

技术分享

 

技术分享

       一个Java类文件中只能有一个公有类

2.请使用Eclipse或javac检测一下以下代码,有错吗?

  技术分享

     技术分享

   在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。内部类的详解链接:http://www.cnblogs.com/dolphin0520/p/3811445.html

 

 3.这里关于公有类的结论是否同样可用于接口?

     Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能), 与Java的类文件一样,接口文件的文件名必须与接口名相同。一个类可以有多个接口。

 

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

     非静态方法需要一个对象才能执行,而static方法只需类就可以执行。而main方法是程序刚开始就运行的程序,所以没有对象,所以Java规定main方法是静态的。

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

public class Test {

       int a=1;
       public static void main(String[] args) {
       Test t=new Test();
       B b=new B();
       int a=2;
       System.out.println("main().a="+a);
       t .print_A();
       b.print_B();

        }
        public void print_A(){
         int a=4;
        System.out.println("print_A().a="+a);
         }

}
class B{
    void print_B(){
       int a=3;
       System.out.println("print_B.a="+a);
     }
}

技术分享

5.看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?

技术分享

技术分享  技术分享

 

 

 

Int            32位       取值范围为 -2的31次方到2的31次方减1之间的任意整数(-2147483648~2147483647)

Short       16位       取值范围为 -32768~32767之间的任意整数

long         64位       取值范围为 -2的63次方到2的63次方减1之间的任意整数(-9223372036854774808~9223372036854774807)

float         32位       取值范围为 3.402823e+38 ~ 1.401298e-45

double     64位       取值范围为 1.797693e+308~ 4.9000000e-324

char         8位         取值范围为  -128~127

byte         8位         取值范围为 -128~127之间的任意整数

    结论: java中数据类型所占位数越大,数值范围越大。由低位数类型到高位数类型转化,可能有精度损失。

6.请运行以下代码(TestDouble.java)

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,后面舍去的位数一定会带来误

差,无法得到“数学上精确”的结果。

7.

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

int X=100; int Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");

为什么会有这样的输出结果?

 

java课后思考问题

标签:rgs   4.0   需要   技术   包括   数学   image   9.png   测试   

原文地址:http://www.cnblogs.com/wl2017/p/7636262.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!