基本タイプ加減演算タイプ変換問題の検討
923 ワード
まず、次のコードを見てみましょう.
1、i=i+1:i+1はint型であり、short型変数に値を与えるには表示変換が必要である.
2、+=、-=は複合賦値演算子(Compound Assignment Operator)に属し、彼らは賦値演算子であり、彼らは算数の機能を持っているが、賦値演算子の範疇に属するべきで、算術演算子の類に属しない.
Javaでは、複合付与演算子の変換はコンパイラが担当することを規定しています.
これは、+=、-=を使用して変換を表示する必要がない理由です.
3、算術演算子(Arithmetic Operator)
Javaでは、longが関与しない限り、すべての整数の演算子がint型の結果を生成します.したがって
j,kはいずれもbyte型であるが、上記の「すべての整数の算術演算でint型の結果が生じる」というルールに従ってj+k結果はint型である.これによりintをbyteに付与するには強制的に変換する必要がある.
david.wang 2011-03-09
public class Test
{
public static void main(String[] args)
{
short i ;
i = i + 1; //
i += 1; //
byte j = 1; //
byte k = 2;
byte l = j + k; //
}
}
1、i=i+1:i+1はint型であり、short型変数に値を与えるには表示変換が必要である.
2、+=、-=は複合賦値演算子(Compound Assignment Operator)に属し、彼らは賦値演算子であり、彼らは算数の機能を持っているが、賦値演算子の範疇に属するべきで、算術演算子の類に属しない.
Javaでは、複合付与演算子の変換はコンパイラが担当することを規定しています.
これは、+=、-=を使用して変換を表示する必要がない理由です.
3、算術演算子(Arithmetic Operator)
Javaでは、longが関与しない限り、すべての整数の演算子がint型の結果を生成します.したがって
byte l = j + k;
j,kはいずれもbyte型であるが、上記の「すべての整数の算術演算でint型の結果が生じる」というルールに従ってj+k結果はint型である.これによりintをbyteに付与するには強制的に変換する必要がある.
david.wang 2011-03-09