在Java中装入基元时,会调用包装器类上的哪个方法

Sti*_*cke 4 java

Integer当你这样做时,将使用该类中的哪个方法Integer i = 1;

我很确定它不是构造函数,它可能是valueOf()方法.

Pet*_*rey 6

Integer.valueOf(int)同样适用于布尔,字节,字符,长整数,浮点数和双精度数.

注意:对于布尔值和字节,将缓存所有可能的值.对于Character,将缓存值0到127.对于Short和Long值,缓存-128到127.对于Integer -128到127默认是缓存的,但是使用多个选项可以增加最大值.

这可能导致令人惊讶的行为

System.out.println((Integer) (int) -128 == (Integer) (int) -128);
System.out.println((Integer) (int) -129 == (Integer) (int) -129);
Run Code Online (Sandbox Code Playgroud)

版画

true
false
Run Code Online (Sandbox Code Playgroud)

不确定在Java 7中编译需要-128使用什么来(int) -128进行编译.


Tar*_*log 6

是的,它的价值如下:

这是javap的输出:

public static void main(java.lang.String[]);
  Code:
   Stack=1, Locals=2, Args_size=1
   0:   iconst_1
   1:   invokestatic    #16; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
   4:   astore_1
   5:   return
  LineNumberTable:
   line 5: 0
   line 6: 5
Run Code Online (Sandbox Code Playgroud)