A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐僧踏歌 中级黑马   /  2014-4-1 11:55  /  1156 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐僧踏歌 于 2014-4-2 13:17 编辑

public class  A{

        public static void main(String[] args) {
                byte a=2,b=4,c;          //谁能解释下,为什么byte改成int就不会出错?
                 c=a*b;
                System.out.print("2乘4等于"+c);

        }

}
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
        Type mismatch: cannot convert from int to byte

可以a,b,c声明的都是byte类型的啊

5 个回复

倒序浏览
在java中byte类型的数值在进行运算的时候,系统会自动转换为int类型,a,b,c为byte类型,而a*b却为int类型,
所以c=a*b,改为c=(byte)a*b,即可。
回复 使用道具 举报
变量在局部必须初始化,byte a=2,b=4,c=0;  
回复 使用道具 举报
ehuashao 发表于 2014-4-1 12:12
在java中byte类型的数值在进行运算的时候,系统会自动转换为int类型,a,b,c为byte类型,而a*b却为int类型 ...

不知道为什么,这样好像也是不行。
回复 使用道具 举报
唐僧踏歌 发表于 2014-4-1 12:16
不知道为什么,这样好像也是不行。

不好意思,刚上面写错了,是对a*b强转,不是对a强转,a*b的结果价格括号就好了。正确代码为c=(byte)(a*b);
回复 使用道具 举报
ehuashao 发表于 2014-4-1 12:21
不好意思,刚上面写错了,是对a*b强转,不是对a强转,a*b的结果价格括号就好了。正确代码为c=(byte)(a*b) ...

嗯,是对的,谢谢

刚百度了下,下面的说法,应该是正确。

使用2目运算符的运算中,低于int型的都会转成int运算
高于int型的会转成最高的那个类型运算
使用3目运算符时,相对低级的数值会提升

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马