zoukankan      html  css  js  c++  java
  • java课后思考问题(一)

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

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

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

      

         

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

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

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

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

        不能通过,也不能运行。因为main方法是程序运行的最后一个方法,所以没必要有返回值,所以main方法的返回值是void,即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");

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

    输出结果:

    X+Y=100200
    300=X+Y

        原因:在System.out.println()中,如果在string字符串后面是+和变量,会把变量转换成string类型,加号起连接作用,然后把两个字符串连接成一个新的

    字符串输如果先有变量的加减运算再有字符串,那么会从左到右先计算变量的加减,然后再与后面的string结合成一个新的字符串。也就是说加号只有在两

    个string类型或者其一个是string类型的时候才起到连接作用,否则仍然是运算符。

    8.为什么main方法是静态的?

       因为方法如果不是静态的,那么就需要创建实例才能调用此方法,而静态方法调用不需要创建实例。main方法作为程序运行的入口,不能创建实例,所以main方法静态的。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    字符串排序算法总结
    子字符串匹配常用算法总结
    springboot拦截器
    springboot 双 sqlite 数据源配置
    myeclipse springboot 配置帆软报表
    保存在session中的登陆信息无故丢失的解决办法
    删除多条商品
    前台验证邮箱不能重复
    mybatis两张表关联关系映射
    蚂蚁金服支付平台代码配置
  • 原文地址:https://www.cnblogs.com/wl2017/p/7636262.html
Copyright © 2011-2022 走看看