CodeGym /Java blog /Véletlen /Karakterlánc összefűzése Java nyelven
John Squirrels
Szint
San Francisco

Karakterlánc összefűzése Java nyelven

Megjelent a csoportban
A Java karakterlánc-összefűzés két vagy több karakterlánc összekapcsolására és egy új visszaadására szolgáló művelet. Ezenkívül az összefűzési művelet használható típusok karakterláncokba öntésére. A karakterláncokat Java nyelven kétféleképpen fűzheti össze.

concat() metódus

A Concat() metódus hozzáfűzi a megadott karakterláncot az adott karakterlánc végéhez, majd visszaadja, majd visszaadja a létrehozott új karakterláncot. Természetesen használhatjuk a concat() metódust három vagy több karakterlánc összekapcsolására.

A concat() metódus aláírása


public String concat(String str)
A metódus összefűzi az str karakterláncot az aktuális karakterlánc végén. Például:

String s1 = “Hello ”; 
s1.concat("World")
egy új „Hello World” karakterláncot ad vissza.

Példa a Concat() metódusra

Összefűzünk két karakterláncot inicializálásuk után, majd további karakterláncokat. És még egy érdekes példa: olyan metódust fogunk létrehozni, amely argumentum szerint különböző üzeneteket ad vissza.

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");
    }

}
A kimenet a következő:
Megtanultam az összefűzést a Java-ban CodeGym.cc/quest Megvan, nem értem
Fontos tudni, hogy a concat() metódus nem változtatja meg a karakterláncot, hanem egy újat hoz létre az aktuális és a paraméterként átadott egyesítés eredményeként. Tehát a metódus egy új String objektumot ad vissza, ezért lehet ilyen hosszú String concat láncokat létrehozni.

Összefűzés túlterhelt "+" és "+=" operátorokkal

Ezt a két operátort ugyanúgy használhatja, mint a számoknál. Ugyanúgy működnek, mint a concat() . Kössük össze a „Kód” és a „Gym” karakterláncot.

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

       String myString = "Code" + "Gym";
       myString+= ".cc";
       System.out.println(myString);
   }
}
Általában a Java nem teszi lehetővé a felhasználói osztályok túlterhelését, de ez a két operátor túlterheltként működik. Azt gondolhatnánk, hogy a + operátoron belül elrejti a concat() , de valójában itt egy másik mechanizmust használnak. Ha megnézzük a Java program bájtkódját, látni fogjuk, hogy a StringBuilder létrejött, és annak append() metódusát használták. A Java fordító látja a „+” operátort, és rájön, hogy az operandusok karakterláncok, nem primitív típusok. Tehát úgy működik, mint a 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;
   }
}

Concat(0) vagy +?

Ha csak egyszer kell egyesítenie a karakterláncokat, használja a concat() metódust. Minden más esetben jobb a + vagy a Stringbuffer / StringBuilder operátor használata. Ezenkívül a + operátor típusok konvertálására szolgál. Ha az egyik operandus egyenlő, például a szám, a második pedig egy karakterlánc, akkor a kilépésnél egy karakterláncot kapunk. Példa:

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);
   }
}
Az instanceof segítségével ellenőriztük, hogy (myInt + myString) van-e karakterlánc. Íme a program kimenete:
5 nap igaz
Azt is vegye figyelembe, hogy a + operátor és a concat() eltérően működik, ha az egyik karakterlánc null. Ha a + vagy += operátor használatakor az egyik operandus csak egy karakterlánc, akkor, mint már említettük, típuskonverzió történik. Ugyanez vonatkozik a nullára is. Csak kapunk egy új karakterláncot:

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

       String myString = "book ";
       System.out.println(myString + null);
       System.out.println((myString + null) instanceof String);
   }
}
A kimenet a következő:
könyv null igaz
Ha ugyanarra a műveletre a concat() metódust alkalmazzuk , akkor NullPointerExceptiont kapunk .

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

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

   }
}
A kimenet a következő:
Kivétel a "main" szálban java.lang.NullPointerException: java.base/java.lang.String.concat(String.java:1972) itt: StringConcat.main(StringConcat.java:6)
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION