簡體   English   中英

java中的字符串打印引用

[英]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() 換句話說,數組類型繼承了ObjecttoString()實現

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM