黑马程序员技术交流社区

标题: 编译出错,类型转换细节 [打印本页]

作者: 朱东方    时间: 2012-7-6 22:00
标题: 编译出错,类型转换细节
本帖最后由 朱东方 于 2012-7-7 00:23 编辑

class  Demo
{
public static void main(String[] args)
{
  byte b1 = 3 , b2 = 4,b;
  b = b1 + b2;
  System.out.println(b);
  
}
}
编译出错了,说什么精度损失了。
b=b1+b2不就是b=3+4吗。
我记得byte的范围是-128~127,这样连个7都存不了吗。

捕获.GIF (2.62 KB, 下载次数: 36)

编译出错

编译出错

作者: 邵阳    时间: 2012-7-6 22:02
本帖最后由 邵阳 于 2012-7-6 22:14 编辑

class  Demo
{
public static void main(String[] args)
{
  byte b1 = 3 , b2 = 4,b;
  b = b1 + b2;             //这里b1+b2得到的结果被自动提升啦,因为java默认的是int类型,所以提升为了int类型。
  System.out.println(b);
  
}
}
//而此时b是byt类型,所以会报错。楼主可以修改代码,把int类型数据强制转化成byte类型。
class  Demo
{
public static void main(String[] args)
{
  byte b1 = 3 , b2 = 4,b;
  b = (byte)(b1 + b2);
  System.out.println(b);
  
}
}



作者: 朱东方    时间: 2012-7-6 22:03
这是什么意思
作者: 李志群    时间: 2012-7-6 22:26
class VarDemo3
{
        public static void main(String[] args)
        {
                byte b1 = 3;
                byte b2 = 4;

                byte b;

                b=(byte)(b1+b2);//强制转换b1 和b2 运用的强制类型转换       
               

//b = b1+b2; (这个b1 b2不确定是不是在byte范围之内)
                //b = 3+4;(这个可以的话 证明 3和4 都在byte范围之内 所以就不会报错。)
                System.out.println("b="+b);
        }
}
作者: 李志群    时间: 2012-7-6 22:27
这个毕老师讲过的 !!
作者: 游兴钟    时间: 2012-7-6 22:27
b1和b2作为变量来说可以赋予任意值 也就是说它们相加的结果又可能超出byte的范围,这样是无法通过编译器检查的
所以要想不报错必须加强转b =(byte)(b1 + b2)

作者: 朱东方    时间: 2012-7-6 22:39
李志群 发表于 2012-7-6 22:26
class VarDemo3
{
        public static void main(String[] args)

b1,b2的值不是确定了吗。b1=3,b2=4
作者: 李志群    时间: 2012-7-6 23:00
朱东方 发表于 2012-7-6 22:39
b1,b2的值不是确定了吗。b1=3,b2=4

老师都不给分的 唉 哭死啊 呵呵 你QQ多少‘?我给你我的笔记 243327664我的

b= b1+b2
你虽然给他确定了 byte, b1=3 b2=4 但是在 你想加后得到的结果 b 他会自动提升类型 转成int哦
在java里面 系统默认的 只有boolean 和 int类型两种,所以会有损失精度的错误哦呵呵
作者: 陈冲    时间: 2012-7-6 23:59
毕老师的视频里讲了
  1. class  Demo
  2. {
  3. public static void main(String[] args)
  4. {
  5.   byte b1 = 3 , b2 = 4,b;
  6.   b = b1 + b2; //b1,b2是变量,不能确定是什么值,可能超出byte的取值范围,而b正是byte型变量
  7.   System.out.println(b);
  8.   
  9. }
  10. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2