แปลจาก: คำถาม 10 อันดับแรกของ Java Strings
พูดง่ายๆ ก็คือ "==" ทดสอบว่าการอ้างอิงของสองสตริงเหมือนกันหรือไม่ และเท่ากับ() ทดสอบว่าค่าของทั้งสองสตริงเหมือนกันหรือไม่ ยกเว้นว่าคุณต้องการตรวจสอบว่าสองสตริงเป็นวัตถุเดียวกันหรือไม่ ควรใช้เท่ากับ()
จะดีกว่าถ้าคุณรู้กลไกการคงอยู่ของสตริง
สตริงไม่เปลี่ยนรูป ซึ่งหมายความว่าเมื่อสร้างขึ้นแล้ว สตริงจะคงอยู่ที่นั่นจนกว่าคนเก็บขยะจะทำความสะอาด ด้วยอาร์เรย์ คุณสามารถแก้ไของค์ประกอบได้อย่างชัดเจน ด้วยวิธีนี้ ข้อมูลที่ละเอียดอ่อนด้านความปลอดภัย (เช่น รหัสผ่าน) จะไม่ปรากฏที่อื่นใดในระบบ
สำหรับ Java7 คำตอบคือใช่ เริ่มต้นจาก JDK7 เราสามารถใช้ String เป็นเงื่อนไขของคำสั่ง switch ได้ ก่อน JDK6 เราไม่สามารถใช้ String เป็นเงื่อนไขของคำสั่ง switch ได้
// java 7 เท่านั้น! สวิตช์ (str.toLowerCase()) { case "a": value = 1; break; case "b": value = 2;
int n = Integer.parseInt("10");
พูดง่ายๆ ก็คือ ใช้บ่อยมากจนบางครั้งก็ถูกละเลย
เราสามารถใช้นิพจน์ทั่วไปเพื่อแยกย่อยมันได้ "/s" หมายถึงอักขระช่องว่าง เช่น " ", "/t", "/r", "/n"
สตริง[] strArray = aString.split("//s+");
ใน JDK6 เมธอด substring() จัดให้มีหน้าต่างในอาร์เรย์อักขระที่แสดงถึงสตริงที่มีอยู่ แต่ไม่ได้สร้างสตริงใหม่ หากต้องการสร้างสตริงใหม่ที่แสดงโดยอาร์เรย์อักขระใหม่ ให้เพิ่มสตริงว่างดังต่อไปนี้:
str.substring(m, n) + ""
สิ่งนี้จะสร้างอาร์เรย์อักขระใหม่ทั้งหมดซึ่งแสดงถึงสตริงใหม่ วิธีการข้างต้นบางครั้งทำให้โค้ดเร็วขึ้นเนื่องจากตัวรวบรวมขยะจะรวบรวมสตริงที่ไม่ได้ใช้ขนาดใหญ่และเก็บเฉพาะสตริงย่อยเท่านั้น
ใน Oracle JDK 7 นั้น substring() จะสร้างอาร์เรย์อักขระใหม่โดยไม่ต้องใช้อาร์เรย์ที่มีอยู่ แผนภาพในวิธีการ substring() ใน JDK 6 และ JDK 7 แสดงให้เห็นความแตกต่างระหว่าง substring() ใน JDK 6 และ JDK 7
String vs StringBuilder: StringBuilder ไม่สามารถเปลี่ยนแปลงได้ ซึ่งหมายความว่าเราสามารถเปลี่ยนค่าของมันได้หลังจากการสร้าง
StringBuilder vs StringBuffer: StringBuffer เป็นแบบซิงโครนัส ซึ่งหมายความว่ามีเธรดที่ปลอดภัย แต่ช้ากว่า StringBuilder
ใน Python เราสามารถทำซ้ำสตริงได้โดยการคูณด้วยตัวเลข ใน Java เราสามารถทำซ้ำสตริงโดยใช้เมธอด Repeat() ของคลาส StringUtils ในแพ็คเกจ Apache Commons Lang
String str = "abcd";String ซ้ำ = StringUtils.repeat(str,3);//abcdabcdabcd
String str = "Sep 17, 2013";Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);System.out.println(date);//Tue Sep 17 00:00 น. :00 EDT 2013
ใช้คลาส StringUtils จากแพ็คเกจ Apache Commons Lang
int n = StringUtils.countMatches("11112222", "1");System.out.println(n);
คำถามเพิ่มเติม: จะตรวจสอบได้อย่างไรว่าสตริงประกอบด้วยตัวอักษรตัวพิมพ์ใหญ่เท่านั้น
แปลจาก: คำถาม 10 อันดับแรกของ Java Strings