แนวคิดของ String Pool ใน java คืออะไร?



String Pool ใน Java คือกลุ่มของสตริงที่เก็บไว้ใน Java Heap Memory บทช่วยสอนนี้จะช่วยให้คุณมีแนวทางโดยละเอียดเกี่ยวกับ Java String Pool พร้อมตัวอย่าง

คุณเคยได้ยินเกี่ยวกับระยะ “ 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

สตริงพูล - Edureka

ตอนนี้ให้เราเข้าใจสิ่งที่เกิดขึ้นที่นี่ทีละขั้นตอน:

  • คลาสถูกโหลดเมื่อ ถูกเรียกใช้
  • 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' และเราจะติดต่อกลับโดยเร็วที่สุด