gpt4 book ai didi

java - 自动装箱概念 SCJP

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:06 24 4
gpt4 key购买 nike

这个问题是由考试实验室操纵的

public class B{

public static void main(String args[]){
byte g =10;
Byte x = new Byte(g);
B p= new B();
p.doStuff(x);
p.doStuff(g);
}
void dostuff(Number y){
System.out.println("C");
}
void doStuff(short t){
System.out.println("X");}

}

输出:XC

在上面的程序中,我不明白为什么它给出“C”作为输出?

它给出 X,因为 Byte--> byte-->short;

但在 的情况下,字节 g=10;它应该再次通过相同的方法并给出“X”作为输出。

public class B{

public static void main(String args[]){
byte b1=12;
Byte B1=new Byte(b1);

capture(b1);
capture(B1);

}

static void capture(short x){
System.out.print("A");
}


static void capture(Number x){
System.out.print("G");
}
}

输出:AG

在这里,我也明白为什么它是 A ,因为 Short 比 byte 大,所以它给出 A

但是,对于其他输出,它应该再次是 A ,因为 B1 是字节 ---> 字节(自动装箱) ---> 通过短(加宽)。为什么是G?

最佳答案

不要认为这是理所当然的,但我认为这是因为字节是数字,所以如果它选择该版本,则不必执行任何自动装箱。而且,如果它仍然选择另一个,则根本无法调用 Number 版本。因此,让此类调用调用 Number 版本更有意义,这正是 java 所做的。

关于java - 自动装箱概念 SCJP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com