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

สตริงจาวา

เผยแพร่ในกลุ่ม

สตริงใน Java คืออะไร?

ในการเขียนโปรแกรม มีการใช้สตริงกันมาก สตริงในจาวาเป็นวัตถุที่แสดงถึงลำดับของอักขระที่สนับสนุนโดยอาร์เรย์ถ่าน คลาสสตริงไม่เปลี่ยนรูปใน Java และใช้อินเทอร์เฟซComparable , SerializableและCharSequence ลองดูตัวอย่างเพื่อทำความเข้าใจ
String str = "string"
โดยที่ str คือลำดับของอักขระ 6 ตัว ได้แก่ s, t, r, i, n และ g
ดัชนีอาร์เรย์ของถ่าน 0 1 2 3 4 5
ค่า ที ฉัน n
ที่อยู่หน่วยความจำ 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
ดังที่เราทราบแล้วว่าอาร์เรย์ไม่เปลี่ยนรูป ซึ่งหมายความว่าหลังจากการกำหนดค่าเริ่มต้นแล้วจะไม่สามารถเปลี่ยนแปลงได้ ดังนั้นสตริงจึงไม่เปลี่ยนรูปเช่นกัน

วิธีการเริ่มต้นสตริง

มีสองวิธีในการเริ่มต้นสตริง
  1. ตัวอักษรสตริง
  2. โอเปอเรเตอร์ใหม่

สตริงตัวอักษร

วิธีที่ง่ายและตรงที่สุดในการประกาศสตริงจะใช้ในตัวอย่างข้างต้น เมื่อใดก็ตามที่คอมไพเลอร์ตีความสตริงลิเทอรัล จะถูกแปลงเป็นอ็อบเจ็กต์ String เสมอ
String str = "string";

โอเปอเรเตอร์ใหม่

นอกจากนี้เรายังสามารถเริ่มต้นสตริงได้โดยใช้ตัวดำเนินการใหม่
String strNew = new String("using new operator");

ตัวอย่าง

import java.io.*;
import java.lang.*;

class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";

        System.out.println("String str = " + str);

        //declare string using new operator
        String strNew = new String("using new operator");

        System.out.println("String strNew = " + strNew);
    }
}

เอาท์พุต

String str = ตัวอักษรสตริง String strNew = การใช้ตัวดำเนินการใหม่

String กับ StringBuilder กับ StringBuffer

เราได้พูดคุยกันแล้วว่าคลาส String คืออะไร ดังนั้นเราจะหารือเกี่ยวกับอีกสองคลาสที่เหลือและจุดประสงค์ของคลาสเหล่านั้น พร้อมด้วยเหตุผลว่าทำไม Java จึงแนะนำคลาสทั้งสองนี้ในเมื่อมันมีคลาส String อยู่แล้วสำหรับเรา เป็นการดีกว่าสำหรับคุณที่จะไปที่ด้านบนและมีการแก้ไขสำหรับคลาส String เพื่อทำความเข้าใจในวิธีที่ดีกว่า

เหตุผล

ดังที่เรารู้ว่าอ็อบเจ็กต์คลาส String นั้นไม่เปลี่ยนรูป ดังนั้นเมื่อใดก็ตามที่เราจำเป็นต้องเปลี่ยนสตริง มันจะไม่กลายพันธุ์กับอ็อบเจ็กต์ปัจจุบัน แต่ค่าที่เปลี่ยนแปลงจะถูกเก็บไว้เป็นอ็อบเจ็กต์ String ใหม่เสมอ ดังนั้นหากเราต้องเปลี่ยนค่าครั้งแล้วครั้งเล่าหน่วยความจำก็จะถูกใช้ไปด้วย การรักษาจุดนี้ Java ได้จัดเตรียมคลาสStringBuilderและStringBuffer ให้กับเรา ตอนนี้เรามาดูกันว่าสิ่งเหล่านี้มีประโยชน์อย่างไรในสถานการณ์นี้

StringBuffer

String เป็นตัวแทนของลำดับอักขระที่ไม่เปลี่ยนรูป แต่StringBuffer เป็นลำดับอักขระที่ไม่แน่นอน มันใช้วิธีการคลาส Stringส่วนใหญ่พร้อมกับวิธีการบางอย่างของมันเองเพื่อเปลี่ยนเนื้อหาและลำดับของอักขระ ปลอดภัยสำหรับเธรดเนื่องจากวิธีการซิงโครไนซ์เพื่อใช้งานโดยหลายเธรด โดยคงลำดับอนุกรมไว้ มันใช้อินเทอร์เฟซ Serializable , AppendableและCharSequence

ไวยากรณ์

StringBuffer str = new StringBuffer("Happy Java Programming");

StringBuilder

StringBuilder ยังแสดงถึงลำดับอักขระที่ไม่แน่นอนอีกด้วย มี API ซึ่งเข้ากันได้กับคลาส StringBuffer แต่ไม่ปลอดภัยต่อเธรด ดังนั้นในกรณีที่ไม่มีหลายเธรด ควรใช้ คลาส StringBuilder จะดีกว่า เนื่องจากในหลายกรณีเร็วกว่าคลาสStringBuffer วิธีการหลักของคลาสนี้คือการแทรกและผนวก นอกจากนี้ยังใช้อินเทอร์เฟ ซ Serializable , AppendableและCharSequence

ไวยากรณ์

StringBuilder str = new StringBuilder("Happy Java Programming");

การดำเนินการสตริง

ใน Java เราสามารถดำเนินการกับสตริงเช่นการต่อข้อมูล , การเปรียบเทียบ , การแยก , การค้นหาความยาว , การแทนที่สตริงและอื่นๆ

วิธีการสตริง

คลาส Java String มีวิธีการต่างๆ มากมายสำหรับจัดการสตริงหรือดำเนินการตามที่กล่าวไว้ข้างต้น ลองดูที่ตารางด้านล่างสำหรับวิธีการสตริงเหล่านี้บางส่วน
วิธีการ คำอธิบาย
Char charAt(ดัชนี int) มันจะส่งกลับค่าถ่านที่ดัชนีที่ให้ไว้
สตริง concat (สตริง str) ส่งคืนสตริงโดยการรวมสตริงที่ระบุไว้ที่ส่วนท้ายของสตริงนี้
บูลีนประกอบด้วย (CharSequence s) มันจะคืนค่าเป็นจริงหากสตริงมีลำดับของค่าถ่านที่ระบุ
เนื้อหาบูลีนเท่ากับ (CharSequence cs) มันจับคู่สตริงกับลำดับอักขระที่ให้มา
เนื้อหาบูลีนเท่ากับ (StringBuffer sb) มันจับคู่สตริงกับบัฟเฟอร์สตริงที่ให้มา
บูลีนสิ้นสุดด้วย (คำต่อท้ายสตริง) โดยจะเปรียบเทียบปลายสายอักขระกับส่วนต่อท้ายที่ให้มา
บูลีนเท่ากับ (Object anObject) มันจับคู่สตริงกับวัตถุที่ให้มา
บูลีนเท่ากับ IgnoreCase (สตริง anotherString) วิธีนี้จะเปรียบเทียบสองสายโดยไม่คำนึงถึงความอ่อนไหวของตัวพิมพ์
รูปแบบสตริงคงที่ (รูปแบบสตริง, วัตถุ… args) ส่งคืนสตริงที่จัดรูปแบบโดยใช้รูปแบบที่ให้มาและอาร์กิวเมนต์
ไบต์ getBytes() วิธีการนี้ใช้ชุดอักขระเริ่มต้นของแพลตฟอร์มสำหรับการเข้ารหัสสตริงเป็นลำดับไบต์ ซึ่งจากนั้นจะถูกจัดเก็บไว้ในอาร์เรย์ไบต์ใหม่
getChars เป็นโมฆะ (int เริ่มต้น, สิ้นสุด int, ถ่าน [] dst, int dstBegin) โดยจะคัดลอกอักขระจากสตริงไปยังอาร์เรย์อักขระปลายทาง
int hashCode() มันจะส่งกลับรหัสแฮชสำหรับสตริง
int ดัชนีของ (int ch) ส่งคืนดัชนีสำหรับอักขระที่ระบุซึ่งเกิดขึ้นก่อนจากสตริง
int indexOf (int ch, int fromIndex) ส่งคืนดัชนีสำหรับอักขระที่ระบุซึ่งเกิดขึ้นก่อนโดยเริ่มจากดัชนีที่ระบุในสตริงนี้
int indexOf (สตริง str) ค้นหาสตริงย่อยที่ระบุในสตริงและส่งกลับดัชนีเมื่อเกิดขึ้นครั้งแรก
int indexOf (สตริง str, int fromIndex) มันเริ่มค้นหาสตริงย่อยที่ระบุในสตริงจากดัชนีที่กำหนดและส่งกลับดัชนีเมื่อเกิดขึ้นครั้งแรก
สตริงฝึกงาน() เมธอดนี้ส่งคืนการแสดงค่ามาตรฐานของสตริง
int LastIndexOf (int ch) เมธอดนี้ค้นหาอักขระที่ระบุในสตริงและส่งกลับดัชนีของเหตุการณ์ครั้งล่าสุด
int LastIndexOf(int ch, int fromIndex) เมธอดนี้ค้นหาอักขระที่ระบุในสตริงย้อนหลังจากดัชนีที่กำหนด และส่งกลับดัชนีของเหตุการณ์ครั้งล่าสุด
int LastIndexOf (สตริง str) เมธอดนี้ค้นหาสตริงย่อยที่ระบุในสตริงและส่งกลับดัชนีของเหตุการณ์ครั้งล่าสุด
int LastIndexOf (สตริง str, int fromIndex) เมธอดนี้ค้นหาย้อนหลังจากดัชนีที่กำหนดสำหรับสตริงย่อยที่ระบุในสตริง และส่งกลับดัชนีของเหตุการณ์ครั้งล่าสุด
ความยาว int() วิธีการนี้จะส่งกลับความยาวของสตริง
การจับคู่บูลีน (สตริง regex) มันจะคืนค่าจริงหรือเท็จโดยการจับคู่สตริงกับนิพจน์ทั่วไปที่ให้ไว้
แทนที่สตริง (ถ่าน oldValue, ถ่าน newValue) เมธอดนี้ส่งคืนสตริงหลังจากแทนที่ oldValue ที่ให้ไว้ทั้งหมดด้วย newValue ในสตริง
สตริง [] แยก (สตริง regex) เมธอดนี้จะค้นหารายการที่ตรงกันทั้งหมดตามนิพจน์ทั่วไปที่ให้ไว้ในสตริง และแยกออกตามรายการที่ตรงกันเหล่านี้
บูลีน startWith (คำนำหน้าสตริง) มันจะคืนค่าจริงหรือเท็จโดยการทดสอบสตริงที่ขึ้นต้นด้วยคำนำหน้าที่ให้ไว้
สตริงย่อย (int beginningIndex) เมธอดนี้ส่งคืนสตริงซึ่งเป็นสตริงย่อยของสตริงนี้
สตริงเป็น LowerCase() มันจะแปลงอักขระทั้งหมดของสตริงเป็นตัวพิมพ์เล็กโดยใช้กฎของสถานที่เริ่มต้น
การตัดแต่งสตริง() วิธีนี้จะลบช่องว่างนำหน้าและต่อท้ายทั้งหมดออกจากสตริงและส่งกลับ
ค่าสตริงคงที่ของ (ถ่าน c) มันส่งกลับการแสดงสตริงของอาร์กิวเมนต์ถ่าน
ตอนนี้ด้วยความช่วยเหลือของตัวอย่างบางส่วน เราจะมาดูวิธีใช้งาน

ตัวอย่าง

import java.io.*;
import java.lang.*;

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

    //create a string
    String greeting = "Hello! World";
    System.out.println("String: " + greeting);

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);

    //create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    //create second string
    String second = "Programming";
    System.out.println("Second String: " + second);

    //joining two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);

    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

    //compare jpf and jps strings
    boolean result1 = jpf.equals(jps);
    System.out.println("Strings jpf and jps are equal: " + result1);

    //compare jpf and jpt strings
    boolean result2 = jpf.equals(jpt);
    System.out.println("Strings jpf and jpt are equal: " + result2);

    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());

    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

เอาท์พุต

สตริง: สวัสดี! ความยาวของโลก: 12 สตริงแรก: Java สตริงที่สอง: การเขียนโปรแกรมสตริงที่เข้าร่วม: สตริงการเขียนโปรแกรม Java jpf และ jps เท่ากัน: สตริงจริง jpf และ jpt เท่ากัน: false ตัวพิมพ์ใหญ่ jpf: JAVA PROGRAMMING การแทนที่ g ด้วย v ใน jpf: java provramminv

บทสรุป

เราหวังว่าตอนนี้คุณคงเข้าใจแล้วว่า strings ใน java คืออะไร คลาสของมัน และวิธีการใช้งานเมธอดต่างๆ ของมัน คุณสามารถฝึกฝนและกลับมาได้ทุกเมื่อที่คุณต้องการความช่วยเหลือเพิ่มเติม มีความสุขในการเรียนรู้!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION