JAVA基础
类型转换
低-------------------->高
byte,shor,char->int->long->float->double
注意:运算中,不同类型数据先转换为同一类型,在进行运算。
转换特性
- 强制转换:高转低–(内存溢出,精度损失)
- 自动转换:低转高
- 计算时,溢出问题,要在计算时就考虑强转。
public class ChangeType {
public static void main(String[] args) {
int i = 128;//128
byte b = (byte)i;//强转,内存溢出
//强转:高->低:(类型)变量名
//自转:低->高
System.out.println(i);//128
System.out.println(b);//内存溢出(值不确定)-128
double db = i;
System.out.println(db);//128.0 自转
/*
* 注意点:
* 1.不能对布尔类型进行转换
* 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);//98
System.out.println((char)d);//b
//操作比较大的数的时候,注意溢出
//JDK7新特性,数字之间可以用下划线分割
System.out.println("= = = = = = = = = = = =");
int money = 10_0000_0000;
int years = 20;
int total = money * years;
System.out.println(total);//-1474836480,溢出
long total2 = money * years;//计算完是int,此时已经溢出,再转也是错误的
System.out.println(total2);//-1474836480 默认int,转换之前已经存在问题
long total3 = money * (long)years;//计算为已转换为long.
System.out.println(total3);//20000000000
//L ,l 一般用L,方便区分字符l和数字1。
}
}
这篇博客探讨了Java中的类型转换,包括自动转换和强制转换。在运算过程中,不同类型的数值会转换为同一类型再进行计算。强制转换可能引发内存溢出或精度损失,如将int转换为byte可能导致溢出。示例代码展示了如何处理浮点数转换为整数时的舍入,以及字符与整数相加的转换。文章还提到了JDK7新特性,允许数字间使用下划线分隔,但未解决溢出问题。最后,代码示例演示了计算时可能出现的溢出错误,强调了转换和溢出检查的重要性。
128

被折叠的 条评论
为什么被折叠?



