一、数据类型:
1、int aa = 10;
int bb = 3;
double cc = aa/(bb*1.0); //用 *1.0将整型转换为浮点型
System.out.println(cc); //结果是3.3333333333333335
float dd = (int)(cc*100)/100.0f; //用*100 /100截取两位小数 ,结果是3.33
System.out.println(dd);
2、整型的long,不加L默认是int型,但是int型转换为long是安全的,所以会自动转,能编译通过;浮点数不加F默认是double类型,double类型转float可能损失精度,因为不会自动转,编译是不会通过的;如果long数据 超过int的取值范围还不加L那么也会直接报错了。
3、short s1=1; s1=s1+1; 错误 //a是short类型,1是int类型,a+1, short类型+int类型,Java会自动转化为高等级类型,所以a+1结果是int类型
short s2=1; s2+=4;// 正确 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
4、==和equals()的区别:
- ==比较的是两个对象的引用是否相同,或者是比较原始数据类型是否相等;
- equals()比较的是两个对象的内容是否相同。
5、String str1 ="abc";
String str2 ="abc";
System.out.println(str2==str1);
System.out.println(str2.equals(str1));
String str3 =new String("abc");
String str4 =new String("abc");
System.out.println(str3==str4);
System.out.println(str3.equals(str4));
结果是true,true, false, true.前两个String对象从String池中获取,后两个对象是新创建的,内容相同但引用不同。