คุณเคยได้ยินเกี่ยวกับระยะ “ String pool ใน Java?” ถ้าไม่คุณมาถูกที่แล้ว String Pool ใน Java เป็นกลุ่มของสตริงที่เก็บไว้ใน หน่วยความจำกอง ให้เราเจาะลึกลงไปอีกเล็กน้อยและทำความเข้าใจกับแนวคิดของ Java String pool โดยละเอียด
คำแนะนำต่อไปนี้จะกล่าวถึงในบทความนี้:
- จะสร้าง String ได้อย่างไร?
- String pool ใน Java คืออะไร?
- String pool ทำงานอย่างไรใน Java?
- แผนภาพการไหล
- โปรแกรม Java สำหรับ String pool
เอาล่ะ!
ก่อนอื่นให้เราเข้าใจว่าวัตถุสตริงถูกสร้างขึ้นอย่างไร!
จะสร้างสตริงได้อย่างไร?
ในการสร้างอ็อบเจกต์ String ใน Java มีสองวิธี:
- ใช้ตัวดำเนินการใหม่ ตัวอย่างเช่น,
สตริง s1 = สตริงใหม่ ('Joey')
- การใช้นิพจน์ตัวอักษรสตริงหรือค่าคงที่ ตัวอย่างเช่น,
สตริง s1 = 'Joey' (สตริงลิเทอรัล) หรือสตริง s1 = 'โจ' + 'y' (นิพจน์คงที่ของสตริง)
ตอนนี้ String pool ที่ฉันกำลังพูดถึงคืออะไรและการสร้างสตริงใน Java เกี่ยวข้องกับสิ่งนี้อย่างไร ฉันขอตัดความยุ่งเหยิง!
คลาสอะแดปเตอร์ใน java พร้อมตัวอย่าง
String Pool ใน Java คืออะไร?
String Pool เป็นพื้นที่เก็บข้อมูลในฮีป Java
การจัดสรรสตริงเช่นเดียวกับทั้งหมด การจัดสรรวัตถุ พิสูจน์ได้ว่าเป็นเรื่องที่มีราคาแพงทั้งในกรณีของเวลาและความทรงจำ JVM ดำเนินการบางขั้นตอนในขณะที่เตรียมใช้งานตัวอักษรสตริงเพื่อเพิ่มประสิทธิภาพและลดค่าใช้จ่ายของหน่วยความจำ ในการลดจำนวนของอ็อบเจ็กต์ String ที่สร้างใน JVM คลาส String จะเก็บพูลของสตริง
ทุกครั้งที่สร้างลิเทอรัลสตริงไฟล์ JVM ตรวจสอบสตริงลิเทอรัลพูลก่อน หากสตริงมีอยู่แล้วในพูลสตริงการอ้างอิงไปยังอินสแตนซ์แบบรวมจะส่งกลับ ถ้าสตริงไม่มีอยู่ในพูลอ็อบเจ็กต์ String ใหม่จะเริ่มต้นและวางไว้ในพูล
หลังจากเรียนรู้แนวคิดในทางทฤษฎีแล้วให้ฉันบอกคุณว่า String pool ทำงานอย่างไรใน Java ทีละขั้นตอนด้วยความช่วยเหลือของอินสแตนซ์ง่ายๆ!
String pool ทำงานอย่างไรใน Java?
เมื่อคุณสร้างสตริงใหม่ดังนี้:
สตริง s1 =“ Rachel”
JVM จะตรวจสอบโดยอัตโนมัติว่ามีค่าเดียวกันในพูลค่าคงที่ของสตริงหรือไม่
- ถ้าใช่จะใช้ค่าที่มีอยู่แล้ว
- ถ้าไม่มีจะสร้างสตริงใหม่ด้วยตัวเองและเพิ่มลงในพูลสตริง
หากคุณต้องการหยุดพฤติกรรมนี้ให้สร้างสตริงโดยใช้โอเปอเรเตอร์ใหม่:
สตริง s1 = สตริงใหม่ (“ Rachel”)
ตอนนี้หากคุณต้องการเพิ่มสตริงนี้ลงในไฟล์ Java จัดเตรียมเมธอดที่เรียกว่า intern () method ที่คุณสามารถเรียก native intern () method ดังนี้:
S1.intern ()
ตอนนี้ฉันจะแสดงการใช้งานและการทำงานของสตริงพูลผ่านตัวอย่าง
แต่ก่อนหน้านั้นเตือนสั้น ๆ !
อย่างที่คุณทราบว่าคุณกำลังเปรียบเทียบวัตถุ 2 ชิ้นโดยใช้ตัวดำเนินการ == มันจะเปรียบเทียบที่อยู่ในหน่วยความจำ
java บัฟเฟอร์คืออะไร
ดังนั้นเราจะเปรียบเทียบสตริงโดยใช้ == เพื่อให้แน่ใจว่าเป็นวัตถุเดียวกันหรือไม่
ตอนนี้เรามาดูขั้นตอนการติดตั้งของเรากัน
รูปแบบใน python คืออะไร
String Pool ใน Java: Flow Diagram
ตอนนี้ให้เราเข้าใจสิ่งที่เกิดขึ้นที่นี่ทีละขั้นตอน:
- คลาสถูกโหลดเมื่อ ถูกเรียกใช้
- JVM ค้นหาตัวอักษรสตริงทั้งหมดในโปรแกรม
- ขั้นแรกให้ค้นหาตัวแปร s1 ซึ่งหมายถึง 'Apple' ตามตัวอักษรและจะถูกสร้างขึ้นในหน่วยความจำ
- จากนั้นการอ้างอิงสำหรับ 'Apple' ตามตัวอักษรจะถูกวางไว้ในหน่วยความจำพูลค่าคงที่ของสตริง
- จากนั้นจะพบตัวแปร s2 อีกตัวหนึ่งซึ่งหมายถึงสตริงตัวอักษรเดียวกัน“ Mango”
- จากนั้นจะพบตัวแปรอื่น s3 ซึ่งหมายถึง 'Apple' ตามตัวอักษร
- ตอนนี้ JVM พบสตริงตัวอักษร“ Apple” แล้วทั้งตัวแปร s1 และ s3 จะอ้างถึงออบเจ็กต์เดียวกันนั่นคือ“ Apple”
โปรแกรม Java สำหรับ String Pool
คลาสสาธารณะ StringPoolExperiment {public static void main (String [] args) {String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel') ฝึกงาน ( ) System.out.println (s1 == s2) // true System.out.println (s1 == s3) // false System.out.println (s1 == s4) // true}}
เอาท์พุต:
จริง
เท็จ
จริง
ในตัวอย่างข้างต้นคุณสามารถเห็นการใช้งานการเริ่มต้นสตริงได้อย่างชัดเจนทั้งสามวิธีคือ
สตริง s1 = 'Rachel' String s2 = 'Rachel' String s3 = สตริงใหม่ ('Rachel') สตริง s4 = สตริงใหม่ ('Rachel') ฝึกงาน ()
การทำงานภายในของโปรแกรมอาจจะชัดเจนในขณะนี้
ด้วยเหตุนี้ฉันจึงมาถึงส่วนท้ายของบล็อกแล้ว ฉันหวังว่าเนื้อหาที่อธิบายไว้ที่นี่จะช่วยคุณในการขยายฐานความรู้ของคุณ เราจะดำดิ่งสู่โลกชวาต่อไป คอยติดตาม!
ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ออกแบบมาสำหรับนักเรียนและผู้เชี่ยวชาญที่ต้องการเป็น Java Developer หลักสูตรนี้ออกแบบมาเพื่อให้คุณเริ่มต้นการเขียนโปรแกรม Java และฝึกอบรมแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & ฤดูใบไม้ผลิ .
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก 'String Pool in Java' และเราจะติดต่อกลับโดยเร็วที่สุด