如下代码,执行test()函数后,屏幕打印结果为

public class Test2
{
    public void add(Byte b)
    {
        b = b++;
    }
    public void test()
    {
        Byte a = 127;
        Byte b = 127;
        add(++a);
        System.out.print(a + " ");
        add(b);
        System.out.print(b + "");
    }
}

        A:127 127

        B:128 127

        C:129 128

        D:以上都不对

        这道题我是栽了跟头了的,还栽了两次,第一次选的 C,第二次选的 B,都错了,那这个时候是不是有人就可能要说,那这题是不是要选 A 啊,我说这题你要是选 A 的话你就有点过分了啊小老弟,我在做这道题的时候最先也是最有把握排除的就是 A 选项,至于为什么,你只要 “++a” 是个什么意思你绝对不会选它的。

        我当时第一次为什么选 C 呢,是因为 Byte 是个引用类型,所以我当时想的是add方法传的是引用类型(也就是俗称的引用传递,注意java是没有引用传递的,只有值传递,这里的引用传递其实最终传的就是引用的内存地址值)。在add方法里面的操作会影响到a、b的值,因此我才选的 C。

        然后第二次我学聪明了,我知道Byte类型在执行 “++” 运算时会自动拆箱,因此这里的add方法是值传递。在add方法里面的操作不会影响到a、b的值,当然了, 这个 “++a”,还是会影响的,所以我满怀信心的选了 B,我心想这次还能错,我就不行了,难道还能选 D 不成,结果一看,好嘛,我又错了,唉,人生就是这样,处处充满惊喜,脸也被打的啪啪响。

        至于为什么这题选 D 呢。其实我在选 B 时的思路是对的,就是漏了一点,Byte类型值大小为-128~127之间。add(++a);这里++a会越界,a的值变为-128,所以最后答案输出为:

-128  127 。因此这题选 D ,下面附个答案截图:

        

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值