Java数据类型中使用细节
我们在使用数据类型时应当注意float 和double中精度的不同而导致实际结果与我们观察到的结果不同
float和double中使用细节
float f = 0.1f;//0.1
double d = 1.0/10;//0,1
//输出结果为false,0.1,0.1
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
注:在计算中由于精度不同,float要比double精度低,所以double要比float更接近于0.1,所以输出结果为false
float d1 = 2666666666f;
float d2 = d1+1;
System.out.println(d1==d2);//输出结果为true
注: 由于在虚拟机中,在float的范围并不能包含太大,d1超过精度范围,所以机器会将它四舍五入,而d2+1后机器会将它四舍五入,导致最后输出结果相同,输出true
尽量避免float直接进行数据比较
新建对象的内存分配问题·
String sa = new String("hello");//示例1
String sc = new String("hello");
System.out.println(sa == sc);//false
String sd ="hello";//示例2
String sb ="hello";
System.out.println(sd == sb);//true
注:在示例1中,由于新new了一个对象,所以sa,sc所处的内存块已经不同,自然也不可能相等,从而输出false;而在示例2中,sd和sb比较的是字符串里的内容,自然就会相等,输出true。
如果想让示例1的例子相等,不妨使用以下方法
System.out.println(sa.equals(sc)); // true
所有字符本质都可以用数字表示
//所有字符本质都是数字
char a = '大';
char b = '帅';
char c ='哥';
System.out.println((int)a);//进行强制转换,输出数字
System.out.println((int)b);
System.out.println((int)c);
boolean的一些细节
//布尔值拓展
boolean flag =true;
if (flag == true){}
if(flag){} //代码更加精简,默认为true
常见的转义字符
\t 制表符
== true){}
if(flag){} //代码更加精简,默认为true
#### 常见的转义字符
\t 制表符
\n 换行符