ชนิดข้อมูลพื้นฐานเทียบกับชนิดห่อหุ้ม
Integer, Double, Boolean และชนิดอื่น ๆ
ชนิดข้อมูลพื้นฐานเทียบกับชนิดห่อหุ้ม เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
สองโลกของค่า
Java มีชนิดข้อมูลพื้นฐาน เช่น int, double และ boolean ซึ่งเก็บค่าดิบไว้โดยตรง นอกจากนี้ยังมีคลาสห่อหุ้ม เช่น Integer, Double และ Boolean ที่ห่อหุ้มค่าเหล่านั้นไว้ภายในออบเจ็กต์
ชนิดข้อมูลพื้นฐานทำงานรวดเร็วและใช้ทรัพยากรน้อย ส่วนคลาสห่อหุ้มเป็นออบเจ็กต์เต็มรูปแบบที่อยู่ในคอลเลกชันได้และอาจเป็น null ได้
ชนิดข้อมูลพื้นฐานทั้งแปด
Java กำหนดชนิดข้อมูลพื้นฐานไว้แปดชนิดพอดี
byte,short,int,longสำหรับจำนวนเต็มfloat,doubleสำหรับเลขทศนิยมcharสำหรับอักขระหนึ่งตัวbooleanสำหรับค่าจริงหรือเท็จ
แต่ละชนิดมีคลาสห่อหุ้มที่สอดคล้องกันในแพ็กเกจ java.lang
ชื่อคลาสห่อหุ้มที่ตรงกัน
ชื่อคลาสห่อหุ้มส่วนใหญ่เพียงเปลี่ยนตัวอักษรแรกของชนิดข้อมูลพื้นฐานเป็นตัวพิมพ์ใหญ่ แต่มีสองชนิดที่แตกต่างกัน
intกลายเป็น Integercharกลายเป็น Characterbooleanกลายเป็น Boolean,doubleกลายเป็น Double และอื่น ๆ
ลองพิมพ์คลาสห่อหุ้มบางรายการกัน
public class Main {
public static void main(String[] args) {
Integer count = 42;
Double price = 9.99;
Boolean active = true;
Character grade = 'A';
System.out.println(count);
System.out.println(price);
System.out.println(active);
System.out.println(grade);
}
}คลาสห่อหุ้มคือออบเจ็กต์
ชนิดข้อมูลพื้นฐานเก็บค่าไว้ ส่วนคลาสห่อหุ้มเป็นการอ้างอิงออบเจ็กต์ จึงสามารถชี้ไปยังสิ่งใดเลยด้วย null ได้
คุณสมบัตินี้ทำให้คลาสห่อหุ้มมีประโยชน์เมื่อค่าอาจไม่มีอยู่ เช่น คอลัมน์ฐานข้อมูลที่อนุญาตให้เป็น NULL
public class Main {
public static void main(String[] args) {
Integer missing = null;
int present = 5;
System.out.println(missing);
System.out.println(present);
}
}ค่าคงที่ที่มีประโยชน์
คลาสห่อหุ้มมีค่าคงที่ที่สะดวกต่อการใช้งาน Integer.MAX_VALUE และ Integer.MIN_VALUE ให้ค่ามากที่สุดและน้อยที่สุดของ int
วิธีนี้ง่ายกว่าการจดจำตัวเลขเหล่านั้นด้วยตนเองมาก
public class Main {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
}
}เมธอดตัวช่วย
คลาสห่อหุ้มยังเป็นกล่องเครื่องมือที่รวมเมธอดตัวช่วยแบบสแตติกไว้ด้วย ตัวอย่างเช่น Integer.toBinaryString แสดงตัวเลขในฐาน 2 และ Integer.max ส่งคืนค่าที่มากกว่าจากค่าสองค่า
public class Main {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(10));
System.out.println(Integer.max(7, 3));
System.out.println(Integer.toHexString(255));
}
}เหตุใดคอลเลกชันจึงต้องใช้คลาสห่อหุ้ม
ระบบชนิดข้อมูลทั่วไปของ Java ใช้ได้เฉพาะกับออบเจ็กต์ ไม่ใช่ชนิดข้อมูลพื้นฐาน คุณไม่สามารถเขียน List<int> ได้
แต่ให้ใช้ List<Integer> แทน คลาสห่อหุ้มทำให้ค่าพื้นฐานเข้ากับรูปแบบออบเจ็กต์ที่คอลเลกชันต้องการ
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
System.out.println(numbers);
}
}การเปรียบเทียบค่าของคลาสห่อหุ้ม
เมื่อต้องการเปรียบเทียบค่าตัวเลขภายในคลาสห่อหุ้มสองตัว ให้ใช้ .equals() หรือ .compareTo() ไม่ใช่ตัวดำเนินการทางคณิตศาสตร์กับออบเจ็กต์เหล่านั้นโดยตรง
compareTo ส่งคืนจำนวนลบ ศูนย์ หรือจำนวนบวก
public class Main {
public static void main(String[] args) {
Integer a = 100;
Integer b = 200;
System.out.println(a.equals(b));
System.out.println(a.compareTo(b));
}
}หน่วยความจำและประสิทธิภาพ
ชนิดข้อมูลพื้นฐานใช้หน่วยความจำน้อยกว่าและทำงานเร็วกว่า เพราะไม่มีภาระของออบเจ็กต์ int หนึ่งค่าคือข้อมูลดิบขนาด 4 ไบต์เท่านั้น
ออบเจ็กต์คลาสห่อหุ้มมีข้อมูลส่วนหัวเพิ่มเติม สำหรับลูปที่ประมวลผลค่าหลายล้านค่า ให้เลือกใช้ชนิดข้อมูลพื้นฐาน
ค่าเริ่มต้นแตกต่างกัน
ฟิลด์ชนิดข้อมูลพื้นฐานที่ยังไม่ได้กำหนดค่าจะมีค่าเริ่มต้นคล้ายศูนย์: int คือ 0 และ boolean คือ false
ฟิลด์คลาสห่อหุ้มที่ยังไม่ได้กำหนดค่าจะมีค่าเริ่มต้นเป็น null ความแตกต่างนี้สำคัญเมื่อคุณพยายามใช้ค่าในภายหลัง
public class Main {
static int primitiveField;
static Integer wrapperField;
public static void main(String[] args) {
System.out.println(primitiveField);
System.out.println(wrapperField);
}
}การเลือกใช้อย่างใดอย่างหนึ่ง
กฎง่าย ๆ คือ ให้ใช้ชนิดข้อมูลพื้นฐานเป็นค่าเริ่มต้นเพื่อประสิทธิภาพและความชัดเจน เปลี่ยนไปใช้คลาสห่อหุ้มเมื่อต้องการสมาชิกของคอลเลกชัน ชนิดข้อมูลทั่วไป หรือความสามารถในการแทนค่าที่ไม่มีอยู่ด้วย null
ตรวจสอบความเข้าใจสั้น ๆ
ทดสอบความเข้าใจของคุณเกี่ยวกับชนิดข้อมูลพื้นฐานและคลาสห่อหุ้ม
ทบทวน
คุณได้เรียนรู้ความแตกต่างระหว่างชนิดข้อมูลพื้นฐานและคลาสห่อหุ้ม
- ชนิดข้อมูลพื้นฐานทั้งแปดชนิดจับคู่กับคลาสห่อหุ้มทั้งแปดคลาส เช่น
IntegerและDouble - คลาสห่อหุ้มเป็นออบเจ็กต์ สามารถเป็น
nullได้ และใช้ในคอลเลกชันได้ - ชนิดข้อมูลพื้นฐานทำงานเร็วกว่าและใช้ทรัพยากรน้อยกว่า จึงควรใช้เป็นค่าเริ่มต้น
- คลาสห่อหุ้มยังมีค่าคงที่และเมธอดตัวช่วยที่มีประโยชน์
คำถามที่พบบ่อย
บทเรียน “ชนิดข้อมูลพื้นฐานเทียบกับชนิดห่อหุ้ม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ชนิดข้อมูลพื้นฐานเทียบกับชนิดห่อหุ้ม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ชนิดข้อมูลพื้นฐานเทียบกับชนิดห่อหุ้ม”
Integer, Double, Boolean และชนิดอื่น ๆ คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ชนิดข้อมูลพื้นฐานเทียบกับชนิดห่อหุ้ม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชนิดข้อมูลพื้นฐานเทียบกับชนิดห่อหุ้ม
- Autoboxing และ Unboxing
- การแยกวิเคราะห์และ Valueof
- ข้อควรระวังของ Autoboxing