[java] byte b; b = 3 + 4; 为什么这样会是对的呢?
byteb1=3,b2=4,b;b1=b1+b2;//这句会报错,因为在java里面b1+b2的结果是int类型可是为什么b=3+4;又是对的呢?明显3+4后是int类型...
byte b1 = 3, b2 = 4, b;
b1 = b1 + b2; //这句会报错,因为在java里面b1+b2的结果是int类型
可是为什么 b = 3 + 4;又是对的呢?明显3+4后是int类型,把int类型赋值给byte类型,应该是错的啊。为什么编译器却通过了? 展开
b1 = b1 + b2; //这句会报错,因为在java里面b1+b2的结果是int类型
可是为什么 b = 3 + 4;又是对的呢?明显3+4后是int类型,把int类型赋值给byte类型,应该是错的啊。为什么编译器却通过了? 展开
展开全部
一下只是猜测,没去自习查找相关资料,仅供参考。
byte + byte 会默认类型转换成: int + int 。然后得到的结果当然是int类型了。 应为java默认运行最大效率的数字类型是int ,其他类型的运算好像都没这个快,所以默认被转换成了int。
3 + 4 先会被计算成 7 ,再转换成对应的 byte类型。此处也是效率问题,3、4先转换成byte的效率低于直接相加再修改成对应类型。
顺便说下java效率小知识:
String a = "a" + "b";
并不会创建出3个 String ,此处的"a" + "b" 并不是先转换成String 然后相加。而是为了效率,先“字符串”相加,然后被格式化成String 类型。
所以这里java 只创建了等号左右两个String,无形中效率变高了。
byte + byte 会默认类型转换成: int + int 。然后得到的结果当然是int类型了。 应为java默认运行最大效率的数字类型是int ,其他类型的运算好像都没这个快,所以默认被转换成了int。
3 + 4 先会被计算成 7 ,再转换成对应的 byte类型。此处也是效率问题,3、4先转换成byte的效率低于直接相加再修改成对应类型。
顺便说下java效率小知识:
String a = "a" + "b";
并不会创建出3个 String ,此处的"a" + "b" 并不是先转换成String 然后相加。而是为了效率,先“字符串”相加,然后被格式化成String 类型。
所以这里java 只创建了等号左右两个String,无形中效率变高了。
展开全部
就好像你的b1=3为什么不报错呢?3也是个int数啊.所以b=3+4并没有问题,你把数字去相加,它会把结果转换成byte存储.但是b1=b1+b2就不行,因为这个进行运算会强制转换为int类型的结果.
解决方法是把b1=b1+b2换成b1+=b2.使用+=就会保证类型不改变.
解决方法是把b1=b1+b2换成b1+=b2.使用+=就会保证类型不改变.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你太细心了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询