JAVA初阶问题浅究
浮点小数银行问题
float f=0.1f; double d=1/10; System.out.println(f==d);//false float f1=2999999999999f; float f3=f1+1; System.out.println(f3==f1);//true
-
float
-
double
-
有限
-
离散
-
舍入误差
-
大约
-
接近但不等于
解决方法:需要用到Big Decimal 数学工具类
对象引用地址不相等问题
String s1=new String("侯"); String s2=new String("侯"); System.out.println(s1==s2);//false String s3="侯"; String s4="侯"; System.out.println(s3==s4);//true
new 的对象是再堆内存中新开辟的空间所引用的是地址,地址不同
强制转换中的内存溢出问题
char a='a'; int i=a+1; System.out.println(i);//98 System.out.println((char) i);//b
强转->高到低 可能内存溢出或者精度问题
自转->低到高