- 数据类型分类
- 基本数据类型的取值范围
- 数据转换
1、整数类型默认的int类型;小数类型默认的double。
2、String的字符串进行类型转换时,如果字符串中包含long整形的字符大写L或者小写l时,在转换成字符串时,会出现错误。
示例:
String str="123L";
long str1=Long.parseLong(str);
System.out.println(str1); //错误
3、String的字符串是float、double浮点型时,字符串可以加f、F、D、d等,在进行基本类型转换时不会出错。
示例:
String f1="12.34f";
float f2=Float.parseFloat(f1);
System.out.println(f2);//结果:12.34,;d、D也一样
4、自动类型转换(也叫隐式类型转换) ,其实就是小范围的数据类型向大范围的数据类型转换,例如int类型转long。
5、强制类型转换(也叫显式类型转换) int b = (int)(i + j)。
6、强制类型转换在某种情况下会丢失精度。
7、表达式的数据类型自动提升。
- 进行四则运算时
1、所有的byte型、short型和char的值将被提升到int型。
2、如果一个操作数是long型,计算结果就是long型。
3、如果一个操作数是float型,计算结果就是float型。
4、如果一个操作数是double型,计算结果就是double型。
5、如果一个操作数是String型,计算结果就是String型。
案例(根据上面的规则):
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2 //错误,b1+b2是int类型,java的整数默认类型为int,b3是byte类型,二者类型不同,所以出错
byte b3 = (byte)(b1 + b2); //正确
short s1 = 10;
s1 = s1 + 12; //错误: 不兼容的类型: 从int转换到short可能会有损失
short s2 = 10;
s2 += 12; // 等同于short s2 = (short)(s2 + (short)1); //正确
- 其它
switch语句能否作用在byte上,能否作用在long上,能否作用在string上?
byte的存储范围小于int,可以向int类型进行隐式转换,所以switch可以作用在byte上
long的存储范围大于int,不能向int进行隐式转换,只能强制转换,所以switch不可以作用在long上string在1.7版本之前不可以,1.7版本之后switch就可以作用在string上了。
switch:
源码:
public static void main(String[] args) {
String s = "a" ;
switch (s) {
case "1":
break;
case "2":
break;
default:
break;
}
}
反编译后:
public static void main(String[] args) {
String s = "a";
String str1;
switch ((str1 = s).hashCode()) { case 49:
case 50:
if ((str1.equals("1")) || (goto 57) || (str1.equals("2")))
break;
}
}
完毕!!!!
给个关注,转发,谢谢