“現在是最有趣的部分。我會告訴你類型轉換。變量不能改變它們的類型,但是有一個地方你可以轉換類型。那個地方是賦值操作

“您可以將不同類型的變量相互賦值。這樣做時,一個變量(特定類型)的值被轉換為另一種類型的值並賦值給另一個變量。

“我們可以指出兩種類型的轉換:擴大原始轉換和縮小原始轉換。擴大就像把東西從一個小籃子裡移到一個大籃子裡。過程很普通,也不痛苦。縮小類似於從一個大籃子裡拿出東西並將它們放在一個較小的容器中。當你這樣做時,你可能沒有足夠的空間;你可能不得不扔掉一些東西。

“以下是根據‘籃子’大小分類的類型:”

類型轉換

“只是一些評論:

1. char的籃子和 short 的一樣大,但是你不能自由地將東西從一個移到另一個。當您將值從short移動到char時,小於 0 的值將始終丟失。當您將值從 char 移動到 short 時,大於 32,000 的值將丟失。

2. 當您將整數轉換為小數時,數字的最低有效位可能會被丟棄。然而,這是可以接受的,因為小數的目的是存儲一個近似值。”

在執行縮小轉換時,我們必須明確地告訴編譯器我們沒有犯錯誤:我們是故意丟棄部分數字。 我們使用強制轉換運算符即括號中的類型名稱)來執行此操作。”

“這就是你應該如何分配不同類型的變量:”

Java代碼 描述
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;
分配給浮點數時,會發生擴大的原始轉換。 將 float 分配給 long 時,會發生縮小原始轉換。需要強制轉換運算符。
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
在除第一行之外的所有賦值操作中縮小轉換。這些轉換要求我們明確指出類型轉換。

強制轉換運算符必須放在數字/變量之前,任何時候數字的一部分將被丟棄,或者當發生縮小的原始轉換時。強制轉換運算符只影響直接跟在它後面的數字/變量。”

Java代碼 描述
float f = 10000;
long l = (long) f * f;
兩個變量中只有一個被轉換為長整數:長整數和浮點數的乘積等於浮點數。
float f = 10000;
long l = (long) (f * f);
整個表達式被轉換為 long。

“我懂了。”