类型转换问题一
public class Demo04 {
public static void main(String[] args) {
int num1 = 128; //类型转换格式:(类型)变量名
byte num2 = (byte)num1;//强制转换 高容量转低容量 可能出现丢失精度或内存溢出的问题
//自动转换 低转高
System.out.println(num1);
System.out.println(num2);//输出-128,内存溢出,进行循环
/*注意点
*不能对布尔值进行转换
*不能将对象类型转换为不相干的类型
*由高转低,强制转换
*强制转换可能出现丢失精度或内存溢出的问题
* */
System.out.println("=============================");
System.out.println((int)23.8);//输出23,丢失精度
System.out.println((int)-26.35);//输出-26,丢失精度
System.out.println("=============================");
char sa = 'a';
int sb = sa+1;
System.out.println(sa);//a
System.out.println((int)sa);//97
System.out.println(sb);//98
System.out.println((char)sb);//b
}
}
注意点:
public class Demo05 {
public static void main(String[] args) {
//操作较大的数时,注意溢出问题
int num = 10_0000_0000;//数字之间可以用下划线分割
int num1 = 20;
int sum = num*num1;//结果为-1474836480,爆掉了,也就是溢出
long sum1 = num*num1;//在这一步转换之前就已经出问题了,已经被默认为int
long sum2 = num*(long)num1;//先将一个数转换为long,结果正确
System.out.println(sum2);
}
}