为什么使用int参数的方法考虑数值?

时间:2011-06-05 09:33:26

标签: java

class Test {
  void m1(byte b) {
    System.out.print("byte");
  }

  void m1(short s) {
     System.out.print("short");
  }

  void m1(int i) {
     System.out.print("int");
  }

  void m1(long l) {
     System.out.print("long");
  }

  public static void main(String [] args) {
    Test test = new Test();
    test.m1(2);
  }
}

输出为:int。为什么jvm会考虑使用int参数的方法?

2 个答案:

答案 0 :(得分:9)

因为整数文字在Java中的类型为int。如果你想打电话给其他人,你需要一个明确的演员表。 (如果要调用L版本,请添加long后缀。)

有关详细信息,请参阅JLS Lexical Structure§3.10.1整数文字

答案 1 :(得分:4)

Data       Type          Default Value (for fields)
byte        0
short       0
int         0
long        0L
float       0.0f
double      0.0d
char       '\u0000'
String (or any object)      null
boolean false

因此,您需要明确地将数字作为参数提供给您想要的适当基元类型

如果您尝试提供

 public static void main(String [] args) {
    Test test = new Test();
    test.m1(2L);
  }

输出将为long

如果是shortbyte(隐式为int),则需要对该类型进行强制转换

public static void main(String [] args) {
        Test test = new Test();
        test.m1((short)2);
      }

参考:Primitive Data Types in Java