Java 中,执行test()函数后,屏幕打印结果为__?

class test  
{
    public static void main (String[] args) 
    {
        test();
    }

    public static void add(Byte b){
        b=++b;

    }

    public static void test(){
        Byte a=127;
         Byte b=127;
        add(++a);
        System.out.print(a+" ");
        add(b); 
        System.out.print(b+" ");
    }
}
1183 次浏览
  • A、127 127
  • B、128 127
  • C、129 128
  • D、以上都不对
public void add(Byte b){ b=b++; } 这里考查的是java的自动装箱/自动拆箱。 值得注意的是Byte的首字母为大写,是类,看似是引用传递,但是在add函数内实现++操作,java会自动拆箱成byte值传递类型,所以add函数中形式参数的改变并不会影响实际参数,也就是说add函数对test()函数中的值没有影响。 byte是8位有符号数,第一位是符号位,在java中采取的是补码的形式来表示。add(++a),这里++a会越界,a的值由01111111变为10000000即-128;add(b),b不会发生变化,仍为127。 最后的输出是:-128 127。
挑战成功
2年前
挑战失败
2年前
挑战成功
2年前
挑战失败
2年前
挑战失败
2年前
挑战失败
2年前
挑战成功
4年前
挑战失败
4年前
挑战失败
4年前
挑战失败
4年前