"และตอนนี้สำหรับส่วนที่น่าสนใจที่สุด ฉันจะบอกคุณเกี่ยวกับการแปลงประเภท ตัวแปรไม่สามารถเปลี่ยนประเภทได้ แต่มีที่ที่คุณสามารถแปลงประเภทได้ สถานที่นั้นคือการดำเนินการกำหนด "

"คุณสามารถกำหนดตัวแปรประเภทต่างๆ ให้กันและกันได้ ในการทำเช่นนั้น ค่าของตัวแปรหนึ่ง (ของประเภทใดประเภทหนึ่ง) จะถูกแปลงเป็นค่าของอีกประเภทหนึ่ง และกำหนดให้กับตัวแปรอีกประเภทหนึ่ง "

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

"ต่อไปนี้คือประเภทที่จัดเรียงตามขนาด 'ตะกร้า':"

การแปลงประเภท

"เพียงไม่กี่ความคิดเห็น:

1. ตะกร้าของ ถ่านมีขนาดเท่ากับของสั้น แต่คุณไม่สามารถเคลื่อนย้ายสิ่งของได้อย่างอิสระจากที่หนึ่งไปยังอีกที่หนึ่ง เมื่อคุณย้ายค่าจากshortเป็นcharค่าที่น้อยกว่า 0 จะสูญหายไปเสมอ เมื่อคุณย้ายค่าจากถ่านไปสั้น ค่าที่มากกว่า 32,000 จะหายไป

2. เมื่อคุณแปลงจำนวนเต็มเป็นตัวเลขเศษส่วน ตัวเลขที่มีนัยสำคัญน้อยที่สุดของตัวเลขอาจถูกโยนทิ้งไป อย่างไรก็ตาม สิ่งนี้ยอมรับได้ เนื่องจากจุดประสงค์ของเลขเศษส่วนคือการเก็บค่าโดยประมาณ"

" เมื่อทำการแปลงให้แคบลง เราต้องบอกคอมไพเลอร์อย่างชัดเจนว่าเราไม่ได้ทำข้อผิดพลาด: เรากำลังละทิ้งส่วนหนึ่งของตัวเลขโดยตั้งใจ เราใช้ตัวดำเนินการ cast ( เช่นชื่อประเภทในวงเล็บ ) เพื่อดำเนินการนี้"

"นี่คือวิธีที่คุณควรกำหนดตัวแปรประเภทต่างๆ:"

รหัสจาวา คำอธิบาย
byte a = 115;
int b = a;
ขยายการแปลงดั้งเดิม ทุกอย่างยอดเยี่ยม
int c = 10000;
byte d = (byte) c;
การแปลงดั้งเดิมให้แคบลง เราต้องระบุอย่างชัดเจนว่าควรละทิ้งไบต์พิเศษ
int c = 10;
byte d = (byte) c;
การแปลงดั้งเดิมให้แคบลง เราต้องระบุอย่างชัดเจนว่าควรละทิ้งไบต์ที่เกินมา แม้ว่าจะมีค่าเท่ากับ 0 ก็ตาม
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
เมื่อกำหนดให้กับโฟลต การแปลงดั้งเดิมที่กว้างขึ้นจะเกิดขึ้น เมื่อกำหนดทศนิยมให้กับ long การแปลงดั้งเดิมที่แคบลงจะเกิดขึ้น จำเป็นต้องมีตัวดำเนินการแคสต์
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
จำกัดการแปลงในการดำเนินการมอบหมายทั้งหมด ยกเว้นบรรทัดแรก การแปลงเหล่านี้ต้องการให้เราระบุประเภทการแปลงอย่างชัดเจน

" ต้องใส่ ตัวดำเนินการคาสต์ก่อนตัวเลข/ตัวแปร เมื่อใดก็ตามที่ส่วนหนึ่งของตัวเลขจะถูกละทิ้ง หรือเมื่อเกิดการแปลงแบบดั้งเดิมที่แคบลง ตัวดำเนินการคาสต์จะมีผลเฉพาะกับตัวเลข/ตัวแปรที่ตามมาโดยตรงเท่านั้น"

รหัสจาวา คำอธิบาย
float f = 10000;
long l = (long) f * f;
มีเพียงหนึ่งในสองตัวแปรเท่านั้นที่ส่งไปยัง long: การคูณของ long และ a float เท่ากับ float
float f = 10000;
long l = (long) (f * f);
การแสดงออกทั้งหมดมีความยาว

"ฉันเห็น."