我们先来看这样一段代码:
public class MyClass {
MyClass(double i){
System.out.println("Double_constructor is called.");
}
MyClass(float i){
System.out.println("Float_constructor is called.");
}
public static void main(String[] args){
MyClass mc=new MyClass(3.5);
}
}
你知道运行结果是什么吗?
相信很多初学者都是不能够第一时间回答出来,但是如果对于JVM熟悉的人,可能一下子就能看出。
浮点型的字面量会被JVM默认为double型数据。
所以运行结果是:Double_constructor is called.
类似的,再看这样一段代码:
public class MyClass2 {
MyClass2(byte i){
System.out.println("Byte_constructor is called.");
}
MyClass2(int i){
System.out.println("Int_constructor is called.");
}
MyClass2(short i){
System.out.println("Short_constructor is called.");
}
MyClass2(long i){
System.out.println("Long_constructor is called.");
}
public static void main(String[] args){
MyClass2 mc2=new MyClass2(3);
}
}
整数型的字面量会被JVM默认为int型数据。
所以运行结果是:Int_constructor is called.