คลาสStringใน Java ได้รับการออกแบบมาเพื่อทำงานกับสตริงใน Java ตัวอักษรสตริงทั้งหมดที่กำหนดในโปรแกรม Java (เช่น "abc") เป็นอินสแตนซ์ของคลาส String ลองดูลักษณะสำคัญ:
- คลาสใช้
Serializable
และCharSequence
อินเตอร์เฟส เนื่องจากรวมอยู่ในแพ็คเกจjava.lang
จึงไม่จำเป็นต้องนำเข้า - คลาสStringใน Java เป็น คลาส สุดท้ายและไม่สามารถมีลูกได้
- คลาส String เป็นคลาสที่ไม่เปลี่ยนรูป ซึ่งหมายความว่าอ็อบเจ็กต์ไม่สามารถเปลี่ยนแปลงได้หลังจากสร้างขึ้นแล้ว การดำเนินการใด ๆ บนวัตถุ String ที่จะส่งผลให้วัตถุของคลาส String จะส่งผลให้เกิดการสร้างวัตถุใหม่
- เนื่องจากความไม่เปลี่ยนรูป ออบเจ็กต์คลาส String จึงปลอดภัยสำหรับเธรด และสามารถใช้ได้ในสภาพแวดล้อมแบบมัลติเธรด
- ทุกอ็อบเจ็กต์ใน Java สามารถ แปลงเป็นสตริงผ่านวิธีการ
toString
ที่คลาส Java ทั้งหมดสืบทอดมาจากคลาสObject
การทำงานกับสตริง 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 จัดเตรียมชุดของวิธีการเพื่อกำหนดตำแหน่งของอักขระ/สตริงย่อยในสตริง:indexOf(int ch)
indexOf(int ch, int fromIndex)
indexOf(String str)
indexOf(String str, int fromIndex)
lastIndexOf(int ch)
lastIndexOf(int ch, int fromIndex)
lastIndexOf(String str)
lastIndexOf(String str, int fromIndex)
ch
— สัญลักษณ์ที่คุณกำลังมองหา (char
)str
- สตริงการค้นหาfromIndex
— ตำแหน่งที่จะค้นหาองค์ประกอบ- วิธีการ
indexOf
- คืนตำแหน่งขององค์ประกอบแรกที่พบ - วิธีการ
lastIndexOf
- คืนตำแหน่งขององค์ประกอบสุดท้ายที่พบ
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มีให้ที่ระดับ 1 การบรรยายที่ 4 ของภารกิจ Java Syntax
- โครงสร้างภายในของ String วิธี substringได้รับการศึกษาในระดับที่ 2 การบรรยายครั้งที่ 3 ของภารกิจ Java Multithreading
- การค้นหา รับ ลบสตริงย่อยในสตริงได้รับการศึกษาในระดับที่ 2 การบรรยายครั้งที่ 4 ของภารกิจ Java Multithreading
- เมธอด String.formatครอบคลุมอยู่ที่ระดับ 2 การบรรยายที่ 6 ของภารกิจ Java Multithreading
แหล่งข้อมูลเพิ่มเติม
ข้อมูลเกี่ยวกับคลาส String ยังมีให้ไว้ในบทความอื่นในชุมชน JavaRush:- สตริงใน Java - บทความนี้ครอบคลุมพื้นฐานบางประการเกี่ยวกับการทำงานกับสตริงใน Java
- สตริงจาวา คำถามและคำตอบในการสัมภาษณ์ ตอนที่ 1 - บทความนี้กล่าวถึงคำถามในการสัมภาษณ์ในหัวข้อ
String
และยังให้คำตอบสำหรับคำถามพร้อมคำอธิบายและตัวอย่างโค้ด - สตริงใน Java (คลาส java.lang.String) - บทความนี้ให้การวิเคราะห์เชิงลึกของคลาส String และยังกล่าวถึงความซับซ้อนของการทำงานกับคลาสนี้
GO TO FULL VERSION