1. โครงสร้างของStringชั้นเรียน

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

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

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

อาร์เรย์ของอักขระ

โครงสร้างของStringคลาสนั้นง่ายมาก: ข้างในเป็นอาร์เรย์อักขระ (char array) ที่เก็บอักขระทั้งหมดของสตริง ตัวอย่างเช่น นี่คือวิธีจัดเก็บคำว่า 'สวัสดี':

โครงสร้างของคลาสสตริง
สำคัญ!

จริงๆ แล้ว มันไม่ถูกต้องเสียทีเดียว เนื่องจากStringคลาสมีความสำคัญมาก จึงใช้การปรับแต่งจำนวนมาก และข้อมูลจึงถูกจัดเก็บไว้ภายในไม่ใช่เป็นอาร์เรย์อักขระ แต่เป็นอาร์เรย์แบบไบต์


2. วิธีการของStringชั้นเรียน

คลาส นี้Stringมีเมธอดมากมาย: มีคอนสตรัคเตอร์ 18 ตัวเท่านั้น! ด้านล่างเราจะพูดถึงเฉพาะพื้นฐานที่สุดเท่านั้น:

วิธีการ คำอธิบาย
int length()
ส่งกลับจำนวนอักขระในสตริง
boolean isEmpty()
ตรวจสอบว่าสตริงเป็นสตริงว่างหรือไม่
boolean isBlank()
ตรวจสอบว่าสตริงมีเฉพาะอักขระช่องว่าง: ช่องว่าง แท็บ ขึ้นบรรทัดใหม่ ฯลฯ
char charAt(int index)
ส่งกลับอักขระที่ตำแหน่งดัชนีในสตริง
char[] toCharArray()
ส่งกลับอาร์เรย์ของอักขระ (สำเนา) ที่ประกอบขึ้นเป็นสตริง
byte[] getBytes()
แปลงสตริงเป็นชุดของไบต์และส่งคืนอาร์เรย์ของไบต์
String[] split(String regex)
แยกสตริงออกเป็นหลายสตริงย่อย
String join(CharSequence delimiter, elements)
รวมสตริงย่อยหลายรายการเข้าด้วยกัน
String intern()
วางสตริงลงในstring pool.

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับคอนสตรัคเตอร์ ได้ในบทความJava Constructors

มาเขียนโปรแกรมที่แปลงเส้นทางไฟล์จากสไตล์ Unix เป็นสไตล์ Windows Unix ใช้/อักขระเพื่อแยกโฟลเดอร์ในขณะที่ Windows ใช้\อักขระ

โซลูชันที่ 1:ใช้อาร์เรย์ถ่าน

รหัส หมายเหตุ
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
สร้างออบเจกต์สแกนเนอร์
อ่านบรรทัดจากคอนโซล

แปลงสตริงเป็นอาร์เรย์อักขระ วน
ซ้ำอักขระ
ถ้าอักขระคือ/ให้
แทนที่\ด้วย อย่าลืมเกี่ยวกับการหลบหนี

สร้างสตริงใหม่ตามอาร์เรย์อักขระ
แสดงสตริง

โซลูชันที่ 2: — ใช้split()และjoin()วิธีการ

รหัส หมายเหตุ
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String[] array = path.split("/");


String result = String.join("\\", array);


System.out.println(result);
สร้างวัตถุสแกนเนอร์
อ่านบรรทัดจากคอนโซล

แปลงสตริงเป็นอาร์เรย์ของสตริง /อักขระนี้ ใช้เป็นตัวคั่น เชื่อม
ต่อสตริงทั้งหมดในอาร์เรย์ของสตริง ใช้\เป็นตัวคั่น (เรามองว่าหนี)

แสดงสตริง

แนวทางที่ 3: — ใช้replace(char oldChar, char newChar)วิธีการ

รหัส หมายเหตุ
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
สร้างวัตถุสแกนเนอร์
อ่านบรรทัดจากคอนโซล

เพียงแทนที่อักขระหนึ่งตัวด้วยอักขระอื่น
(ตัวที่สองใช้ Escape)
แสดงสตริง