こんにちは!今日は非常に重要なトピック、つまりJava の数値演算について見ていきます。プログラミングではあらゆるところに数字が登場します。学校のカリキュラムを詳しく見てみると、コンピュータ上のすべての情報が、バイナリ コードとも呼ばれる数値形式 (0 と 1 の組み合わせ) で表現されていることを思い出すでしょう。 プログラミングでは数値に対する演算が非常にたくさんあるので、それらの中で最も重要なものを例を挙げて見ていきます :)
算術演算
最も単純な算術演算から始めましょう。これらは、よく知られている加算 (+ 記号)、減算 (-)、乗算 (*)、および除算 (/) です。public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
コンソール出力:
1032
966
32967
30
これはすべてすでに使用済みです。それらに演算を追加できます%
(除算の残り)。
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
コンソール出力:
1
この例では、33 を 2 で割ります。その結果、16 が得られ、2 - 1 で割り切れない余分な「尾」が残ります。この「尾」は「除算の余り」演算の結果になります。Java (および数学) は比較演算子を実装します。あなたもおそらく学校で彼らを知っているでしょう。
- に等しい (
==
) - もっと (
>
) - 少ない (
<
) - 以上 (
>=
) <=
( )以下- 等しくありません (
!=
)
==
、記号 1 つではなく、と書きます=
。Java の単位記号は=
代入演算子であり、変数に数値、文字列、または別の変数の値が割り当てられます。
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// expect false to be printed to the console
}
}
コンソール出力:
999
おっとっと!これは明らかに私たちが期待した結果ではありません。これはまったく異なるタイプのデータです。私たちは を期待していましたboolean
が、数値が得られました。これは、括弧内に比較ではなく代入演算があるためです。 x=y
値y
(999) が変数 に割り当てられx
、それがx
コンソールに出力されました。正しいオプション:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
コンソール出力:
false
これで、2 つの数値が正しく比較されました。:) 代入操作 ( =
) のもう 1 つの特徴は、「連鎖」して実行できることです。
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
コンソール出力:
256
覚えておいてください: 割り当ては右から左に行われます。この式 ( x = y = z
) は次の手順で実行されます。
- y = z、つまり y = 256
- x = y、つまり x = 256
単項演算
それらは「uno」-「one」という言葉から「単項」と呼ばれます。以前のものとは異なり、複数の番号ではなく 1 つの番号で実行されるため、この名前が付けられました。これらには次のものが含まれます。-
単項マイナス。数値の符号を反転します。
public class Main { public static void main(String[] args) { int x = 999; // change the sign for the first time x = -x; System.out.println(x); // change the sign a second time x= -x; System.out.println(x); } }
コンソール出力:
-999 999
単項マイナスを 2 回使用しました。その結果、数値は最初はマイナスになり、その後再びプラスになりました。
-
インクリメント (
++
) とデクリメント (--
)演算では
++
数値が 1 ずつ増加し、演算では--
同じ単位で数値が減少します。public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
コンソール出力:
1000 999
x++
・後置記法 ++x
・前置記法 数字の前後にプラスとマイナスを付ける場合、根本的な違いは何でしょうか?例で見てみましょう:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
コンソール出力:
999
何か問題がありますか! x
1 ずつインクリメントして、変数に新しい値を代入したいと考えましたy
。つまり、y は 1000 に等しいはずです。しかし、結果は異なります - 999 です。それはx
増加しておらず、増加操作が機能しなかったことがわかります。それはどのように機能したか。これを確認するには、最後にコンソールに x を出力してみてください:)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
コンソール出力:
999
1000
実際、これが後置演算がそのように呼ばれる理由です。つまり、後置演算はメイン式の後に実行されます。つまり、私たちのケースでは、 int y = x++;
最初にそれが実行され y = x
(そして変数 y に初期値が割り当てられますx
)、その後にのみ が実行 x++
されます。この動作に満足できない場合はどうすればよいでしょうか? 接頭辞表記を使用する必要があります。
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
この場合、最初 ++x
とその後でのみ 機能しますy = x;
実際のプログラムで間違いを犯さないように、この違いが原因ですべての動作が逆さまになる可能性があるため、この違いはすぐに覚えておく価値があります:)
複合操作
さらに、Java には、いわゆる結合操作があります。これらは 2 つの操作を組み合わせて使用します。- 割り当て
- 算術演算
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
コンソール出力:
1032
x += y
手段x = x + y
。簡潔にするために、続けて 2 つの文字が使用されます。-=
これは、*=
、/=
、 の組み合わせでも機能します。%=
。
論理演算
数値に対する演算に加えて、Java にはブール変数 (true
および )に対する演算もありますfalse
。これらの操作は論理演算子を使用して実行されます
-
!
— 「NOT」演算子。ブール変数の値を反転します。public class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
コンソール出力:
false
-
&&
— 演算子「AND」。true
両方のオペランドが の場合にのみ値を返しますtrue
。public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
コンソール出力:
false true
false
条件の 1 つが false、つまり 100 > 200 であるため、最初の演算の結果は です。演算子&&
が を返すには、true
すべての条件が true (たとえば 2 行目のように) である必要があります。 -
||
— 「OR」演算子。true
少なくとも 1 つのオペランドが true の場合に戻ります。ここで、前の例は動作が異なります。
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
コンソール出力:
true
式 100 > 200 は依然として false ですが、「or」演算子は最初の部分 (100 > 10) が true であることを完全に満たしています。
GO TO FULL VERSION