AFAIK当Java自动将基元类型转换为包装类对象而不是称为自动装箱时,因为原语被装箱到包装类中。是否将int转换为一个计为Autoboxing的字符串?
所以是
int test = 3;
String str = String.valueOf(test);
算作自动装箱?
请问的理由?
我最近遇到了this的问题。我认为这是java 5中引入的自动装箱的原因(不存在于Java 4中)。
AFAIK当Java自动将基元类型转换为包装类对象而不是称为自动装箱时,因为原语被装箱到包装类中。是否将int转换为一个计为Autoboxing的字符串?
所以是
int test = 3;
String str = String.valueOf(test);
算作自动装箱?
请问的理由?
我最近遇到了this的问题。我认为这是java 5中引入的自动装箱的原因(不存在于Java 4中)。
编号自动装箱只适用于原语 - >包装。由于没有String原语(或包装),String与自动装箱无关。
Autoboxes只有当“阻抗不匹配”引用类型和原始类型
No.
如果我们看一下valueOf
方法的源代码int
PARAM
public static String More ...valueOf(int i) {
return Integer.toString(i, 10);
}
上Integer wrapper
调用toString之间
在Integer 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));
}
Autoboxing是原语自动转换为相应的包装。虽然int
是原语,String
是而不是包装。
根据http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html autoboxing是Java编译器在基本类型和它们相应的对象包装类之间进行的自动转换,String不是对象包装类。
不,这不会被视为自动拳击。自动拳击是在原始和那里包装类之间。 请参考:http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
从文档:
转换一个原始值(一个int,例如)插入到相应的包装类(整数)的对象被称为自动装箱。
不,这不是自动装箱。
我认为是Java 5中引入的自动装箱的原因(Java 4中不存在)。
您的逻辑有问题。
您链接到的问题是关于在Java 1.4.x和Java 1.5之间更改String.valueOf(int)
的行为。 Java 1.5中也添加了自动装箱功能。然而,推断这两件事是以任何方式连接是不合逻辑的。
另外,这不是String实习的例子。 String.valueOf(int)
没有在Java 1.5或Java 1.4.x中实习字符串。 (在Java 1.4.x的情况下,对于一些输入,该方法确实返回了以前被实施的字符串,但那只是因为它们是字符串文字。)