CodeGym /Java Blog /Toto sisi /Java 中的字符串連接
John Squirrels
等級 41
San Francisco

Java 中的字符串連接

在 Toto sisi 群組發布
Java 字符串連接是連接兩個或多個字符串並返回一個新字符串的操作。此外,連接操作可用於將類型轉換為字符串。您可以通過兩種不同的方式在 Java 中連接字符串。

concat() 方法

Concat()方法將指定的字符串追加到給定字符串的末尾,然後返回,然後返回一個新形成的字符串。當然我們可以使用concat()方法連接三個或更多字符串。

concat() 方法簽名


public String concat(String str)
該方法將字符串 str 連接到當前字符串的末尾。例如:

String s1 = “Hello ”; 
s1.concat("World")
返回一個新字符串“Hello World”。

Concat() 方法示例

讓我們在初始化後連接兩個字符串,然後連接更多字符串。還有一個更有趣的例子:我們將創建一個根據參數返回不同消息的方法。

public class ConcatTest {

    public static void main(String[] args) {
        //String concat with concat() method 
        String string1 = "I learn ";
        String string2 = "concatenation in Java";
        //here we use concat() method to join the two strings above
        String result = string1.concat(string2);
        System.out.println(result);
        //concat() method to join 4 strings
        String myWebSite = "Code".concat("Gym").concat(".cc").concat("/quest");
        System.out.println(myWebSite); // here we've got  "CodeGym.cc/quest"

        System.out.println(myMessage(true));
        System.out.println(myMessage(false));
    }

    private static String myMessage(boolean b) {   //concat() method with selection statement 
        return "I have".concat(b ? " " : "n't ").concat("got it");
    }

}
輸出是:
我在 Java CodeGym.cc/quest 中學習連接 我知道了 我還沒有
重要的是要知道concat()方法不會更改字符串,而是通過合併當前字符串和作為參數傳遞的字符串來創建一個新字符串。所以該方法返回一個新的String對象,這就是為什麼你可以創建這麼長的 String concat 鏈。

使用重載運算符“+”和“+=”連接

您可以像處理數字一樣使用這兩個運算符。它們的工作方式與concat()一樣。讓我們連接字符串“Code”和字符串“Gym”。

public class StringConcat {
   public static void main(String[] args) {

       String myString = "Code" + "Gym";
       myString+= ".cc";
       System.out.println(myString);
   }
}
通常 Java 不允許對用戶類進行重載操作,但這兩個操作符作為重載工作。你可能認為 +運算符內部隱藏了concat(),但實際上,這裡使用了另一種機制。如果我們查看 Java 程序字節碼,我們會看到創建了StringBuilder並使用了它的append()方法。Java 編譯器看到“+”運算符並意識到操作數是字符串,而不是原始類型。所以它像 concat 一樣工作。

public class StringTest2 {

   public static void main(String[] args) {

       String hello = "hello";
       String world = " world!";

       String helloworld = (new StringBuilder().append(hello).append(world).toString());
       System.out.println(helloworld);
       //this is the same as:
       String result = hello + world;
   }
}

連接(0)或+?

如果您只需要合併一次字符串,請使用concat()方法。對於所有其他情況,最好使用+Stringbuffer / StringBuilder運算符。此外,+運算符用於轉換類型。如果其中一個操作數相等,例如,數字和第二個是字符串,那麼在出口處我們將得到一個字符串。例子:

public class StringConcat {
   public static void main(String[] args) {
       int myInt = 5;
       String myString = " days";

       System.out.println(myInt + myString);
       boolean b = (myInt + myString) instanceof String;
       System.out.println(b);
   }
}
我們使用instanceof來檢查(myInt + myString)是否是一個字符串。這是該程序的輸出:
5天真實
另請注意,如果其中一個字符串為空,則+運算符和concat() 的工作方式不同。如果在使用++=運算符時其中一個操作數只有一個——字符串,那麼,正如我們已經說過的,類型轉換就會發生。這同樣適用於 null。我們將得到一個新字符串:

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString + null);
       System.out.println((myString + null) instanceof String);
   }
}
輸出是:
預訂無效
如果我們對相同的操作應用concat()方法,那麼我們將得到一個NullPointerException

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString.concat(null));

   }
}
輸出是:
StringConcat.main(StringConcat.java:6) 處的 java.base/java.lang.String.concat(String.java:1972) 線程“main”java.lang.NullPointerException 中的異常
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION