สตริงใน 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 |
วิธีการเริ่มต้นสตริง
มีสองวิธีในการเริ่มต้นสตริง- ตัวอักษรสตริง
- โอเปอเรเตอร์ใหม่
สตริงตัวอักษร
วิธีที่ง่ายและตรงที่สุดในการประกาศสตริงจะใช้ในตัวอย่างข้างต้น เมื่อใดก็ตามที่คอมไพเลอร์ตีความสตริงลิเทอรัล จะถูกแปลงเป็นอ็อบเจ็กต์ 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
GO TO FULL VERSION