AFAIK当Java自动将原始类型转换为包装类对象而不是其调用的自动装箱时,因为原语被装入包装类。
所以
int test = 3;
String str = String.valueOf(test);
算作自动装箱?
要问的理由?
我最近遇到了this个问题。我认为是java 5中引入的自动装箱的原因(Java 4中没有)。
答案 0 :(得分:5)
没有。自动装箱仅适用于基元 - >包装。由于没有String原语(或包装器),String与自动装箱无关。
答案 1 :(得分:1)
仅当引用类型和基元之间存在“阻抗不匹配”时才会自动进行运行
No.
如果我们使用valueOf
param
int
方法的源代码
public static String More ...valueOf(int i) {
return Integer.toString(i, 10);
}
在Integer wrapper
在Integer包装器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));
}
答案 2 :(得分:1)
Autoboxing是将基元自动转换为相应的包装器。虽然int
是原始的,但String
不是是一个包装器。
答案 3 :(得分:1)
根据http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html,autoboxing是Java编译器在基元类型和它们对应的对象包装类之间进行的自动转换,String不是对象包装类。
答案 4 :(得分:0)
不,这不会被视为自动拳击。 Auto-Boxing介于原语和Wrapper类之间。 请参阅:http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
来自文档:
将原始值(例如int)转换为相应包装类(Integer)的对象称为autoboxing。 当原始值为:
时,Java编译器应用自动装箱答案 5 :(得分:0)
不,这不是自动装箱。
我认为是java 5中引入的自动装箱的原因(Java 4中没有)。
你的逻辑是错误的。
您链接的问题是关于{1.4}与Java 1.5之间的String.valueOf(int)
的更改行为。 Java 1.5中还添加了自动装箱。然而,推断这两件事情是否有任何关联是不合逻辑的。
此外,这不是String interning的示例。 String.valueOf(int)
没有在Java 1.5或Java 1.4.x中实现String。 (在Java 1.4.x的情况下,对于某些输入,该方法确实返回先前已被实例化的字符串,但这只是因为它们是字符串文字。)