AFAIK当Java自动将原始类型转换为包装类对象时,它称为自动装箱,因为原始类型被装箱到包装类中。
也是
int test = 3;
String str = String.valueOf(test);
算作自动装箱吗?
问的理由?
我最近遇到了这个问题。我认为这是在 java 5 中引入的自动装箱(Java 4 中不存在)的原因。
AFAIK当Java自动将原始类型转换为包装类对象时,它称为自动装箱,因为原始类型被装箱到包装类中。
也是
int test = 3;
String str = String.valueOf(test);
算作自动装箱吗?
问的理由?
我最近遇到了这个问题。我认为这是在 java 5 中引入的自动装箱(Java 4 中不存在)的原因。
不,自动装箱仅适用于基元 -> 包装器。由于没有 String 原语(或包装器),因此 String 与自动装箱无关。
仅当引用类型和原语之间存在“阻抗不匹配”时才自动装箱
No.
如果我们看一下带有参数 的valueOf
方法 的源代码 int
public static String More ...valueOf(int i) {
return Integer.toString(i, 10);
}
调用 ToStringInteger wrapper
在整数包装器中创建一个新字符串 toString()
public static String More ...toString(int i, int radix) {
if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
radix = 10;
/* Use the faster version */
if (radix == 10) {
return toString(i);
}
char buf[] = new char[33];
boolean negative = (i < 0);
int charPos = 32;
if (!negative) {
i = -i;
}
while (i <= -radix) {
buf[charPos--] = digits[-(i % radix)];
i = i / radix;
}
buf[charPos] = digits[-i];
if (negative) {
buf[--charPos] = '-';
}
return new String(buf, charPos, (33 - charPos));
}
自动装箱是将原语自动转换为其相应的包装器。Whileint
是原语,String
不是包装器。
根据http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html自动装箱是 Java 编译器在原始类型及其相应的对象包装类之间进行的自动转换,String 不是对象包装班级。
不,这不会被视为自动装箱。自动装箱介于原始和包装类之间。请参考:http ://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
从文档:
将原始值(例如 int)转换为相应包装类(Integer)的对象称为自动装箱。Java 编译器在原始值是以下情况时应用自动装箱:
不,这不是自动装箱。
我认为的原因是在 java 5 中引入的自动装箱(Java 4 中不存在)。
你的逻辑有问题。
String.valueOf(int)
您链接到的问题是关于Java 1.4.x 和 Java 1.5 之间的更改行为。Java 1.5 中还添加了自动装箱功能。然而,推断这两件事有任何联系是不合逻辑的。
此外,这不是字符串实习的示例。 String.valueOf(int)
在 Java 1.5 或 Java 1.4.x 中都没有实习过 String。(在 Java 1.4.x 的情况下,对于某些输入,该方法确实返回了之前被实习过的字符串,但这只是因为它们是字符串文字。)