[英]string printing reference in java
我有這個代碼,我打印一個字符串變量。 第一個輸出顯示了預期的內容,但第二次顯示了一些不可讀的輸出(我認為它的引用ID)。 請解釋:為什么會這樣?
public class Str3 {
public String frontBack(String str) {
char c[] = str.toCharArray();
char temp = c[0];
c[0] = c[c.length - 1];
c[c.length - 1] = temp;
return c.toString();
}
public static void main(String args[]) {
Str3 s = new Str3();
String s1 = new String("boy");
System.out.println(s1);
String s2 = s.frontBack("boy");
System.out.println(s2);
}
}
輸出:
男孩
[C @ 60aeb0
frontToBack()方法在字符數組對象char[]
上調用toString()
,這就是為什么你看到[C@60aebo
。 而不是調用toString()
返回new String(c);
或String.valueOf(c)
Java中的數組類型不會覆蓋Object#toString()
。 換句話說,數組類型繼承了Object
的toString()
實現
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
這是你看到的輸出
[C@60aeb0
如果要查看數組內容的表示,請使用Arrays.toString(..)
。
在您的情況下,您似乎想要切換第一個和最后一個字符並返回相應的字符串。 在這種情況下,只需通過將char[]
傳遞給構造函數來創建一個新的String
實例。
您不需要實現自定義類來執行此操作。 該功能已經在java中。 這個問題已經得到解答@ 在Java中反轉一個字符串 (重復的線程)
使用新的String(c)到c.toString();
c.toString()c表示字符數組toString()打印哈希方法
public class Str3 {
public String frontBack(String str) {
char c[] = str.toCharArray();
char temp = c[0];
c[0] = c[c.length - 1];
c[c.length - 1] = temp;
return new String(c);
}
public static void main(String args[]) {
Str3 s = new Str3();
String s1 = new String("boy");
System.out.println(s1);
String s2 = s.frontBack("boy");
System.out.println(s2);
} }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.