黑马程序员—Java基础学习笔记之数据类型转换(自动转换和强制转换)

本文详细解析了Java中数据类型转换的过程,特别是从低位到高位的自动类型提升及高位到低位时可能出现的精度损失问题,并通过实例展示了如何使用强制类型转换来解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-----------android培训java培训java学习型技术博客、期待与您交流!-----------

/*数据类型转换*/
class Demo 
{
	public static void main(String[] args) 
	{
		byte b=3;
		b=b+2;
		System.out.println("b");
	
	}
}

结果报错:损失精度,分析如下:

1st.byte b=3 ——>3int型,但系统会先判断3是不是在byte范围内(-128~127),在,所以int型的3可以放进byte类型的b中去,此条代码也就是初始化

2ndb=b+2——> bbyte型,2int型,两者类型不同,一个占18位,另一个占48位,需要系统自动类型提升,最终结果为int型,占48位,而bbyte型,占18位,所以报错提示有损精度

3rd.在此就需要“强制转换”,——>b=byte)(b+2)强制转换为byte类型再赋进b

下面是正确的强制转换例子

class Demo1 
{
	public static void main(String[] args) 
	{
		//byte b=129; //编译错误,因为129超过byte取值范围 -128~127 
		byte b=(byte)129;//强制类型转换
		System.out.println(b);//保留后8位 10000001 01111111=-127
	}
}

其中具体转换过程分析如下:

其最高位为1,即表示负数,在java中数据表现形式是三种即十进制,八进制,十六进制,在此需要将其转换为相应十进制,遵从负数二进制转换算法:取反,再加1,得出最终结果-127

注意:数据类型转换时,低位转高位——>数据类型提升;

高位转低位——>首先判断是否超过低位的取值范围,再做相应转换

-----------android培训java培训java学习型技术博客、期待与您交流!-----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值