吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1095|回复: 8
收起左侧

[已解决] 请教a=a + (byte)3为什么会错?

[复制链接]
无闻无问 发表于 2022-6-22 09:15
本帖最后由 无闻无问 于 2022-6-22 09:42 编辑

import java.util.*;public class HelloWorld {
    public static void main(String[] args) {
        byte a=12;      
        //a=a + (byte)3; //报错
        a=(byte)(a+3); //没错
        a=(byte)3;    //没错
       System.out.println(a);
    }
}
为什么a=a + (byte)3中(byte)3会报错,而a=(byte)3又不错…跟栈临时变量有关?谢谢谢谢…

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

huanwuying 发表于 2022-6-22 09:21
byte做运算时(+ - * / %) ,得到的结果是int类型

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
无闻无问 + 3 + 1 热心回复!

查看全部评分

xieemengxin 发表于 2022-6-22 09:23
java的隐式转换   + - * %  都会隐式转换为int进行运算  a=(byte)(a+(byte)3);

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
无闻无问 + 1 + 1 热心回复!

查看全部评分

怜渠客 发表于 2022-6-22 09:28
对的,楼上两位说的对,要在运算后强转一次

免费评分

参与人数 1热心值 +1 收起 理由
无闻无问 + 1 热心回复!

查看全部评分

往事随风不苦涩 发表于 2022-6-22 09:33
a + (byte)3的时候,a和(byte)3都经历了一次隐式转换,转成了int,进行int相加,得到的结果是(int)15。然后a = (int)15,相当于把int类型的结果赋值给byte类型的a,这里报错。
冰糖心 发表于 2022-6-22 09:33
a + (byte)3会隐式转为int类型。byte, short, char 这些整数类型只要+ - * / % ,等式右边就会变为 int 类型.

免费评分

参与人数 1热心值 +1 收起 理由
无闻无问 + 1 热心回复!

查看全部评分

 楼主| 无闻无问 发表于 2022-6-22 09:33
huanwuying 发表于 2022-6-22 09:21
byte做运算时(+ - * / %) ,得到的结果是int类型

明白了,谢谢
 楼主| 无闻无问 发表于 2022-6-22 09:38
往事随风不苦涩 发表于 2022-6-22 09:33
a + (byte)3的时候,a和(byte)3都经历了一次隐式转换,转成了int,进行int相加,得到的结果是(int)15。然后 ...

感谢!没分了
泽樟 发表于 2022-6-22 14:29
应该是隐式转换为int计算了,初学我建议你打断点debug一下它的计算过程,会让你豁然开朗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表