zoukankan      html  css  js  c++  java
  • 课程作业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类型的数值直接相加;

  • 相关阅读:
    160628、利用Oracle rownum让表排序字段值连续
    160627、你想知道的关于JavaScript作用域的一切
    160624、Spark读取数据库(Mysql)的四种方式讲解
    160623、理解 Promise 的工作原理
    160622、详解JavaScript变量提升
    160621、Java注解教程及自定义注解
    详解JavaScript数组过滤相同元素的5种方法
    box-shadow
    Axios 中文说明
    一步一步学Vue(九) 路由元数据
  • 原文地址:https://www.cnblogs.com/ljysy/p/7623949.html
Copyright © 2011-2022 走看看