课后作业

1.变量的作用域

 实验代码:

public class homework {
    public  static int a=10;
    public static void main(String[] args) {
        int a=0;
        System.out.println("a = "+a);
    }
}

 

 实验结果:

a=0

 结论:优先使用作用域小的变量,这时候会将作用域大的同名变量给屏蔽掉。

 

 

2.枚举类型

 

实验代码:

public class EnumTest {

    public static void main(String[] args) {
        Size s=Size.SMALL;
        Size t=Size.LARGE;
        //s和t引用同一个对象?
        System.out.println(s==Size.LARGE);  //
        //是原始数据类型吗?
        System.out.println(s.getClass().isPrimitive());
        //从字符串中转换
        Size u=Size.valueOf("SMALL");
        System.out.println(s==u);  //true
        //列出它的所有值
        for(Size value:Size.values()){
            System.out.println(value);
        }
    }

}
 enum Size{SMALL,MEDIUM,LARGE};

实验结果:

false
false
true
SMALL
MEDIUM
LARGE

结论:由运行结果可推断s和t引用同一个对象,不是原始数据类型,size的所有值只有SMALL,MEDIUM,LARGE。枚举类型是引用类型!

枚举不属于原始数据类型,它的每个具体值都引用个特定的对象。相同的值则引用同一个对象

 

3.数值的二进制表示

原码:最高位表示符号位(0代表正数,1代表负数),其余位表示数值的绝对值。

反码:正数的反码与原码相同,负数的反码是将原码中的各位取反(即,0变为1,1变为0)。

补码:正数的补码与原码相同,负数的补码是在其反码的基础上加1。

 在Java中,整数类型(如byte、short、int、long)以补码形式表示。

 

 

4.两数相加

 运行结果:

 结论:double类型的数据进行运算是不精确的

Double类型在Java中是一种浮点数类型,在计算机内部以二进制形式表示数字。这种表示方法存在一些限制,导致进行浮点数运算时无法获得完全精确的结果。
下面是几个常见的原因:
1. 有限的表示范围:Double类型使用64位表示,其中一部分用于表示指数,一部分用于表示小数部分。然而,这种有限的位数限制了可以精确表示的数字范围。当超出这个范围时,结果就会被截断或舍入,导致精度丢失。
2. 二进制表示和十进制表示之间的转换:许多十进制分数(例如0.1)无法精确地转换为二进制表示。这会导致在浮点数运算中产生舍入误差。
3. 舍入误差:由于浮点数使用有限的位数表示无限数量的实数,进行基本算术运算时会引入舍入误差。这是由于结果被截断为能够存储的有限位数。
4. 运算顺序:浮点数运算的顺序也可能影响结果的精度。由于浮点数运算是按顺序执行的,先进行某些操作再进行其他操作可能会导致不同的结果。

 

5.字符串拼接

 运行结果如下:

 前者从左往右,由于左边是字符串,先进行字符串的拼接,拼接后得到字符串"X+Y=100",此时左边是拼接后的字符串加Y,于是继续进行拼接得到“X+Y=100200”

后者先进行X+Y,由于二者都是数字,于是数值相加得到300,最后再与字符串"X+Y"拼接得到"300=X+Y"

posted on 2023-09-13 15:52  Daniel350  阅读(12)  评论(0编辑  收藏  举报