Type Casting ใน Java คืออะไร?
ชนิดข้อมูล คือชุดของค่าที่กำหนดไว้ล่วงหน้าซึ่งระบุประเภทของค่าที่สามารถเก็บไว้ในนั้นพร้อมกับการดำเนินการที่สามารถดำเนินการได้เหตุใดจึงต้องมีการหล่อแบบ?
Java มีประเภทข้อมูลดั้งเดิมที่แตกต่างกันซึ่งต้องการพื้นที่ในหน่วยความจำต่างกัน ซึ่งอาจทำให้เกิดปัญหาความเข้ากันได้ในขณะที่กำหนดค่าประเภทข้อมูลหนึ่งให้กับอีกประเภทหนึ่ง หากประเภทข้อมูลเข้ากันได้อยู่แล้ว คอมไพเลอร์จะทำการพิมพ์แบบอัตโนมัติ ดังนั้นการพิมพ์ดีดจะช่วยแก้ปัญหาความเข้ากันได้ที่สำคัญเมื่อต้องจัดการกับข้อมูลประเภทต่างๆ ในโปรแกรมของเราประเภทของ Casting ประเภท Java
การหล่อประเภทใน Java มีสองประเภท- การหล่อแบบขยาย - หรือที่เรียกว่าการหล่อแบบโดยนัยหรือแบบอัตโนมัติ
- การหล่อแบบแคบลง - หรือที่เรียกว่าการหล่อแบบชัดเจนหรือแบบแมนนวล
การหล่อแบบขยับขยาย
การขยาย typecasting ตามชื่อหมายถึงหมายถึงการขยายประเภทข้อมูลที่เล็กลงให้เป็นประเภทข้อมูลที่ใหญ่ขึ้น เราดำเนินการพิมพ์ดีดนี้เมื่อเราต้องการแปลงประเภทเล็กเป็นประเภทใหญ่ ชนิดข้อมูลจะต้องเข้ากันได้ ไม่มีการแปลงโดยนัยจากตัวเลขเป็นถ่านหรือประเภทบูลีน ใน Java ประเภทถ่านและบูลีนเข้ากันไม่ได้
ไบต์ -> สั้น -> ถ่าน -> int -> ยาว -> ลอย -> สองเท่า
การหล่อประเภทนี้จะดำเนินการโดยอัตโนมัติโดยคอมไพเลอร์โดยไม่สูญเสียข้อมูลใดๆ โปรแกรมเมอร์ไม่ต้องการทริกเกอร์ภายนอก
ตัวอย่าง
//Automatic type conversion
public class WideningExample {
public static void main(String[] args) {
int i = 100;
System.out.println("int value: " + i);
// int to long type
long l = i;
System.out.println("int to long value: " + l);
// long to float type
float f = l;
System.out.println("int to float value: " + f);
byte b = 1;
System.out.println("byte value: " + b);
// byte to int type
i = b;
System.out.println("byte to int value: " + i);
char c = 'a';
System.out.println("char value: " + c);
// char to int type
i = c;
// prints the ASCII value of the given character
// ASCII value of 'a' = 97
System.out.println("char to int value: " + i);
}
}
เอาท์พุต
ค่า int: 100 ค่า int ถึงค่ายาว: 100 int ถึงค่าทศนิยม: ค่า 100.0 ไบต์: 1 ไบต์ถึงค่า int: 1 ค่าถ่าน: ถ่านถึงค่า int: 97
คำอธิบาย
ในโค้ดด้านบน เราได้แสดงการขยาย typecasting ซึ่งคอมไพเลอร์ทำโดยอัตโนมัติ ก่อนอื่น เรากำหนดค่าให้กับint , byteและchar จากนั้นเรากำหนดค่า int ให้กับ a longและfloat ซึ่งทั้ง สองค่ามีขนาดใหญ่กว่าint นอกจาก นี้เรายังกำหนดค่าไบต์และถ่าน ให้กับ int ทั้งไบต์และถ่านเป็นชนิดข้อมูลที่เล็กกว่าintดังนั้นการแปลงเหล่านี้จึงเป็นการแปลงโดยนัยการหล่อแบบแคบลง
การจำกัดประเภทข้อมูลให้แคบลงตามชื่อหมายถึง หมายถึงการจำกัดประเภทข้อมูลที่ใหญ่กว่าให้แคบลงเป็นประเภทข้อมูลที่เล็กลง เราดำเนินการพิมพ์ดีดนี้เมื่อเราต้องการแปลงประเภทใหญ่เป็นประเภทเล็ก
double -> float -> long -> int -> char -> short -> ไบต์
สำหรับการแคสต์ประเภทนี้ เราจะแทนที่การแปลงเริ่มต้นของ Java โดยการระบุการแปลงของเราเอง เพื่อให้บรรลุเป้าหมายนี้ เราเขียนตัวแปรหรือค่าที่ต้องพิมพ์โดยนำหน้าด้วยประเภทข้อมูลเป้าหมายในวงเล็บ '()' อย่างไรก็ตาม การหล่อประเภทนี้อาจทำให้สูญเสียความแม่นยำได้
ตัวอย่าง
//Manual Type Conversion
public class NarrowingExample {
public static void main(String[] arg) {
// double data type
double d = 97.04;
// Print statements
System.out.println("double value: " + d);
// Narrowing type casting from double to long
// implicitly writing the target data type in () followed by initial data type
long l = (long) d;
// fractional part lost - loss of precision
System.out.println("long value: " + l);
// Narrowing type casting from double to int
// implicitly writing the target data type in () followed by initial data type
int i = (int) l;
// fractional part lost - loss of precision
System.out.println("int value: " + i);
// Narrowing type casting from double to int
// implicitly writing the target data type in () followed by initial data type
char c = (char) i;
// displaying character corresponding to the ASCII value of 100
System.out.println("char value: " + c);
}
}
เอาท์พุต
ค่าสองเท่า: 97.04 ค่ายาว: 97 ค่า int: 97 ค่าถ่าน:
GO TO FULL VERSION