• 课程作业02


    1.一个Java类文件里边只能有一个公共类。例如

    package test;

    public class Test1 {

    public static void main(String[] args) {

    public  class Inner 

    {

    }

    // TODO 自动生成的方法存根

    }

    }

    这一段代码就是错误的,因为他有两个公共类,若将类Inner前的public删掉程序就不会报错。一个java文件可以写多个类和接口在里面,但必须只能且必须有一个public的类或接口,而且那个public的类或接口必须和文件同名

     

     

     

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

    比如下边的例子:

    package test;

    public class Test1 {

    public static int main(String[] args) {

    // TODO 自动生成的方法存根

    }

    }

    答案是不可以的,若为int,则main里边应该有返回值,而且返回值的类型为int类型

     

     

     

    3.如果源程序为如下所示:

    package test;

    public class Test1 {

    private static int value=-1;

    public static void main(String[] args) {

    int value=2;

    System.out.println(value);

    // TODO 自动生成的方法存根

    }

    }

    他的输出结果为2原因是java中,局部定义的变量能够覆盖全局范围内的变量。在局部使用某个变量的时候JVM会优先找和当前使用位置"近"的变量的的定义!如果在局部定义了和全局变量一样的名字,我们使用的过程中,调用全局变量的话,会使用this关键字辅助。

     

     

     

    4.Java中类型的转换

     

     

    不同的基本类型所占的位数与范围如下:

    Int         32    4         -2,147,483,648 ~ 2,147,483,647
    Short    16    2          -32768 ~ 32678
    long     64     8         -9,223,372,036,854,775,808~+9,223,372,036,854,775,807
    float     32     4        -3,40292347E+38 ~ +3,40292347E+38
    double 64     8        -1.79769313486231576E+308 ~ 1.79769313486231576E+308
    char      16     2         -128~127
    boolean 1     0.125    true/false
    byte      8      1           -128 ~ 127

     

    int转换为float和double是会有精度损失,long类型转化为double类型也会有精度损失的。

     

     

     

    5.为什么double类型的数值进行运算得不到“数学上精确”的结果?

    原因:double类型是双精度浮点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保证十进制小数点后15位有效精度和第16位的部分精度。double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

     

    6.执行以下的代码:

    public class Test {

    public static void main(String[] args) {

    int X=100;

    int Y=200;

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

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

       }

    }

    输出的结果为:

     

    原因:第一个式子"X+Y="+X+Y等于两个字符串直接相加;

    第二个式子相当于两个string类型的数值直接相加;

  • 相关阅读:
    【WPF】操作RichTextBox(取值、赋值、清空、滚动条自动滚动实例、文本自动滚动实例)
    系统初始化 服务列表
    多个filter如何决定调用顺序
    IE浏览器 查看Form对象
    java try_catch 分析
    关于ClassLoader 和Class的俩个记录
    lis分析之一一批处理(任务)如何连接数据库的
    document.all("div).style.display = "none"与 等于""的区别
    Mybatis Util包
    Spring创建bean对象的三种方式
  • 原文地址:https://www.cnblogs.com/ljysy/p/7623949.html
Copyright © 2020-2023  润新知