「+ =」と「= +」の違い、例を参照
最初:
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番目のものが強制的に転送されないのはなぜですか?文字列はクソ基本タイプではないので!!!