CodeGym /จาวาบล็อก /สุ่ม /การต่อสตริงใน Java
John Squirrels
ระดับ
San Francisco

การต่อสตริงใน Java

เผยแพร่ในกลุ่ม
การต่อสตริง 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 bytecode เราจะเห็นว่ามีการสร้างStringBuilder และ ใช้วิธีappend() Java Compiler เห็นตัวดำเนินการ "+" และตระหนักว่าตัวถูกดำเนินการเป็นสตริง ไม่ใช่ประเภทดั้งเดิม ดังนั้นมันจึงทำงานเหมือน 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) หรือ + ?

หากคุณต้องการรวมสตริงเพียงครั้งเดียว ให้ใช้เมธอด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);
   }
}
เราใช้อินสแตนซ์เพื่อตรวจสอบว่า(myInt + myString)เป็นสตริงหรือไม่ นี่คือผลลัพธ์ของโปรแกรมนี้:
5วันจริง
โปรดทราบว่า ตัวดำเนินการ +และconcat()ทำงานต่างกันหากสตริงใดสตริงหนึ่งเป็นค่าว่าง หากหนึ่งในตัวถูกดำเนินการเมื่อใช้ ตัวดำเนินการ +หรือ+=เป็นเพียงหนึ่งตัว — สตริง ดังที่เราได้กล่าวไปแล้ว การแปลงประเภทจะเกิดขึ้น เช่นเดียวกับค่าว่าง เราเพิ่งจะได้รับสตริงใหม่:

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

       String myString = "book ";
       System.out.println(myString + null);
       System.out.println((myString + null) instanceof String);
   }
}
ผลลัพธ์คือ:
จอง null จริง
หากเราใช้ เมธอด concat() ในการ ดำเนิน การเดียวกัน เราจะได้NullPointerException

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

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

   }
}
ผลลัพธ์คือ:
ข้อยกเว้นในเธรด "main" java.lang.NullPointerException ที่ java.base/java.lang.String.concat(String.java:1972) ที่ StringConcat.main(StringConcat.java:6)
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION