CodeGym /จาวาบล็อก /สุ่ม /การหล่อประเภท Java
John Squirrels
ระดับ
San Francisco

การหล่อประเภท Java

เผยแพร่ในกลุ่ม

Type Casting ใน Java คืออะไร?

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

เหตุใดจึงต้องมีการหล่อแบบ?

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

ประเภทของ Casting ประเภท Java

การหล่อประเภทใน Java มีสองประเภท
  1. การหล่อแบบขยาย - หรือที่เรียกว่าการหล่อแบบโดยนัยหรือแบบอัตโนมัติ
  2. การหล่อแบบแคบลง - หรือที่เรียกว่าการหล่อแบบชัดเจนหรือแบบแมนนวล

การหล่อแบบขยับขยาย

การขยาย 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 ค่าถ่าน:

คำอธิบาย

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

บทสรุป

ในตอนท้ายของบทความนี้ เราหวังว่าคุณจะคุ้นเคยกับ Java Type Casting โดยละเอียดแล้ว คุณได้เรียนรู้การพิมพ์ดีดสองประเภทใน java แล้ว คุณยังได้เรียนรู้วิธีการส่งประเภทข้อมูลที่ไม่เข้ากันด้วยตนเองโดยใช้การจำกัดประเภทการพิมพ์ คุณสามารถลองใช้ประเภทข้อมูลอื่นๆ ผสมกันด้วยค่าที่แตกต่างกันได้ด้วยตัวเองเพื่อทำความเข้าใจในเชิงลึกมากขึ้น ฝึกฝนต่อไปเพื่อควบคุมแนวคิดที่ลึกซึ้งยิ่งขึ้น ถึงตอนนั้น จงเติบโตและเปล่งประกายต่อไป!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION