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的情況下,對於一些輸入,該方法確實返回了以前被實施的字符串,但那只是因爲它們是字符串文字。)