为什么默认是'int',而不是'byte'?
Why 'int' by default, but not 'byte'?
请解释一下,为什么,当我编写 4 个重载方法并调用它时 => 它默认选择 'int' 的方法,而不是 'byte',即 closer/better,因为它可以存储从 -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);
}
}
因为Java Language Specification是这么说的。
第 3.10.1. Integer Literals 节说:
An integer literal is of type long
if it is suffixed with an ASCII letter L
or l
(ell); otherwise it is of type int
(§4.2.1).
所以你的数字文字 10
的类型是 int
。
这是因为数字字面量的默认类型是整型。要指定长文字,您应该在末尾添加 L。要指定字节文字 - 您应该转换值
请解释一下,为什么,当我编写 4 个重载方法并调用它时 => 它默认选择 'int' 的方法,而不是 'byte',即 closer/better,因为它可以存储从 -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);
}
}
因为Java Language Specification是这么说的。
第 3.10.1. Integer Literals 节说:
An integer literal is of type
long
if it is suffixed with an ASCII letterL
orl
(ell); otherwise it is of typeint
(§4.2.1).
所以你的数字文字 10
的类型是 int
。
这是因为数字字面量的默认类型是整型。要指定长文字,您应该在末尾添加 L。要指定字节文字 - 您应该转换值