Java เป็นที่นิยมมากที่สุดแห่งหนึ่ง มีแนวคิดที่หลากหลายสำหรับการสร้างแอปพลิเคชันและแนวคิดหนึ่งคือไม่สามารถเปลี่ยนแปลงได้และไม่เปลี่ยนรูปใน Java แนวคิดนี้อาศัยการเปลี่ยนแปลงฟิลด์หลังจากการสร้างอ็อบเจ็กต์และทำให้การเขียนโปรแกรมง่ายขึ้น . ดังนั้นในบทความเกี่ยวกับการเปลี่ยนแปลงและไม่เปลี่ยนรูปใน Java นี้ฉันจะพูดถึงหัวข้อต่อไปนี้:
- Mutable Object คืออะไร?
- วัตถุไม่เปลี่ยนรูปคืออะไร?
- ความแตกต่างระหว่างวัตถุที่เปลี่ยนแปลงไม่ได้และไม่เปลี่ยนรูป
- จะสร้างคลาสที่เปลี่ยนแปลงได้อย่างไร?
- จะสร้างคลาสที่ไม่เปลี่ยนรูปได้อย่างไร?
- เหตุใดสตริงจึงไม่เปลี่ยนรูปใน Java
Mutable Object คืออะไร?
อ็อบเจ็กต์ที่คุณสามารถเปลี่ยนฟิลด์และสถานะหลังจากสร้างอ็อบเจ็กต์เรียกว่าอ็อบเจ็กต์ที่เปลี่ยนแปลงได้ ตัวอย่าง : java.util.Date, StringBuilder และอื่น ๆ
วัตถุไม่เปลี่ยนรูปคืออะไร?
วัตถุ ซึ่งคุณไม่สามารถเปลี่ยนแปลงอะไรได้เมื่อวัตถุถูกสร้างขึ้นเรียกว่าวัตถุไม่เปลี่ยนรูป ตัวอย่าง : วัตถุดั้งเดิมชนิดบรรจุกล่องเช่น Integer, Long และอื่น ๆ
ตอนนี้คุณรู้แล้วว่าอะไรที่เปลี่ยนแปลงได้และไม่เปลี่ยนรูปใน java ให้เราก้าวไปข้างหน้าและดูความแตกต่างระหว่างทั้งสอง
ความแตกต่างระหว่างวัตถุที่เปลี่ยนแปลงไม่ได้และไม่เปลี่ยนรูป
วิธีตั้งค่าคราส
คุณสามารถอ้างถึงตารางต่อไปนี้สำหรับความแตกต่างระหว่างอ็อบเจ็กต์ที่เปลี่ยนแปลงได้และไม่เปลี่ยนรูปใน Java
ไม่แน่นอน | ไม่เปลี่ยนรูป |
ช่องสามารถเปลี่ยนแปลงได้หลังจากสร้างวัตถุ | ไม่สามารถเปลี่ยนแปลงฟิลด์ได้หลังจากสร้างวัตถุ |
โดยทั่วไปจะมีวิธีการแก้ไขค่าฟิลด์ | ไม่มีวิธีการใด ๆ ในการแก้ไขค่าฟิลด์ |
มีวิธี Getter และ Setter | มีเมธอด Getter เท่านั้น |
ตัวอย่าง: StringBuilder, java.util.Date | ตัวอย่าง: สตริงออบเจ็กต์ดั้งเดิมแบบบรรจุกล่องเช่น Integer, Long และอื่น ๆ |
ตอนนี้คุณทราบความแตกต่างระหว่างวัตถุที่เปลี่ยนแปลงได้และไม่เปลี่ยนรูปแล้วให้เราดูวิธีสร้างสิ่งเหล่านี้ ชั้นเรียน
จะสร้างคลาสที่เปลี่ยนแปลงได้อย่างไร?
ในการสร้างคลาสที่เปลี่ยนแปลงได้ใน Java คุณต้องแน่ใจว่าตรงตามข้อกำหนดต่อไปนี้:
- ระบุวิธีการ เพื่อแก้ไขค่าฟิลด์
- วิธี 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 คุณต้องแน่ใจว่าตรงตามข้อกำหนดต่อไปนี้:
การซิงโครไนซ์ใน java คืออะไร
- ควรประกาศคลาสเป็น สุดท้าย เพื่อให้ไม่สามารถขยายได้
- ช่องทั้งหมดควรเป็นแบบส่วนตัวเพื่อไม่ให้เข้าถึงโดยตรง
- ไม่มีวิธีการตั้งค่า
- ทำให้ฟิลด์ที่ไม่แน่นอนทั้งหมดเป็นขั้นสุดท้ายเพื่อให้สามารถกำหนดได้เพียงครั้งเดียว
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' และเราจะติดต่อกลับโดยเร็วที่สุด