AutoBoxing และ Unboxing ใน Java คืออะไร?



บทความนี้จะให้แนวทางที่ครอบคลุมเกี่ยวกับ Autoboxing ใน Java พร้อมกับตัวอย่างเพื่อความเข้าใจที่ดีขึ้น

ส่วนใหญ่เราใช้ชนิดข้อมูลดั้งเดิมในขณะที่เขียนโปรแกรมในภาษาใด ๆ แต่มีสถานการณ์ที่ประเภทข้อมูลดั้งเดิมขาดในขอบเขตของ และ เป็นหนึ่งในนั้น เพื่อเอาชนะข้อบกพร่องในประเภทข้อมูลดั้งเดิมเราใช้ ห่อ . ขั้นตอนนี้เรียกว่า Autoboxing เราจะพูดถึงรายละเอียด Autoboxing ใน Java ผ่าน docket ด้านล่าง:

เอาล่ะ.





บทเรียนเซิร์ฟเวอร์ sql สำหรับผู้เริ่มต้น

Boxing และ Autoboxing ใน Java คืออะไร?

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

int FirstNumber = 1

ตัวแปร 'FirstNumber' เป็นประเภท int ซึ่งเป็น . ตอนนี้จะเกิดอะไรขึ้นถ้าฉันต้องการแปลงตัวแปร ‘FirstNumber’ เป็นออบเจ็กต์ Java จัดเตรียมวิธีการทำเช่นนั้น



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

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

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

Autoboxing

ถึงตอนนี้เรารู้แล้วว่ามวยคืออะไร ตอนนี้เรามาทำความเข้าใจว่า Autoboxing คืออะไร เมื่อคอมไพเลอร์ทำขั้นตอนการชกมวยโดยไม่ได้กล่าวถึงอย่างชัดเจนจะเรียกว่า autoboxing



มาทำความเข้าใจกับตัวอย่าง:

import java.util.ArrayList import java.util.Listclass Box {public static void main (String [] args) {List Mylist = new ArrayList () สำหรับ (int i = 0 i<10 i++) Mylist.add(i) } }

ดังที่เราได้กล่าวไว้ก่อนหน้านี้ ยอมรับเฉพาะออบเจ็กต์และประเภทข้อมูลดั้งเดิมไม่ทำงาน ในโปรแกรมข้างต้นเราไม่ได้แปลงวัตถุประเภทจำนวนเต็มเป็นประเภทจำนวนเต็ม แต่โปรแกรมจะดำเนินการโดยไม่มีข้อผิดพลาดใด ๆ อย่างไร? คำตอบสำหรับคำถามนี้คือคอมไพเลอร์ทำขั้นตอนการชกมวยโดยอัตโนมัติก่อนที่จะเพิ่มค่าให้กับ 'Mylist' จึงใช้ชื่อว่า Autoboxing

Mylist.add (Integer.valueOf (i))

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

บันทึก- ในบรรทัดด้านบนของชื่อคลาสโค้ด‘Integer ’ถูกกล่าวถึงก่อนเมธอด valueOf () เนื่องจาก valueOf () เป็นวิธีการคงที่ สำหรับตัวอย่างเพิ่มเติมโปรดดูที่ไฟล์ เอกสาร .

Unboxing และ Autounboxing

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

ตัวอย่างเช่น-

จำนวนเต็ม FirstNumber = จำนวนเต็มใหม่ (1) int SecondNumber = FirstNumber.intValue () System.out.println (SecondNumber)

เอาต์พุต - 1

กล่องอัตโนมัติ - เมื่อกระบวนการแกะกล่องโดยคอมไพเลอร์โดยไม่มีการกล่าวถึงอย่างชัดเจนเรียกว่า Autounboxing

ตัวอย่างเช่น-

จำนวนเต็ม = จำนวนเต็มใหม่ (20) int num = Number

โค้ดด้านบนเป็นตัวอย่างของ Autounboxing ในส่วนถัดไปเราจะเรียนรู้เกี่ยวกับคลาส Wrapper

คลาส Wrapper

เราแปลงใน type variable intl Integer type object คลาสจำนวนเต็มนี้เป็นคลาส Wrapper ใน Java คลาส wrapper จะพร้อมใช้งานสำหรับแต่ละคลาส . คลาส Wrapper เหล่านี้ช่วยเราในการแปลงตัวแปรจากประเภทดั้งเดิมไปเป็นอ็อบเจ็กต์ประเภทคลาส Wrapper ตามลำดับ วิธีการของคลาส wrapper มีประโยชน์ในการจัดการกับค่า

ตารางด้านล่างบอกเราเกี่ยวกับประเภทข้อมูลดั้งเดิมและคลาส Wrapper ตามลำดับ

ประเภทดั้งเดิม คลาส Wrapper

บูลีน

บูลีน

บาย

วิธีการสิ้นสุดโปรแกรมใน java

ไบต์

ถ่าน

ตัวละคร

ลอย

ลอย

int

จำนวนเต็ม

วัตถุที่เปลี่ยนแปลงไม่ได้และไม่เปลี่ยนรูปใน java

ยาว

ยาว

สั้น

สั้น

สองเท่า

สองเท่า

สังเกตการใช้อักษรตัวพิมพ์ใหญ่ในคลาส Wrapper

ดังนั้นเราจึงมาถึงตอนท้ายของบทความเรื่อง 'Autoboxing in Java' หากคุณต้องการเรียนรู้เพิ่มเติมโปรดดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ได้รับการออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring

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