java类型转换
基本数据类型及对应的封装类
转化规则
不同的类型数据需要先转化为同一类型,再进行运算。
转换从低级到高级(根据容量来看)
低 ------------------------>高
byte,short,char-> int -> long ->float ->double
类型转化需要满足的规则:
不能对boolen类型进行转换。
不能把对象类型转换为不相关类的对象。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
转换过程中可能导致溢出或损失精度,例如:
int i=128;
byte b = (byte)i;
因为byte类型时8位,最大值127,所以当int类型强转为byte类型时,值128就会溢出。
浮点数到整型的转换时通过舍弃小数得到的,例如:
(int)127 ==23;
(int)-45.89f == -45
自动类型转换
容量小的数据类型可以自动转换为容量大的数据类型。
public class Demo02 {
public static void main(String[] args) {
char c1 = 'a';//定义一个char类型
int i1 = c1;//char自动转化为int
System.out.println(i1);//97
char c2 = 'A';
int i2 = c2+1;
System.out.println(i2);//66
}
}
常见错误和问题
1、操作比较大的数时,要留意是否溢出,尤其是整数操作;
public class Demo03 {
public static void main(String[] args) {
int money = 1000000000;//10亿
int years = 20;
int total = money*years;//返回负数
long total1 = money*years;//返回负数。默认是int,因此结果会转化为int值,再转成long。但是已经发生数据丢失
long total2 = money*((long)years);//先将一个因子变成long,整个表达式发生提升。全部用long计算
System.out.println(total);
System.out.println(total1);
System.out.println(total2);
}
}
2、L和l的问题:
不要命名名字为l的变量
long类型使用大写L不要用小写
3、下划线分隔符
开发过程中特别长的数字可以使用下划线分隔符进行分割。
int b = 1_2929_1234