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};
运行会得到结果
由此可见枚举类型定义的不同常量并不是同一个对象,也不再是原始的数据类型,取值所得到的结果是相同的。但定义的是不同常量。
Java中不同数据类型存储方式不同,占用空间也不同
short 2byte
int 4byte
long 8byte
char 1byte
float 32byte
double 64byte
从小字节数学转化为大字节会损失精度,这是常识,但是从int到float double也会损失精度,因为int的整数部分是32位 而float整数部分只有16位,因此会丢失精度。
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计算时会出现一些问题,结果是这样的
得出一个结论使用double类型的数值进行计算, 其结果是不精确的。
public class Test1{
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");
}
}
执行结果是这样的
这是因为输出的时候加号的优先级是从左往右如果加号左右两边有一个是字符串,就会把后面的加到前面一个的后面,两个数才会值相加,