请向我解释一下,为什么,当我编写4个重载方法并调用它时,它会选择默认值为'int'而不是'byte'的方法,因为它可以存储-127,到128?
class Main {
public static void method(short s) {
System.out.println("short");
}
public static void method(byte b) {
System.out.println("byte");
}
public static void method(int i) {
System.out.println("int");
}
public static void method(long l) {
System.out.println("long");
}
public static void main(String[] args) {
// put your code here
method(10);
}
}
答案 0 :(得分:6)
因为Java Language Specification是这样。
整数文字,如果其后缀为ASCII字母
long
或L
(ell),则类型为l
;否则,它的类型为int
(§4.2.1)。
因此,数字文字10
的类型为int
。
答案 1 :(得分:0)
这是因为数字文字的默认类型是整数。要指定长字面量,应在末尾添加L。要指定字节文字-您应强制转换值