一、枚举类型
1、代码
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};
2、结果截图
3、结论
枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。
二、变量的作用域
1、 Java变量遵循“同名变量的屏蔽原则”,每个变量都有一个“有效”的区域(称为“作用域”),出了这个区域,变量将不再有效。
2、代码
public class Test { private static int value=1; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int value=2; System.out.println(value); } }
3、结果截图
三、java中的类型转换
1、转换范围
1.Int 32位 取值范围为 -2的31次方到2的31次方减1之间的任意整数(-2147483648~2147483647)
2.Short 16位 取值范围为 -32768~32767之间的任意整数
3.long 64位 取值范围为 -2的63次方到2的63次方减1之间的任意整数(-9223372036854774808~9223372036854774807)
4.float 32位 取值范围为 3.402823e+38 ~ 1.401298e-45
5.double 64位 取值范围为 1.797693e+308~ 4.9000000e-324
6.char 8位 取值范围为 -128~127
7.byte 8位 取值范围为 -128~127之间的任意整数
2、结论
不同类型之间相互转换可能会损失精度。
四、动手实验
1、代码
public class TestDouble { 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)); } }
2、结果截图
3、结论
使用double类型的数值进行计算, 其结果是不精确的,浮点数值没办法用十进制来精确表示的原因要归咎于cpu表示浮点数的方法,浮点数的值实际上是由一个特定的数学公式计算得到的。
五、动手动脑
1、代码
public class Test1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y"); } }
2、结果截图
3、结论
双引号中的是字符串,没有双引号就是正常的加减法。