动手动脑解决方案

一: 仔细阅读示例: EnumTest.java,运行它,分析运行结果?
     你能得到什么结论?你掌握了枚举类型的基本用法了吗?

   

   分析:枚举类型不属于原始数据类型,是引用类型。每一具体值都引用特定对象。相同值引用同一对象。可以使用“==”直接对比值。

二:课后练习
阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。

反码是数值存储的一种,但是由于补码更能有效表现数字在计算机中的形式,所以多数计算机一般都不采用反码表示数。

所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

原码10010= 反码11101 (10010,1为符号码,故为负)(11101) 二进制= -2 十进制

补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

三:Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。

当变量同名时,有些变量会被屏蔽。Java中如果局部变量名与成员变量与成员变量名相同,则成员变量会被屏蔽,如果想使用成员变量需要使用this操作符。

四、

char 8位二进制数范围是-2的7次方到2的7次方-1,byte 8位带符号整数-128到127之间的任意整数,short 16位无符号整数-32768到32767之间的任意整数,int 32位带符号整数-2的31次方到2的31次方-1之间的任意整数,long 64位带符号整数-2的63次方到2的63次方-1之间的任意整数,float 32位单精度浮点数,double 64位双精度浮点数。

结论是:Java会完成低级类型向高级类型转换,即取值范围相对较小的数据类型转换成取值范围相对较大的数据类型。

原因:浮点型数字运算时产生误差是由于数的精度。

六、

输出结果:

原因:第一个中的+为连接符,而第二个中为运算符。

原文地址:https://www.cnblogs.com/ziyixuedie/p/5937475.html