อะไรคือความแตกต่างระหว่าง Mutable และ Immutable ใน Java?



บทความนี้เกี่ยวกับ Mutable และ Immutable ใน Java เป็นคำแนะนำที่ครอบคลุมเกี่ยวกับความแตกต่างระหว่างสิ่งเหล่านี้และยังกล่าวถึงสาเหตุที่สตริง java ไม่เปลี่ยนรูป

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

Mutable Object คืออะไร?





อ็อบเจ็กต์ที่คุณสามารถเปลี่ยนฟิลด์และสถานะหลังจากสร้างอ็อบเจ็กต์เรียกว่าอ็อบเจ็กต์ที่เปลี่ยนแปลงได้ ตัวอย่าง : java.util.Date, StringBuilder และอื่น ๆ

วัตถุไม่เปลี่ยนรูปคืออะไร?



วัตถุ ซึ่งคุณไม่สามารถเปลี่ยนแปลงอะไรได้เมื่อวัตถุถูกสร้างขึ้นเรียกว่าวัตถุไม่เปลี่ยนรูป ตัวอย่าง : วัตถุดั้งเดิมชนิดบรรจุกล่องเช่น Integer, Long และอื่น ๆ

ตอนนี้คุณรู้แล้วว่าอะไรที่เปลี่ยนแปลงได้และไม่เปลี่ยนรูปใน java ให้เราก้าวไปข้างหน้าและดูความแตกต่างระหว่างทั้งสอง

ความแตกต่างระหว่างวัตถุที่เปลี่ยนแปลงไม่ได้และไม่เปลี่ยนรูป



วิธีตั้งค่าคราส

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

ไม่แน่นอน ไม่เปลี่ยนรูป
ช่องสามารถเปลี่ยนแปลงได้หลังจากสร้างวัตถุไม่สามารถเปลี่ยนแปลงฟิลด์ได้หลังจากสร้างวัตถุ
โดยทั่วไปจะมีวิธีการแก้ไขค่าฟิลด์ไม่มีวิธีการใด ๆ ในการแก้ไขค่าฟิลด์
มีวิธี Getter และ Setterมีเมธอด Getter เท่านั้น
ตัวอย่าง: StringBuilder, java.util.Dateตัวอย่าง: สตริงออบเจ็กต์ดั้งเดิมแบบบรรจุกล่องเช่น Integer, Long และอื่น ๆ

ตอนนี้คุณทราบความแตกต่างระหว่างวัตถุที่เปลี่ยนแปลงได้และไม่เปลี่ยนรูปแล้วให้เราดูวิธีสร้างสิ่งเหล่านี้ ชั้นเรียน

จะสร้างคลาสที่เปลี่ยนแปลงได้อย่างไร?

ในการสร้างคลาสที่เปลี่ยนแปลงได้ใน Java คุณต้องแน่ใจว่าตรงตามข้อกำหนดต่อไปนี้:

  1. ระบุวิธีการ เพื่อแก้ไขค่าฟิลด์
  2. วิธี Getter และ Setter

พิจารณารหัสต่อไปนี้:

package edureka public class example {private String Coursename example (String Coursename) {this.coursename = Coursename} public String getName () {return Coursename} public void setName (String Coursename) {this.coursename = Coursename} public static void main (String [] args) {example obj = new example ('Machine Learning') System.out.println (obj.getName ()) // อัปเดตชื่อวัตถุนี้เป็นระบบ obj.setName ('Machine Learning Masters') ที่ไม่แน่นอน out.println (obj.getName ())}}

คุณจะเห็นผลลัพธ์ต่อไปนี้:

ผลลัพธ์ของวัตถุที่เปลี่ยนแปลงไม่ได้ - เปลี่ยนแปลงได้และไม่เปลี่ยนรูปใน Java- Edureka

ตอนนี้คุณรู้วิธีสร้างคลาสที่เปลี่ยนแปลงได้แล้วต่อไปในบทความนี้ให้เราดูวิธีสร้างคลาสที่ไม่เปลี่ยนรูป

จะสร้างคลาสที่ไม่เปลี่ยนรูปได้อย่างไร?

ในการสร้างคลาสที่ไม่เปลี่ยนรูปใน Java คุณต้องแน่ใจว่าตรงตามข้อกำหนดต่อไปนี้:

การซิงโครไนซ์ใน java คืออะไร
  1. ควรประกาศคลาสเป็น สุดท้าย เพื่อให้ไม่สามารถขยายได้
  2. ช่องทั้งหมดควรเป็นแบบส่วนตัวเพื่อไม่ให้เข้าถึงโดยตรง
  3. ไม่มีวิธีการตั้งค่า
  4. ทำให้ฟิลด์ที่ไม่แน่นอนทั้งหมดเป็นขั้นสุดท้ายเพื่อให้สามารถกำหนดได้เพียงครั้งเดียว
package edureka public class exampleimmutable {private final String Coursename exampleimmutable (final String Coursename) {this.coursename = Coursename} public final String getName () {return Coursename} public static void main (String [] args) {example obj = new example ( 'แมชชีนเลิร์นนิง') System.out.println (obj.getName ())}}

คุณจะเห็นผลลัพธ์ด้านล่าง:

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

เหตุใดสตริงจึงไม่เปลี่ยนรูปใน Java

Java ใช้แนวคิดของ . ดังนั้นหากคุณพิจารณาตัวอย่างที่คุณมีตัวแปรอ้างอิงจำนวนมากที่อ้างถึงออบเจ็กต์เดียวแม้ว่าตัวแปรอ้างอิงตัวหนึ่งจะเปลี่ยนค่าของ วัตถุ โดยอัตโนมัติตัวแปรอ้างอิงอื่น ๆ ทั้งหมดจะได้รับผลกระทบ นอกจากนี้ตาม Java ที่มีประสิทธิภาพ ,บทที่ 4 หน้า 73 พิมพ์ครั้งที่ 2 ต่อไปนี้เป็นเหตุผลในการใช้คลาสที่ไม่เปลี่ยนรูป:

  • วัตถุที่ไม่เปลี่ยนรูปนั้นเรียบง่าย
  • อ็อบเจ็กต์เหล่านี้ไม่จำเป็นต้องมีการซิงโครไนซ์และโดยเนื้อแท้เธรดปลอดภัย
  • วัตถุที่ไม่เปลี่ยนรูปเป็นส่วนประกอบที่ดีสำหรับวัตถุอื่น ๆ

ถ้าฉันต้องอธิบายคุณด้วยตัวอย่างเช่นนั้น

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

ดังที่คุณเห็นในภาพด้านบนไฟล์ ตัวอย่างสตริง ตัวแปรอ้างอิงหมายถึง“ Machine Learning” แต่ไม่ใช่สตริงอื่นแม้ว่าจะสร้างวัตถุสองชิ้นแล้วก็ตาม ด้วยเหตุนี้เราจึงมาจบบทความเรื่อง Mutable และ Immutable ใน Java ฉันหวังว่าพวกคุณจะมีความชัดเจนเกี่ยวกับทุกแง่มุมที่ฉันได้กล่าวไว้ข้างต้น

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

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