Autoboxing ใน Java คืออะไร ด้วยตัวอย่าง

เผยแพร่แล้ว: 2023-01-28

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

สารบัญ

พื้นฐานของ autoboxing ใน Java:

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

ตรวจสอบหลักสูตรเทคโนโลยีฟรีของเราเพื่อรับความได้เปรียบเหนือการแข่งขัน

สำรวจหลักสูตรวิศวกรรมซอฟต์แวร์ยอดนิยมของเรา

วิทยาศาสตรมหาบัณฑิตสาขาวิทยาการคอมพิวเตอร์จาก LJMU & IIITB โปรแกรมใบรับรองความปลอดภัยทางไซเบอร์ของ Caltech CTME
Bootcamp การพัฒนาสแต็คเต็มรูปแบบ โปรแกรม PG ใน Blockchain
โปรแกรม Executive PG ในการพัฒนา Full Stack
ดูหลักสูตรทั้งหมดของเราด้านล่าง
หลักสูตรวิศวกรรมซอฟต์แวร์

การทำกล่องอัตโนมัติและการทำกล่องอัตโนมัติ:

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

  • กำหนดให้กับตัวแปรของคลาส wrapper ที่เกี่ยวข้อง
  • ส่งผ่านเป็นอาร์กิวเมนต์ไปยังเมธอดที่ใช้อ็อบเจกต์ของคลาส wrapper ที่เกี่ยวข้อง

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

  • กำหนดตัวแปรของประเภทดั้งเดิมตามลำดับ
  • ส่งผ่านเป็นอาร์กิวเมนต์ไปยังเมธอดที่ต้องการค่าของประเภทดั้งเดิมที่สอดคล้องกัน

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

ทักษะการพัฒนาซอฟต์แวร์ตามความต้องการ

หลักสูตร JavaScript หลักสูตร Core Java หลักสูตรโครงสร้างข้อมูล
หลักสูตร Node.js หลักสูตร SQL หลักสูตรการพัฒนาสแต็คเต็มรูปแบบ
หลักสูตร NFT หลักสูตร DevOps หลักสูตรข้อมูลขนาดใหญ่
หลักสูตร React.js หลักสูตรความปลอดภัยทางไซเบอร์ หลักสูตรคลาวด์คอมพิวติ้ง
หลักสูตรการออกแบบฐานข้อมูล หลักสูตรหลาม หลักสูตร Cryptocurrency

รายละเอียดการทำกล่องอัตโนมัติ:

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

int FirstNumber = 1;

ในคำสั่งนี้ ตัวแปร 'FirstNumber' เป็นประเภทข้อมูล int ซึ่งเป็นข้อมูลพื้นฐาน สามารถแปลงเป็นวัตถุได้โดยใช้คำสั่งด้านล่าง

จำนวนเต็ม SecondNumber = จำนวนเต็มใหม่ (2);

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

Autoboxing เป็นฟังก์ชันที่ดำเนินการโดยอัตโนมัติโดยคอมไพเลอร์โดยไม่ต้องกล่าวถึงอย่างชัดเจน

MyList.add(Integer.valueOf(i));

นี่คือบรรทัดที่คอมไพเลอร์เพิ่มเข้าไปในโปรแกรมของเรา

ในคำสั่งรหัสข้างต้น ชื่อของคลาส 'จำนวนเต็ม' ถูกระบุก่อนที่จะกล่าวถึงเมธอด valueOf() เนื่องจาก valueOf() เป็นเมธอดแบบสแตติก

อ่านบทความยอดนิยมของเราเกี่ยวกับการพัฒนาซอฟต์แวร์

วิธีการใช้ Data Abstraction ใน Java? Inner Class ใน Java คืออะไร ตัวระบุ Java: คำจำกัดความ ไวยากรณ์ และตัวอย่าง
ทำความเข้าใจเกี่ยวกับ Encapsulation ใน OOPS พร้อมตัวอย่าง อาร์กิวเมนต์บรรทัดคำสั่งใน C อธิบาย คุณลักษณะและคุณลักษณะ 10 อันดับแรกของ Cloud Computing ในปี 2022
ความหลากหลายใน Java: แนวคิด ประเภท ลักษณะ และตัวอย่าง แพ็คเกจใน Java & วิธีใช้งาน? บทช่วยสอน Git สำหรับผู้เริ่มต้น: เรียนรู้ Git ตั้งแต่เริ่มต้น

Unboxing ใน Java คืออะไร

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

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

เพิ่มเติมเกี่ยวกับคลาส Wrapper:

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

ชนิดข้อมูลดั้งเดิม

คลาส wrapper ที่สอดคล้องกัน

ไบต์ ไบต์
บูลีน บูลีน
ถ่าน อักขระ
นานาชาติ จำนวนเต็ม
ลอย ลอย
สั้น สั้น
ยาว ยาว
สองเท่า สองเท่า

ข้อดีของ Autoboxing และ auto unboxing ใน Java:

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

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java, การพัฒนาซอฟต์แวร์แบบ full-stack โปรดดูโปรแกรม Executive PG Program ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ – ความเชี่ยวชาญในการพัฒนาแบบ Full Stack ซึ่งออกแบบมาสำหรับมืออาชีพในการทำงานและให้การฝึกอบรมอย่างเข้มงวดมากกว่า 500 ชั่วโมง , 9+ โครงการและการมอบหมายงาน, สถานะศิษย์เก่า IIIT-B, โครงการที่ลงมือปฏิบัติจริงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

ต้องการแบ่งปันบทความนี้หรือไม่?

เตรียมพร้อมสำหรับอาชีพแห่งอนาคต

สมัครเลยสำหรับปริญญาโทสาขาวิศวกรรมซอฟต์แวร์