在将数字作为方法参数传递时,该数字将解析为哪种数据类型?

时间:2018-10-05 08:06:43

标签: java overloading

public static void main(String[] args) {
    methodA(5);
}

public static void methodA(int i) {
    System.out.println("int method " + i);
}

public static void methodA(short s) {
    System.out.println("short method " + s);
}

上述java程序的输出为

  

int方法5

因此,当将5作为参数传递时,为什么要调用具有int参数的方法而不是short。

将参数转换为short后,将调用带有short参数的方法。

methodA((short)5);

当我通过5时,为什么java会将其视为int,而我必须简短地将其强制转换?考虑到短数据类型,数字范围是-32,768到32767。

3 个答案:

答案 0 :(得分:3)

5int文字,因此它是int,而不是short

答案 1 :(得分:0)

因为默认情况下,这是Java的工作方式,当您传递原始数据时,它总是将其视为int;如果为原始字符串,则将其视为String(例如,““”)。因此,默认情况下,它将使用int值作为输入来调用该方法。

这就是为什么在传递原始数据之前应始终将原始数据分配给它们的原因,这样就不会造成混淆。

答案 2 :(得分:0)

Integer或Integer常量的默认大小为4字节,而short为2字节。 您可以执行以下操作。

      long t = 5;

因为扩大基元转换不会丢失信息。

对于以下内容,您需要强制转换,因为缩小原始转换会丢失信息和幅度。编译器请确保您是故意这样做的。

     short t = (short)5;