關於原語:當我從較小類型轉換爲較大類型時,轉換是隱式的,當我從較大類型轉換爲較小類型時,我需要顯式轉換原語,這由於數據丟失而變得清晰。但有一些我不明白。當我在某些情況下(字節和短)向上或向下轉換爲char時,雖然字節(8位)適合字符(16位),但我總是需要明確地向兩個方向投射?爲什麼我需要在字節和short上顯式地轉換char原語?
(見http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)
見我的例子...
public class CastingTest
{
public static void main(String[] args)
{
//casting from smaller to bigger types
short c = 13;
int d = c;
byte f = 34;
short g = f;
byte h = 20;
long i = h;
byte var03 = 6;
double var04 = var03;
//casting from bigger to smaller types
int j = 12;
short k = (short)j;
long m = 56;
int n = (int)m;
double o = 19;
short p = (short)o;
//not possible without explicit cast, but why?
byte var01 = 3;
char var02 = (char)var01;
short var05 = 5;
char var06 = (char)var05;
char var07 = 'k';
short var08 = (short)var07;
}
}
第二條語句並不完全正確:「float f =(int)i」不需要轉換,但它可能是有損轉換。目標類型的值範圍可能會因價值超過或下溢而需要轉換的轉化。與「損失」無關。 – Durandal