JavaRush /จาวาบล็อก /Random-TH /คลาสสตริงใน Java

คลาสสตริงใน Java

เผยแพร่ในกลุ่ม
คลาสStringใน Java ได้รับการออกแบบมาเพื่อทำงานกับสตริงใน Java ตัวอักษรสตริงทั้งหมดที่กำหนดในโปรแกรม Java (เช่น "abc") เป็นอินสแตนซ์ของคลาส String ลองดูลักษณะสำคัญ:
  1. คลาสใช้SerializableและCharSequenceอินเตอร์เฟส เนื่องจากรวมอยู่ในแพ็คเกจjava.langจึงไม่จำเป็นต้องนำเข้า
  2. คลาสStringใน Java เป็น คลาส สุดท้ายและไม่สามารถมีลูกได้
  3. คลาส String เป็นคลาสที่ไม่เปลี่ยนรูป ซึ่งหมายความว่าอ็อบเจ็กต์ไม่สามารถเปลี่ยนแปลงได้หลังจากสร้างขึ้นแล้ว การดำเนินการใด ๆ บนวัตถุ String ที่จะส่งผลให้วัตถุของคลาส String จะส่งผลให้เกิดการสร้างวัตถุใหม่
  4. เนื่องจากความไม่เปลี่ยนรูป ออบเจ็กต์คลาส String จึงปลอดภัยสำหรับเธรด และสามารถใช้ได้ในสภาพแวดล้อมแบบมัลติเธรด
  5. ทุกอ็อบเจ็กต์ใน Java สามารถ แปลงเป็นสตริงผ่านวิธีการtoStringที่คลาส Java ทั้งหมดสืบทอดมาจากคลาสObject
คลาสสตริงใน Java - 1

การทำงานกับสตริง Java

นี่เป็นหนึ่งในคลาสที่ใช้บ่อยที่สุดใน Java โดยมีวิธีการวิเคราะห์อักขระบางตัวในสตริง การเปรียบเทียบและค้นหาสตริง การแยกสตริงย่อย การสร้างสำเนาของสตริงโดยแปลงอักขระทั้งหมดเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และอื่นๆ รายการวิธีการทั้งหมดของคลาส String สามารถพบได้ในเอกสารประกอบอย่างเป็นทางการ Java ยังใช้กลไกง่ายๆ สำหรับการต่อข้อมูล (การเชื่อมต่อสตริง) การแปลงค่าพื้นฐานเป็นสตริงและในทางกลับกัน มาดูตัวอย่างการทำงานกับคลาส String ใน Java กัน

การสร้างสตริง

วิธีที่ง่ายที่สุดในการสร้างอินสแตนซ์ของคลาส String คือการกำหนดค่าของสตริงตามตัวอักษร:
String s = "I love movies";
อย่างไรก็ตาม คลาส String มีConstructor มากมาย ที่ให้คุณ:
  • สร้างวัตถุที่มีสตริงว่าง
  • สร้างสำเนาของตัวแปรสตริง
  • สร้างสตริงตามอาร์เรย์อักขระ
  • สร้างสตริงตามอาร์เรย์ไบต์ (โดยคำนึงถึงการเข้ารหัสบัญชี)
  • ฯลฯ

การเพิ่มสตริง

การเพิ่มสองสตริงใน Java นั้นค่อนข้างง่ายโดยใช้นามสกุล+. Java อนุญาตให้คุณเพิ่มทั้งตัวแปรและตัวอักษรสตริงซึ่งกันและกัน:
public static void main(String[] args) {
    String day = "Day";
    String and = "And";
    String night = "Night";

    String dayAndNight = day + " " + and + " " + night;
}
โดยการเพิ่มอ็อบเจ็กต์ของคลาส String เข้ากับอ็อบเจ็กต์ของคลาสอื่น เราจะลดอันหลังเป็นรูปแบบสตริง การแปลงอ็อบเจ็กต์ของคลาสอื่นเป็นการแสดงสตริงจะดำเนินการผ่านการเรียกเมธอดโดยนัยtoStringบนอ็อบเจ็กต์ มาสาธิตสิ่งนี้ด้วยตัวอย่างต่อไปนี้:
public class StringExamples {
    public static void main(String[] args) {
        Human max = new Human("Max");
        String out = "java object: " + max;
        System.out.println(out);
        // Output: Java object: Person named Max
    }

    static class Human {
        private String name;

        public Human(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "The Man with the Name" + name;
        }
    }
}

การเปรียบเทียบสตริง

หากต้องการเปรียบเทียบสตริง คุณสามารถใช้วิธีequals():
public static void main(String[] args) {
    String x = "Test String";
    System.out.println("Test String".equals(x)); // true
}
เมื่อ case ไม่สำคัญสำหรับเราในการเปรียบเทียบ string เราจำเป็นต้องใช้เมธอดequalsIgnoreCase():
public static void main(String[] args) {
       String x = "Test String";
       System.out.println("test string".equalsIgnoreCase(x)); // true
}

การแปลงวัตถุ/ดั้งเดิมเป็นสตริง

หากต้องการแปลงอินสแตนซ์ของคลาส Java ใด ๆ หรือชนิดข้อมูลพื้นฐานใด ๆ ให้เป็นการแสดงสตริง คุณสามารถใช้วิธีการString.valueOf():
public class StringExamples {
    public static void main(String[] args) {
        String a = String.valueOf(1);
        String b = String.valueOf(12.0D);
        String c = String.valueOf(123.4F);
        String d = String.valueOf(123456L);
        String s = String.valueOf(true);
        String human = String.valueOf(new Human("Alex"));

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(s);
        System.out.println(human);
        /*
        Output:
        1
        12.0
        123.4
        123456
        true
        Person named Alex
         */
    }

    static class Human {
        private String name;

        public Human(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "The Man with the Name" + name;
        }
    }
}

การแปลงสตริงให้เป็นตัวเลข

บ่อยครั้งที่คุณต้องแปลงสตริงเป็นตัวเลข คลาส wrapper ประเภทดั้งเดิมมีวิธีการที่ตอบสนองวัตถุประสงค์นี้ทุกประการ วิธีการทั้งหมดนี้ขึ้นต้นด้วยคำว่า parse พิจารณาการแปลสตริงเป็นตัวเลขจำนวนเต็ม ( Integer) และเศษส่วน ( Double) ด้านล่าง:
public static void main(String[] args) {
    Integer i = Integer.parseInt("12");
    Double d = Double.parseDouble("12.65D");

    System.out.println(i); // 12
    System.out.println(d); // 12.65
}

การแปลงคอลเลกชันของสตริงเป็นตัวแทนสตริง

หากคุณต้องการแปลงองค์ประกอบทั้งหมดของคอลเลกชันสตริงบางส่วนเพื่อแสดงสตริงผ่านตัวคั่นที่กำหนดเอง คุณสามารถใช้เมธอดต่อไปนี้ของคลาส Java String:
  • join(CharSequence delimiter, CharSequence... elements)
  • join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
delimiterตัวคั่นองค์ประกอบอยู่ที่ไหน และ elementsเป็นอาร์เรย์สตริง / อินสแตนซ์คอลเลกชันสตริง ลองดูตัวอย่างที่เราแปลงรายการสตริงเป็นสตริง โดยแยกแต่ละรายการด้วยเครื่องหมายอัฒภาค:
public static void main(String[] args) {
    List<String> people = Arrays.asList(
            "Philip J. Fry",
            "Turanga Leela",
            "Bender Bending Rodriguez",
            "Hubert Farnsworth",
            "Hermes Conrad",
            "John D. Zoidberg",
            "Amy Wong"
    );

    String peopleString = String.join("; ", people);
    System.out.println(peopleString);
    /*
    Output:
    Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong
     */
}

การแยกสตริงออกเป็นอาร์เรย์ของสตริง

การดำเนินการนี้ดำเนินการโดยเมธอดsplit(String regex) ตัวคั่นคือนิพจน์ทั่วไปของregexสตริง ในตัวอย่างด้านล่าง เราจะดำเนินการตรงกันข้ามกับสิ่งที่เราดำเนินการในตัวอย่างก่อนหน้านี้:
public static void main(String[] args) {
    String people = "Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong";

    String[] peopleArray = people.split("; ");
    for (String human : peopleArray) {
        System.out.println(human);
    }
    /*
    Output:
    Philip J. Fry
    Turanga Leela
    Bender Bending Rodriguez
    Hubert Farnsworth
    Hermes Conrad
    John D. Zoidberg
    Amy Wong
     */
}

การกำหนดตำแหน่งขององค์ประกอบในสตริง

ในภาษาจาวา String จัดเตรียมชุดของวิธีการเพื่อกำหนดตำแหน่งของอักขระ/สตริงย่อยในสตริง:
  1. indexOf(int ch)
  2. indexOf(int ch, int fromIndex)
  3. indexOf(String str)
  4. indexOf(String str, int fromIndex)
  5. lastIndexOf(int ch)
  6. lastIndexOf(int ch, int fromIndex)
  7. lastIndexOf(String str)
  8. lastIndexOf(String str, int fromIndex)
ที่ไหน:
  1. ch— สัญลักษณ์ที่คุณกำลังมองหา ( char)
  2. str- สตริงการค้นหา
  3. fromIndex— ตำแหน่งที่จะค้นหาองค์ประกอบ
  4. วิธีการindexOf- คืนตำแหน่งขององค์ประกอบแรกที่พบ
  5. วิธีการlastIndexOf- คืนตำแหน่งขององค์ประกอบสุดท้ายที่พบ
หากไม่พบองค์ประกอบที่คุณกำลังมองหา วิธีการจะส่งกลับบรรทัด -1 ลองค้นหาหมายเลขซีเรียลของตัวอักษรA, K, Z, Яในตัวอักษรภาษาอังกฤษ แต่โปรดจำไว้ว่าการจัดทำดัชนีอักขระในสตริงใน Java เริ่มต้นจากศูนย์:
public static void main(String[] args) {
    String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    System.out.println(alphabet.indexOf('A')); // 0
    System.out.println(alphabet.indexOf('K')); // 10
    System.out.println(alphabet.indexOf('Z')); // 25
    System.out.println(alphabet.indexOf('Я')); // -1
}

แยกสตริงย่อยออกจากสตริง

หากต้องการแยกสตริงย่อยออกจากสตริงคลาส String ใน Java จัดเตรียมวิธีการ:
  • substring(int beginIndex)
  • substring(int beginIndex, int endIndex)
มาดูกันว่าเราจะใช้การวางตำแหน่งองค์ประกอบและวิธีการแยกสตริงย่อยเพื่อรับชื่อไฟล์จากเส้นทางได้อย่างไร:
public static void main(String[] args) {
    String filePath = "D:\\Movies\\Futurama.mp4";
    int lastFileSeparatorIndex = filePath.lastIndexOf('\\');
    String fileName = filePath.substring(lastFileSeparatorIndex + 1);
    System.out.println(fileName); //9
}

แปลงสตริงเป็นตัวพิมพ์ใหญ่/เล็ก:

คลาส String จัดเตรียมวิธีการสำหรับการแปลงสตริงเป็นตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก:
  • toLowerCase()
  • toUpperCase()
ลองดูว่าวิธีการเหล่านี้ทำงานอย่างไรโดยใช้ตัวอย่าง:
public static void main(String[] args) {
    String fry = "Philip J. Fry";

    String lowerCaseFry = fry.toLowerCase();
    String upperCaseFry = fry.toUpperCase();

    System.out.println(lowerCaseFry); // philip j. fry
    System.out.println(upperCaseFry); // PHILIP J. FRY
}
การทำงานกับคลาส Java นี้ได้รับการศึกษาในระดับเริ่มต้นของหลักสูตรออนไลน์ JavaRush:

แหล่งข้อมูลเพิ่มเติม

ข้อมูลเกี่ยวกับคลาส String ยังมีให้ไว้ในบทความอื่นในชุมชน JavaRush:
  1. สตริงใน Java - บทความนี้ครอบคลุมพื้นฐานบางประการเกี่ยวกับการทำงานกับสตริงใน Java
  2. สตริงจาวา คำถามและคำตอบในการสัมภาษณ์ ตอนที่ 1 - บทความนี้กล่าวถึงคำถามในการสัมภาษณ์ในหัวข้อStringและยังให้คำตอบสำหรับคำถามพร้อมคำอธิบายและตัวอย่างโค้ด
  3. สตริงใน Java (คลาส java.lang.String) - บทความนี้ให้การวิเคราะห์เชิงลึกของคลาส String และยังกล่าวถึงความซับซ้อนของการทำงานกับคลาสนี้
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION