public class Tester {
public Tester(){
System.out.println("Hello");
}
public Tester(byte b){
System.out.println("byte");
}
public Tester(int i){
System.out.println("int");
}
public static void main(String[] args) {
Tester test=new Tester(12);
}
}
请告知为什么打印是int,我也尝试过其他整数,它们都打印为int,但是例如,1 2 3 4 5 6 7 ....这些数字也可以称为byte,对吧?那么为什么只调用int?
答案 0 :(得分:5)
默认情况下,它将接受为int,除非您将其强制转换为byte
如果你想得到字节,那么按照
进行操作Tester test=new Tester((byte)12);
输出字节
答案 1 :(得分:2)
"An integer literal is of type long if it ends with the letter L or l; otherwise it is of type int."
因此,您的12
是int
。
接着说:“可以从int文字创建整数类型byte,short,int和long的值。”例如:
byte b = 100;
short s = 10000;
但100
和10000
始终为int
。它们恰好与其他类型兼容。
答案 2 :(得分:1)
默认类型12
为int
,因此选择int
构造函数。
要调用byte
构造函数,需要使用显式强制转换。
但如果我删除:public Tester(int i){System.out.println(“int”); }, 它也不会打印字节,相反,它有一个错误
如果删除int
构造函数,那么编译器将无法找到任何合适的构造函数来调用,因此它将是错误的。