您的位置:首页 > 职场人生

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

2014-03-11 13:33 861 查看
----------- 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
——>3是int型,但系统会先判断3是不是在byte范围内(-128~127),在,所以int型的3可以放进byte类型的b中去,此条代码也就是初始化
2nd        b=b+2——> b是byte型,2是int型,两者类型不同,一个占1个8位,另一个占4个8位,需要系统自动类型提升,最终结果为int型,占4个8位,而b是byte型,占1个8位,所以报错提示有损精度
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学习型技术博客、期待与您交流! -----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: