类型转换
类型转换
整型类型
类型自动提升
如果参与运算的两个数类型不一致,那么计算结果为较大类型的整型。
public class Main {
public static void main(String[] args) {
short s = 1234;
int i = 123456;
int x = s + i; // short自动转型为int
short y = s + i; // 编译错误!
}
}
强制转换类型
将大范围的整型转换为小范围的整型。
public class Main {
public static void main(String[] args) {
int i1 = 1234567;
short s1 = (short) i1; // -10617
System.out.println(s1);
int i2 = 12345678;
short s2 = (short) i2; // 24910
System.out.println(s2);
}
}
- 转型后超出范围的会被舍去,所以强制转换的结果可能会是错误的。
浮点数
溢出
整数运算在除数为0时会报错,而浮点数运算在除数为0时,不会报错,但会返回几个特殊值:
- NaN表示Not a Number
- Infinity表示无穷大
- -Infinity表示负无穷大
类型提升
运算中其中一个数是整型,那么整型可以自动提升到浮点型
public class Main {
public static void main(String[] args) {
int n = 5;
double d = 1.2 + 24.0 / n; // 6.0
System.out.println(d);
}
}
-
在复杂的四则运算中,两个整数的运算不会出现自动提升
double d = 1.2 + 24 / 5; // 5.2 24/5=4
强制转型
将浮点数转型为整型时,小数部分会被丢掉。
int n1 = (int) 12.3; // 12
int n2 = (int) 12.7; // 12
int n2 = (int) -12.7; // -12
int n3 = (int) (12.7 + 0.5); // 13
int n4 = (int) 1.2e20; // 2147483647 如果转型后超过了整型能表示的最大范围,将返回整型的最大值
如果运算要四舍五入,对浮点数加上0.5在强制转型
public class Main {
public static void main(String[] args) {
double d = 2.6;
int n = (int) (d + 0.5);
System.out.println(n);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端