Javaの「+ =」と「= +」の違い

「+ =」と「= +」の違い、例を参照

最初:

		float m=1.0f;
		int n=1;
//		Eclipse会检查出错误,Type mismatch: cannot convert from float to int
//		System.out.println(n=n+m);
		System.out.println(n+=m);

最初の出力はエラーを報告し(注釈付き、nはint、mはfloat、暗黙の変換は実行不可能)、
2番目の出力はエラーを報告しません(+ =は変換を強制します)

二番目

		short m=1;
		int n=1;
		System.out.println(n=n+m);
		System.out.println(n+=m);

エラーは報告されません(すべて低から高へ、暗黙的に転送できます)

第3

		short m=1;
		int n=1;
//		System.out.println(m=m+n);
		System.out.println(m+=n);

最初の出力はエラーを報告します(注釈付き、mは短い、nはint、暗黙の変換は機能しません)
2番目の出力はエラーを報告しません(+ =強制変換)

結論:Javaでは、高型を低型に暗黙的に割り当てることはできません。転送する場合は、強制的に転送する必要があります

タイプレベル(画像ソースhow2j):

ここに画像の説明を挿入します

ロングとフロートの関係

ここに画像の説明を挿入します

より高度なフロートの理由

https://blog.csdn.net/weixin_44296929/article/details/106902749

第4

		String m="1";
		int n=1;
		
		//The operator += is undefined for the argument type(s) int, String
//		System.out.println(n+=m);
		//Type mismatch: cannot convert from String to int
//		System.out.println(n=n+m);
		
		System.out.println(m+=n);
		System.out.println(m=m+n);
	

最初の2つのコメントはすべて間違っていますが、
後の2つは問題ありません。
2番目のものが強制的に転送されないのはなぜですか?文字列はクソ基本タイプではないので!

おすすめ

転載: blog.csdn.net/root_zhb/article/details/108404904