やあ!今日は非常に重要なトピック、つまり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 で割ります。これにより、2 で割り切れない余分な「末尾」(1 つ) を含む 16 が得られます。この「末尾」は、「除算の剰余」演算の結果です。Java は、(数学と同様に)比較/関係演算子も実装します。おそらくあなたも学校でよく知っているでしょう。
==
( )に等しい>
( )より大きい<
( )未満>=
( )以上<=
( )以下- 等しくありません (
!=
)
==
ではなく と書かれます=
。 Java では、single は代入=
演算子であり、変数に数値、文字列、または別の変数の値を 割り当てるときに使用されます。

public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// We expect false to be displayed
}
}
コンソール出力: 999 おっと! これは明らかに私たちが期待した結果ではありません。これはまったく異なるデータ型です。ブール値が表示されると予想していましたが、数値が表示されました。すべては、比較の代わりに括弧内で代入演算子を使用したためです。 (999)の値が変数 に代入され、 の値が表示されました。正しい方法は次のとおりです。 x=y
y
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
単項演算子。
これらは、「 1」を意味する「uno」という単語から「単項」と呼ばれます。以前の演算子とは異なり、複数の数値ではなく 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 for the 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 C++ 言語について聞いたことがある場合は、この表記に馴染みがあるかもしれません。その作成者は、「C++ は C 言語の拡張である」という考えを伝えるためにこの興味深い名前を使用しました。 Notepad の人気のある改良版は Notepad++ と呼ばれます。 ここで重要な点があります。インクリメント演算子とデクリメント演算子には、 postfixとprefixの 2 種類があります。 x++
- 後置 ++x
- 接頭辞 プラス/マイナスを数字の前に置くか後ろに置くかという基本的な違いは何ですか? 次の例で見てみましょう。
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
コンソール出力: 999 何かがおかしい! 1 ずつ増やしてx
、新しい値を変数 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 ) を含む演算もあります。これらの操作は論理演算子を使用して実行されます!
- 論理否定。ブール値の値を反転します
public class Main {
public static void main(String[] args) {
boolean x = true;
System.out.println(!x);
}
}
コンソール出力: false
&&
- 論理積。両方のオペランドが 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 オペランドの 1 つ (すなわち ) が false であるため、最初の操作の結果は false になります100 > 200
。true を返すには、&&
演算子は両方のオペランドが true である必要があります (2 行目の場合と同様)。
||
- 論理和。オペランドの少なくとも 1 つがtrue の場合、true を返します。
public class Main {
public static void main(String[] args) {
System.out.println(100 > 10 || 100 > 200);
}
}
コンソール出力: true 式は100 > 200
依然として false ですが、OR演算子の場合、最初の部分 ( ) が true であれば十分です100 > 10
。
GO TO FULL VERSION