Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
低 -------------------------------------------------------> 高
byte,short,chat—>int—>long—float—>double (小数的优先级大于整数)
byte最大值127,把128给byte型变量,溢出了
byte -128到127 byte溢出
注意点:
1. 不能对布尔值进行转换
2. 能把对象类型转换为不相干的类型,(例如,人转换不了成猪,但男人可以变女人)
3. 在把高容量转换到低容量的时候,为强制转换
4. 换的时候可能存在内存溢出,或者精度问题!(小数的时候遇到)
public class Demo04 {
public static void main(String[] args){
int i =128;
byte b = (byte)i ; //内存溢出 //加了括号的,就是强制转换。
// 强制转换: (类型)变量名 高转到低
// 自动转换: 低---高
int e =128;
double f = i ;
System.out.println(i);
System.out.println(b);
System.out.println(e);;
System.out.println(f);
/*
注意点:
1. 不能对布尔值(boolean)进行转换
2. 不能把对象类型转换为不相干的类型,(例如人转换不了成猪,但男人可以变女人)
3. 在把高容量转换到低容量的时候,为强制转换
4. 转换的时候可能存在内存溢出,或者精度问题!(小数的时候遇到)
*/ // 多行注释
System.out.println("=================================="); // 分割线
System.out.println((int)23.7); // 23,小数强转为精度问题
System.out.println((int)-45.89f); //45,也是精度问题
System.out.println("=============================");
char c = 'a';
int d = c+1;
System.out.println(d); // 低———高 自动转换
System.out.println((char)d); // 高——低 强制转换
}
}
常见问题
public class Demo05 {
public static void main(String[] args){
// 操作比较大的数的时候,注意溢出问题
// JDK7新特性 ,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total1 = money*years; //-1474836480,计算是时候溢出了
long tota12 = money*years; // 默认是int,转换之前已经存在问题了?
long total3 = money*((long)years); //先把一个数转换为long
// 2个类型的数字相乘,结果肯定会按大的范围提升整体的数据类型,转换钱也没问题,和转化年份一样的~
// 这里是先结算,在转换,,,不是先转换,再自动哦。
System.out.println(total3);
}
}
结束