Answer:
动手动脑:
1:1.1——仔细阅读实例:EnumTest.java,运行它,分析运行结果?
1.2——你能得到什么结论?你掌握了枚举变量的基本用法了吗?
answer:枚举类型是引用类型!枚举类型不属于原始数据类型,它的每个具体指都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“==”和equals()方法直接比对枚举变量的值。换句话说,对于枚举类型的变量,“==”和equals()方法执 行的结果是等价的。
2——看着这个图,再查查java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论。
Answer:
数据类型可以分为两大类: 1)基本类型; 2)扩展类型。
先来看一下Java语言的基本数据类型。
JAVA规范没有明确指出boolean占几个字节。JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理。
Byte 8位带符号整数 -128到127之间的任意整数
Short 16位无符号整数 -32768~32767之间的任意整数
char 16位,char型是用来表示字符的,它仅能表示一个单一的字符。通常char型常量必须使用单引号括起来,以与数字区分开来。其在java中并不是很常用,因为如果要存储字符的话,一般使用扩展的数据类型string.
Int 32位带符号整数 -2^31到2^31-1之间的任意整数
Long 64位带符号整数 -2^63到2^63-1之间的任意整数
Float 32位单精度浮点数 根据IEEE754-1985标准
Double 64位双精度浮点数 根据IEEE754-1985标准 一些提示:
不象其它程序设计语言,Java语言中的整型的位数是固定的,而不会根据硬件平台以及操作系统的不同而不同。
结论:低位向高位转换是自动转换,无精度损失。高位向低位转换是强制转换,有精度损失。
3——
Answer:
输出结果为:
对于在System.out.println()语句中的+,如果+的前面是字符串,如“X+Y”就是个字符串,这种情况下,不管后面接的是整型、布尔型等等,都默认是拼接字符串,而不会进行加法运算。
课后练习:
1——阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数,负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看java中的数是采用上述哪种码表示的。
Answer:
二进制表示的负数和正数:
正数的原码,反码,补码就是它的二进制数
负数的原码是它的二进制数(不包含符号位)
负数的反码是原码各位取反,0取反是1,1取反是0( 不包含符号位)
负数补码就是反码加1(不包含符号位)
如+5的原码,反码,补码都是1,101
而-5的原码是0,101
反码0,010
补码0,011
正号用1表示
负号用0表示
java中的数是采用补码表示的,当其为正数时,补码和原码相同,当其为负数时,补码为原码取反加1.
注释:在2进制面前加“0”即为表示负数,但是需要满足4为或是8位,如果不足的需用0补齐
例如:10进制:2; 2进制: 10
10进制:-2; 2进制:0010,此数需补足4位,所以不是010,而是0010
如果多出4位,则扩展为8位,并在首位加“0”例如10010的负数为00010010
2——java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就像本示例一样,有意识地在不用地方定义一些同名变量,看看输出的到底是是哪个值。
Answer:对于同名变量,若变量是在局部内定义并使用,那么将屏蔽全局变量,而使用局部变量的值。
若变量是在全局定义并使用,那么将屏蔽局部变量,而使用全局变量的值。