9.10课后作业
一、动手动脑
实验结果:
- System.out.println(s==t)语句输出结果为false说明枚举类Size s和t由于调用枚举内容的不同,导致两变量赋值内容的不同,“==”运算符比较的是数值内容而不是地址,所以输出结果为false
- System.out.println(s.getClass().isPrimitive())语句输出结果为false说明枚举类Size不是基本类型,isPrimitive()语句是输出变量是否为基本类型,由于输出结果为false,说明Size枚举类不是基本类型。
- System.out.println(s==u)语句输出结果为true说明枚举类Size u和s变量内容相同,枚举类中“==”运算符比较的是变量数值,不同于String类,因此枚举类可以用“==”运算符比较变量存储数值是否相同。
- for(Size value:Size.values()){System.out.println(value)}语句输出语句为SMALL MEDIUM LARGE说明循环语句是按照枚举类Size的大小根据存储位置对枚举类中的数值进行顺序输出存储内容。
结论:enum枚举类的遍历不同于数组,它更多的是一个类,可以使用for(enum value:enum.values())进行遍历输出value的值;可以调用enum类的成员对enum类变量进行赋值,当然也可以使用valueof()函数进行赋值;枚举类可以用==进行比较,枚举类中使用==运算符比较的是数值而不是存储地址;enum枚举类不是基本类型.
二、动手实验
运行结果:
输出结果与实际运算结果不相同,多了几位小数,说明使用double类型的数值进行计算,其结果是不精确的,在以后写代码的过程中必须要注意这点,因为细小精度的差异都可能导致不可逆转的后果,建民老师上课讲述了美国挑战者号事故便是因为精度差异的原因导致了事故的发生。可以使用BigDecimal类进行解决,因为BigDecimal类的精度比较精确,不会多出额外的小数精度。
三、动手动脑
输出结果:
原因:因为当前后变量数据类型相同时会进行相加计算后再进行输出,而当遇到加号而前后数据类型不同时则会分别输出前后变量的值,如果把两变量用括号括起来就可以输出相加数据的值
原码,反码,补码的概念:
原码:原码是计算机机器数中最简单的一种形式,就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。数值位就是真值的绝对值,符号位为“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。为了方便整数和小数区别,整数的符号位与数值位之间用“,”隔开,小数的符号位与数值位之间用“.”隔开。最高位是符号位,0代表正数,1代表负数,非符号位为该数字的绝对值的二进制
反码:反码通常是用来由原码求补码或者由补码求原码的过渡码。反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反。正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。
补码:补码是计算机把减法运算转化为加法运算的关键编码。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。即正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。