`
modabobo
  • 浏览: 505888 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

-----------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学习型技术博客、期待与您交流!-----------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics