1

(i += 1)と同等ですi = i + 1

次のような乗算を使用して、上記のようなものを作成することは可能ですか?

(i *= 1)i = i * 1

doubleとして宣言して試しましたが、結果で0.0の値を取得し続けますか?

4

4 に答える 4

3

ゼロを1倍しているようです。

0 * 1 = 0

于 2012-07-15T15:57:27.300 に答える
2

最初に宣言しますdouble i = 1.0;(またはint i = 1;10進値が必要ない場合)。ゼロを掛けているようです。もちろん、他の場所の値を変更しない限り、i時間1は常になります。1i

それ以外は、とほぼ同等であることに注意i *= 1くださいi = i * 1。最初の形式はJava言語仕様のセクション§5.1.3に従って暗黙の変換を実行するため、悪魔は詳細にあります。

複合代入式は、実行する計算の結果を左側の変数の型に自動的にキャストします。結果のタイプが変数のタイプと同じである場合、キャストは効果がありません。ただし、結果の型が変数の型よりも広い場合、複合代入演算子はサイレントナローイングプリミティブ変換を実行します

于 2012-07-15T15:59:55.943 に答える
1

i乗算する前に割り当てられた値(ゼロ以外)がない場合、0*1は0に等しくなります。

于 2012-07-15T15:59:30.317 に答える
1

クラススコープで宣言したように、デフォルト値のdoubleを取ります...

これを試して...

class Test implements TestInterface {


        public static void main(String[] args){
            double i = 1;
            System.out.println(i *= 1);
        }
     }
于 2012-07-15T16:00:43.950 に答える