类型转换
类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
容量的大小由低到高
低----------------------------------------------------------------->高
(byte,short,char )→ int → long → float → double
(小数的优先级大于整数,所以float只有32位却在64位的long后面)
运算中,不同类型的数据先转化为同一类型,然后进行运算。
强制类型转换
强制转换 :(打算转换成的数据类型)变量名 例如:
int i = 128;
byte b = (byte) i;
System.out.println(b);//-128
public class Demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte) i;
System.out.println(i); //128
System.out.println(b); //-128
System.out.println("==================分割线===================");
//可查看java.lang包下的Byte类的源码,可发现byte的取值范围为-128~127,
//故产生内存溢出,b取得-128的值,原因:在计算机内存存放的数值都是补码形式,第一位为符号位
//128的二进制是1000 0000,即128的源码为1000 0000,其为正数补码和源码相同,也是1000 0000
//负数的补码为:符号位不变,其余位取反后再加1,第一是为了能让计算机执行减法:[a-b]补=a补+(-b)补,第二个原因是为了统一正0和负0
//正零:00000000
//负零:10000000
//这两个数其实都是0,但他们的原码却有不同的表示。但是他们的补码是一样的,都是00000000
// 例如
int i2 = 129;
byte c = (byte) i2;
System.out.println(i2); //129 其补码为1000 0001
System.out.println(c); //-127 其二进制位111 1111,则源码为1111 1111,补码为1000 0001
// 而byte最多只占8位第一位为符号位0代表正,1代表负,根据规定1000 0000是-128的补码
}
}
强制类型转换适用于 优先级高(容量高)的数据类型转优先级低(容量低)的数据类型,即高→低
自动类型转换
自动转换用于由优先级低(容量低)的数据类型转优先级高(容量高)的数据类型,即低→高, 不需要任何操作,直接定义即可,例如
int i = 128;
double d = i; //自动转换 低->高
System.out.println(d); //128.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现