สตริงที่ไม่เปลี่ยนรูปใน Java: สิ่งที่คุณต้องรู้



บทความนี้จะให้ความรู้เกี่ยวกับ Immutable String ใน Java โดยละเอียดและครอบคลุมเหตุใดจึงสำคัญ

การจัดการกับสตริงที่ไม่เปลี่ยนรูปใน เป็นแง่มุมที่สำคัญมากในภาษาโปรแกรมใด ๆ ในบทความนี้เราจะพูดถึงคำแนะนำต่อไปนี้:

รู้เบื้องต้นเกี่ยวกับ Immutable String ใน Java

สตริงพูลมีอ็อบเจ็กต์สตริงที่แคชเนื่องจากสตริงที่ไม่เปลี่ยนรูป ไคลเอนต์หลายรายแชร์ตัวอักษรสตริงที่แคช ความเสี่ยงที่เกี่ยวข้องกับการกระทำของลูกค้ารายหนึ่งจะส่งผลกระทบต่อลูกค้ารายอื่นทั้งหมด





ตัวอย่างเช่นเมื่อไคลเอนต์เปลี่ยนค่าสตริง“ Test” เป็น“ TEST” ไคลเอนต์อื่น ๆ ทั้งหมดจะเห็นค่าที่เปลี่ยนแปลง เนื่องจากการแคชอ็อบเจ็กต์สตริงมีความสำคัญต่อประสิทธิภาพคลาส Immutable String จึงหลีกเลี่ยงความเสี่ยง นอกจากนี้ String ถูกทำให้เป็นขั้นสุดท้ายเพื่อไม่ให้ค่าคงที่ของคลาส String ถูกบุกรุก ตัวอย่างความไม่เปลี่ยนแปลงการแคชการคำนวณรหัสแฮชที่ทำโดยการขยายและการแทนที่พฤติกรรม

จาวาสคริปต์ตรวจสอบความยาวของอาร์เรย์

คีย์ Hashmap

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



Hashtable-Immutable String ใน Java
คลาสสตริงที่ไม่เปลี่ยนรูปใน Java เป็นคลาสที่ถูกถามบ่อยที่สุด .การสนทนาเริ่มต้นด้วย String คืออะไรมันแตกต่างจาก String ใน C ++ อย่างไรจากนั้นคำถามต่อไปนี้คืออ็อบเจ็กต์ที่ไม่เปลี่ยนรูปใน Java ประโยชน์ของอ็อบเจ็กต์ที่ไม่เปลี่ยนรูปแบบการใช้งานและสถานการณ์ที่จะใช้คืออะไร

Need for Immutable String ใน Java

เหตุผลสองประการที่สำคัญในการบอกว่าทำไมคลาส Immutable String จึงถูกสร้างขึ้นใน Java:

1. เป็นไปไม่ได้เลยในกรณีที่จะมีอ็อบเจ็กต์สตริง / ลิเทอรัลเดียว



จัดเรียงอาร์เรย์ c ++

ให้เราดูตัวอย่างด้านล่าง:

'การทดสอบ' สามารถอ้างอิงได้จากตัวแปรอ้างอิงหลายตัว หากคนใดคนหนึ่งเปลี่ยนค่าให้คนอื่นสิ่งนี้จะได้รับผลกระทบเช่นกัน ให้เราดูว่า

สตริง A = 'ทดสอบ'
สตริง B = 'ทดสอบ'


สตริง A เรียกว่า“ Test” .toUpperCase () ซึ่งเปลี่ยนวัตถุเดียวกันเป็น'ทดสอบ'ดังนั้น B ก็จะ“ TEST” ซึ่งไม่จำเป็น ด้านล่างนี้เป็นแผนภาพที่บอกเราว่า String ถูกสร้างขึ้นในหน่วยความจำฮีปและ String literal pool อย่างไร

2. สตริงถูกใช้เป็นพารามิเตอร์สำหรับคลาส Java จำนวนมาก ตัวอย่างเช่นเมื่อเราเปิดการเชื่อมต่อเครือข่ายเราสามารถส่งชื่อโฮสต์และหมายเลขพอร์ตเป็นสตริงสำหรับการเปิดการเชื่อมต่อฐานข้อมูลเราสามารถส่ง URL ฐานข้อมูลเป็นสตริงได้


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

mysql_fetch_array

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

ด้วยเหตุนี้เราจึงมาถึงตอนท้ายของบทความ“ Immutable String in Java” ค กำจัดไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ออกแบบมาสำหรับนักเรียนและผู้เชี่ยวชาญที่ต้องการเป็น Java Developer

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อกนี้และเราจะติดต่อกลับโดยเร็วที่สุด