动手又动脑
一、 首先我分析了程序,发现问题在于==和equals的区别上:equals比较两个对象的内容是否相同,而== 比较两个对象是否是同一对象。第一个false说明s和t没有引用同一个对象。第二个false说明s不是原始数据类型。Size.valueOf可以是u得到SMALL,然后s就和u相同了。然后将Size.values的所有值赋给value,然后列出所有值。
1:JAVA的基本数据类型有8种:byte(字节)、short(短整型)、int(整数型)、long(长整型)、float(单精度浮点数类型)、double(双精度浮点数类型)、char(字符类型)、boolean(布尔类型)。而枚举类型不是原始数据类型。
2:它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
3:可以使用“==”方法直接比对枚举变量的值。
二、
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
补码的表示方法是:正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。
Java语言中的数字是以补码方式存储的。
三、
简单的来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是无穷多位),而double类型的数值只有64bit后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。
四、
第一行输出X+Y=100200,第二行输出300=X+Y。
java中的加号有时是连接符,有时是运算符:
1:当左右两边连接的都是非数字型时,则为连接符。
2:当一边是数值类型,另一边是非数值类型时,则为连接符。
3:当两边都是数值类型时,则为运算符,即相加求和的作用。
第一个是连接符,第二个是运算符。