演算子(2)
プログラム内での計算させるための記号を「演算子」といいます。
「演算子」には、「算術演算子」「シフト演算子」などさまざまな「演算子」があります。
これらの「演算子」には優先順位があるので覚えておくといいと思います。
ショートサーキット と 論理演算子
数学の集合と考え方は同じです。 条件が成立していれば真(値は1)、成立していなければ偽(値は0)を返します。
演算子 |
論理 |
説明 |
&& |
AND |
&&は、ANDの式が実行されます。 ただし演算子の左側がfalseになれば、右側は実行されません。
|
|| |
OR |
||は、ORの式が実行されます。 ただし演算子の左側がtrueになれば、右側は実行されません。 |
! |
NOT |
!は、NOT 否定を表します。 |
整数型のビット演算子で使用する |
& |
AND |
両方の変数が整数型の場合は、ビットの演算に使用します。 両方の変数の型がbooleanで無ければなりません。
boolean型を返す式を書いた場合は 必ず演算子の両側が実行されます。 |
| |
OR |
両方の変数が整数型の場合は、ビットの演算に使用します。 両方の変数の型がbooleanで無ければなりません。
boolean型を返す式を書いた場合は 必ず演算子の両側が実行されます。 |
^ |
XOR |
両方の変数が整数型の場合は、ビットの演算に使用します。 両方の変数の型がbooleanで無ければなりません。
boolean型を返す式を書いた場合は 必ず演算子の両側が実行されます。 |
----------------- Logical.java --------------------------
class Logical {
public static void main(String[] args) {
int x;
int y;
int z;
boolean comp01;
x = 1;
y = 2;
z = 3;
comp01 = ((x < y) && (x < z));
System.out.println(" comp01 = ((x < y) && (x < z)) ");
System.out.println(" comp01 = " + comp01);
comp01 = ((x > y) & (x > z));
System.out.println(" comp01 = ((x > y) && (x > z)) ");
System.out.println(" comp01 = " + comp01);
comp01 = ((x < y) & (x < z));
System.out.println(" comp01 = ((x < y) & (x < z)) ");
System.out.println(" comp01 = " + comp01);
}
}
--------実行結果-------------
comp01 = ((x < y) && (x < z))
comp01 = true
comp01 = ((x > y) && (x > z))
comp01 = false
comp01 = ((x < y) & (x < z))
comp01 = true
論理演算子も、よく使用しますので、必ず覚えておきましょう。
ここでは、数学での集合の説明は、しませんが基本情報処理の試験などにもよくでますので、理解しといたほうがいいです。
シフト演算子(ビット操作演算子)
ここで簡単なプログラムを書いてみましょう。
---------------- Main01.java --------------------------------
class Main01 {
public static void main(String[] args) {
int x;
int y;
int z;
x = 100000;
y = 100000;
System.out.println("x = " + x);
System.out.println("y = " + y);
z = x + y;
System.out.println("x + y = " + z);
z = x * y;
System.out.println("x * y = " + z);
}
}
----------------実行結果-----------------------
x = 100000
y = 100000
x + y = 200000
x * y = 1410065408
再帰代入演算子
右辺に評価される変数自身に対して代入します。
プログラムでは、頻繁に使用しますので覚えましょう。
再帰代入演算子 | 計算式 |
y += 1; | y = y + 1; |
y -= 1; | y = y - 1; |
y *= 1; | y = y * 1; |
y /= 1; | y = y / 1; |
y %= 1; | y = y % 1; |
---------------Reflexive.java------------------
class Reflexive {
public static void main(String[] args) {
int x;
int y;
x = 1;
y = 2;
System.out.println("x = " + x);
System.out.println("y = " + y);
x += 1;
y += 1;
System.out.println("x += 1");
System.out.println("y += 1");
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}
----------------実行結果---------------------
x = 1
y = 2
x += 1
y += 1
x = 2
y = 3
|