动手动脑
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};
运行结果:
分析与结论:
①、在枚举变量中,使用==和equals()的结果是一样的;
②、原始数据类型有八个:byte、short、int、long、boolean、char、float、double;枚举类型是引用类型
③、getClass() 方法返回和当前枚举常量的枚举类型对应的 class 对象;
④、枚举可以限制范围,只可在枚举类中选。
2、同名变量的屏蔽原则
public class Test1 { private static int value=1; public static void main(String args[]) { int value=2; System.out.println(value); } }
结果:
分析与结论:
java变量遵循“同名变量的屏蔽原则”,第一个value是成员变量,也是全局变量,第二个value是局部变量,局部变量可以覆盖全局变量;
3、JAVA中的类型转换
short 16位 -32768~32767 -2^15~2^15-1
int 32位 -2147483648~2147483647 -2^31~2^31-1
long 64位 -922372036854775808~9223372036854775807 -2^63~2^63-1
float 32位 1.4e-45~3.4028235e38
double 64位 4.9e-324~1.7976931348623157e308
一般来说在实线两端都是由低精度指向高精度的类型,所占的位数从低到高,范围从小到大,所以可得出,低精度向高精度转化不丢失精度,反之,从高精度传向低精度则会损失。
4、
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)); } }
运行结果:
分析与结论:
使用double类型进行计算,结果是不精确的。因为这个涉及到二进制与十进制的转换问题。
5、
public class Test2 { 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"); } }
运行结果:
分析与结论:
原因,+X+Y,表示依次输出XY的值,而X+Y表示一种运算。