CodeGym /Blog Java /rawak /Penggabungan Rentetan di Jawa
John Squirrels
Tahap
San Francisco

Penggabungan Rentetan di Jawa

Diterbitkan dalam kumpulan
Java String concatenation ialah operasi untuk menyertai dua atau lebih rentetan dan mengembalikan yang baru. Selain itu, operasi penggabungan boleh digunakan untuk menghantar jenis kepada rentetan. Anda boleh menggabungkan rentetan dalam Java dalam dua cara berbeza.

kaedah concat().

Kaedah Concat() menambahkan rentetan yang ditentukan pada penghujung rentetan yang diberikan dan kemudian kembali dan kemudian mengembalikan rentetan baharu yang terbentuk. Pasti kita boleh menggunakan kaedah concat() untuk menyertai tiga atau lebih rentetan.

Tandatangan kaedah concat().


public String concat(String str)
Kaedah ini menggabungkan str rentetan pada penghujung rentetan semasa. Sebagai contoh:

String s1 = “Hello ”; 
s1.concat("World")
mengembalikan rentetan baharu "Hello World".

Contoh kaedah Concat().

Mari kita sambungkan dua rentetan selepas pemulaannya, kemudian sambungkan lagi rentetan. Dan satu lagi contoh yang menarik: kita akan mencipta kaedah yang akan mengembalikan mesej yang berbeza mengikut hujah.

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

}
Outputnya ialah:
Saya belajar penggabungan dalam Java CodeGym.cc/quest Saya telah mendapatnya Saya tidak mendapatnya
Adalah penting untuk mengetahui bahawa kaedah concat() tidak mengubah rentetan, tetapi mencipta yang baharu hasil daripada menggabungkan yang semasa dan yang diluluskan sebagai parameter. Jadi kaedah itu mengembalikan objek String baharu , itulah sebabnya anda boleh mencipta rantaian String concat yang begitu panjang.

Penggabungan menggunakan pengendali terlampau beban "+" dan "+="

Anda boleh menggunakan kedua-dua operator ini dengan cara yang sama seperti nombor. Mereka berfungsi seperti concat() . Mari kita gabungkan rentetan “Kod” dan rentetan “Gym”.

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

       String myString = "Code" + "Gym";
       myString+= ".cc";
       System.out.println(myString);
   }
}
Biasanya Java tidak membenarkan operasi lebihan beban untuk kelas pengguna, tetapi kedua-dua pengendali ini berfungsi sebagai lebih muatan. Anda mungkin berfikir bahawa di dalam operator + menyembunyikan concat() , tetapi sebenarnya, mekanisme lain digunakan di sini. Jika kita melihat pada bytecode program Java, kita akan melihat bahawa StringBuilder telah dicipta dan kaedah append() digunakan. Java Compiler melihat pengendali "+" dan menyedari bahawa operan adalah rentetan, bukan jenis primitif. Jadi ia berfungsi seperti 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) atau + ?

Jika anda perlu menggabungkan rentetan sekali sahaja, gunakan kaedah concat() . Untuk semua kes lain, lebih baik menggunakan sama ada operator + atau Stringbuffer / StringBuilder . Selain itu, operator + digunakan untuk menukar jenis. Jika salah satu operan adalah sama, sebagai contoh, nombor dan yang kedua adalah rentetan, maka di pintu keluar kita akan mendapat rentetan. Contoh:

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);
   }
}
Kami menggunakan instanceof untuk menyemak sama ada (myInt + myString) String. Berikut adalah output program ini:
5 hari benar
Juga ambil perhatian bahawa operator + dan concat() berfungsi secara berbeza jika salah satu rentetan adalah nol. Jika salah satu operan semasa menggunakan operator + atau += hanyalah satu — rentetan, maka, seperti yang telah kami katakan, penukaran jenis berlaku. Perkara yang sama berlaku untuk null. Kami hanya akan mendapat rentetan baharu:

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

       String myString = "book ";
       System.out.println(myString + null);
       System.out.println((myString + null) instanceof String);
   }
}
Outputnya ialah:
buku null true
Jika kita menggunakan kaedah concat() untuk operasi yang sama, maka kita akan mendapat NullPointerException .

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

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

   }
}
Outputnya ialah:
Pengecualian dalam benang "utama" java.lang.NullPointerException di java.base/java.lang.String.concat(String.java:1972) di StringConcat.main(StringConcat.java:6)
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION