1.自动类型转化
相互兼容的多种数据类型在运算时,小转大即为自动类型转换。
10 + 1.0 =》10.0 + 1.0
2.强制类型转化
相互兼容的多种数据类型在运算时,大转小即为自动类型转换。
在java中,数据类型相互兼容,在运算时,必须保证表达式中的参与运算的数据的所有数据类型保持一致。
案例:
public class Main {
public static void main(String[] args) {
int c = 10;
int d = c + 1.5;//报错
}
}
分析:报错原因
c + 1.5 转换成了10.0 + 1.5,结果是11.5,占8个字节,而d是一个只能存储4个字节的变量,所以报错。
解决:
public class Main {
public static void main(String[] args) {
int c = 10;
int d = c + 1.5;//报错
double d = c + 1.5;//方法一
d += c;//方法二,等同于d =(int)(d + c);
}
}
分析:+= 还有强制转换的功能。其他的递增递减运算符也有等同效果。
案例:分析下面代码的执行过程
int c = 10;
int b = c++ + ++c;//10+12
int b = ++c + c++;//11+11
容易知道结果是22,但是不知道是11+11还是10+12
分析:
在java中代码都是从左往右一次执行,因此c++ 先执行,++C后执行
c++ => C = 10 ; => c =11;
++c => c = 12
在表达式中,除了有++运算符之外还有其他的运算符时,++在前就先自加,然后再利用自加后的结果参与运算。