式の変換の注意事項、およびfinal修飾の変数はJVMによって最適化されます

871 ワード

1 javaでの式の移行に注意
例は次のとおりです.
byte b1=1,b2=2,b3,b6; 
final byte b4=4,b5=6; 
b6=b4+b5; 
b3=(b1+b2); 
System.out.println(b3+b6);

A、出力結果:13、B、b 6=b 4+b 5コンパイルエラーC、b 3=b 1+b 2コンパイルエラーD、運転異常
まず、式の移行には、次のルールに注意してください.
①すべてのbyte,short,char型の値がint型に引き上げられる.
2操作数がlong型であれば、計算結果はlong型である.
3操作数がfloat型であれば、計算結果はfloat型である.
④操作数がdouble型の場合、計算結果はdouble型である.
まず2つのbyteタイプが加算され、自動的にintに昇格し、計算結果もintであるためbyteを強制的に変換する必要があるが、fianlで修飾された変数は変更されず、JVMで最適化され、2つのfinal修飾が加算されると左の変数のタイプに応じて変換され、この2つのfinal変数の最終タイプとなる.
次のコードに従います.
コンパイル実行はすべて通過し、finalintとfinal byteの加算は整形とbyte型でも可能で、強制変換は必要ありません.
 
public static void main(String[] args) {		
	final int a=2;
	final byte a2=3;
	int a3=a+a2;
	byte a4=a+a2;
	System.out.println(a4);				

}

:http://www.bubuko.com/infodetail-1053430.html