JAVA第三周作业
一:枚举
package homework; public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); // //是原始数据类型吗? 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};
其对于显示结果为:
我更改之后:
//是原始数据类型吗? System.out.println(s.getClass().isPrimitive()); //从字符串中转换 //Size u=Size.valueOf("SMALL"); //System.out.println(s==u); //true
其显示了System.out.println(s.getClass().isPrimitive());的结果 为 false
结论:
枚举类型是引用类型
枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。
二:原码 反码 补码
package homework; public class dingyi { public static String dingyi="ly"; public static void main(String[] args) { String dingyi="new lyking"; System.out.println(dingyi); } }
结果为:
四:数据类型
①
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会从低级类型向高级类型转换,即取值范围相对较小的数据类型 转换成 取值范围相对较大的数据类型。
②
package homework; public class shuju { public static void main(String[] args) { System.out.println("0.05 + 0.01 = " + (0.05 + 0.01)); System.out.println("1.0 - 0.42 = " + (1.0 - 0.42)); System.out.println("4.015 * 100 = " + (4.015 * 100)); System.out.println("123.3 / 100 = " + (123.3 / 100)); } }
其结果为
结论:
使用double类型的数值进行计算, 其结果是不精确的。
计算机只能识别二进制,一切的数据最后都要转换为二进制。例如源程序中的2.4是十进制的,要转换为二进制,但2.4 的二进制不是精确的2.4,只是接近2.4,实际为2.3 999 999 999 999 999,浮点数由两部分组成:指数和尾数,再进行浮点数的二进制与十进制的转换时,浮点数参与了计算,那么转换过程就变的不可预测,并且变得不可逆。
事实上浮点运算很少是精确的,只要是超过精度能表示的范围就会产生误差。往往产生误差不是 因为数的大小,而是因为数的精度
五:以下代码的输出结果是什么?
package homework; public class differentjia { public static void main(String[] args) { int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y"); System.out.println("X+Y="+(X+Y)); } }
其结果为:
结论:
System.out.println("X+Y="+X+Y);其中 + 为连接运算符
System.out.println(X+Y+"=X+Y");其中 + 为加法运算符,为两个数相加
若加上括号System.out.println("X+Y="+(X+Y)); 可进行加法运算