การแปลงประเภทข้อมูลใน Java (Java Type Casting)
วันนี้เราจะมาเรียนรู้เกี่ยวกับการแปลงประเภทข้อมูล หรือ Type Casting ใน Java กัน
การแปลงประเภทข้อมูลคืออะไร?
การแปลงประเภทข้อมูล คือการเปลี่ยนค่าจากประเภทข้อมูลหนึ่งไปเป็นอีกประเภทหนึ่ง เช่น จากตัวเลขจำนวนเต็มเป็นทศนิยม หรือจากตัวเลขเป็นตัวอักษร
ใน Java มีการแปลงประเภทข้อมูล 2 แบบ:
- Widening Casting (การแปลงแบบขยาย): ทำโดยอัตโนมัติ
- Narrowing Casting (การแปลงแบบลด): ต้องทำด้วยตัวเอง
1. Widening Casting (การแปลงแบบขยาย)
เป็นการแปลงจากประเภทที่เล็กกว่าไปเป็นประเภทที่ใหญ่กว่า: byte → short → char → int → long → float → double
ตัวอย่าง:
int ตัวเลขเต็ม = 100;
double ตัวเลขทศนิยม = ตัวเลขเต็ม; // การแปลงแบบขยายเกิดขึ้นโดยอัตโนมัติ
System.out.println(ตัวเลขเต็ม); // แสดง: 100
System.out.println(ตัวเลขทศนิยม); // แสดง: 100.02. Narrowing Casting (การแปลงแบบลด)
เป็นการแปลงจากประเภทที่ใหญ่กว่าไปเป็นประเภทที่เล็กกว่า: double → float → long → int → char → short → byte
ต้องทำด้วยตัวเอง โดยใส่ประเภทข้อมูลที่ต้องการในวงเล็บหน้าค่า
ตัวอย่าง:
double ตัวเลขทศนิยม = 9.78;
int ตัวเลขเต็ม = (int) ตัวเลขทศนิยม; // การแปลงแบบลด
System.out.println(ตัวเลขทศนิยม); // แสดง: 9.78
System.out.println(ตัวเลขเต็ม); // แสดง: 9ข้อควรระวังในการแปลงประเภทข้อมูล
- การสูญเสียข้อมูล: เมื่อแปลงจากประเภทใหญ่เป็นเล็ก อาจทำให้ข้อมูลบางส่วนหายไป
- Overflow: เมื่อแปลงค่าที่เกินขอบเขตของประเภทข้อมูลที่รับ
ตัวอย่าง Overflow:
int ตัวเลขใหญ่ = 130;
byte ตัวเลขเล็ก = (byte) ตัวเลขใหญ่;
System.out.println(ตัวเลขใหญ่); // แสดง: 130
System.out.println(ตัวเลขเล็ก); // แสดง: -126 (เกิด Overflow)การแปลงประเภทข้อมูลกับ String
การแปลงระหว่าง String และประเภทข้อมูลอื่นๆ เป็นเรื่องที่พบบ่อยใน Java:
- จาก String เป็นตัวเลข:
String ข้อความตัวเลข = "123";
int ตัวเลข = Integer.parseInt(ข้อความตัวเลข);
System.out.println(ตัวเลข); // แสดง: 123- จากตัวเลขเป็น String:
int ตัวเลข = 123;
String ข้อความตัวเลข = String.valueOf(ตัวเลข);
System.out.println(ข้อความตัวเลข); // แสดง: "123"ตัวอย่างการใช้งานจริง
ลองมาดูตัวอย่างโปรแกรมที่ใช้การแปลงประเภทข้อมูลกัน:
public class โปรแกรมคำนวณเกรด {
public static void main(String[] args) {
// สมมติว่าเรามีคะแนนเป็นทศนิยม
double คะแนน = 85.5;
// แปลงคะแนนเป็นจำนวนเต็มเพื่อคิดเกรด
int คะแนนเต็ม = (int) คะแนน;
char เกรด;
if (คะแนนเต็ม >= 80) {
เกรด = 'A';
} else if (คะแนนเต็ม >= 70) {
เกรด = 'B';
} else if (คะแนนเต็ม >= 60) {
เกรด = 'C';
} else if (คะแนนเต็ม >= 50) {
เกรด = 'D';
} else {
เกรด = 'F';
}
System.out.println("คะแนน: " + คะแนน);
System.out.println("คะแนนเต็ม: " + คะแนนเต็ม);
System.out.println("เกรด: " + เกรด);
// แปลงเกรด (char) เป็น String เพื่อแสดงผล
String ข้อความเกรด = String.valueOf(เกรด);
System.out.println("คุณได้เกรด " + ข้อความเกรด);
}
}สรุป
การแปลงประเภทข้อมูลเป็นทักษะสำคัญในการเขียนโปรแกรม Java ช่วยให้เราสามารถทำงานกับข้อมูลต่างประเภทได้อย่างยืดหยุ่น แต่ต้องระวังเรื่องการสูญเสียข้อมูลและ Overflow