JAVAのオペランドと演算子
変数に代入する書式は、通常の計算式のように書きます。
a = b + c;
このように書けば、変数aにbとcを加算した結果の値が代入されます。
この、=や+を演算子、それ以外の変数などの値を非演算子(オペランド)といいます。
オペランド
オペランドには以下のような種類があります。
リテラル
- 整数(int、byte、shortなど)
- 整数で末尾にL(l)が付く(long)
- 少数(double)
- 少数で末尾にF(f)が付く(float)
- 真偽値(boolean)
- 文字(char:シングルクォーテーションで囲う)
- 文字列(string:ダブルクォーテーションで囲う)
変数
変数宣言をした文字または文字列です。
詳しくは「JAVAで変数を使う:変数宣言と変数の型」を参照。
定数
定数宣言をした変数です。
詳しくは「JAVAで定数を定義する」を参照。
命令の実行
命令の実行とは、JAVAがあらかじめ用意しているメソッドなどを用いてプログラムに処理をさせることです。
例えば、先にprintln()メソッドを紹介しました。println()メソッドを使うには、以下のように書きます。
System.out.println(“表示内容”)
このようにJAVAで用意されている命令文(メソッド)はたくさんあり、そのときどきで必要なものを使い分けます。
演算子
JAVAで使用する演算子には以下の種類があります。
- 算術演算子
- 単項マイナス演算子
- インクリメント、デクリメント演算子
- ビット演算子
- シフト演算子
- 代入演算子
- 関係演算子
- 論理演算子
- 条件演算子
算術演算子
足し算や掛け算を行ういわゆる四則演算で使う演算子です。
+ |
足し算 |
a + b = 7 |
– |
引き算 |
a – b = 3 |
* |
掛け算 |
a * b = 10 |
/ |
割り算 |
a / b = 2 |
% |
割り算の余り |
a % b = 1 |
※上記の例はa = 5、b = 2のときの計算結果。
単項演算子
その変数に含まれる数字の正負だけを変更します。
+ |
正負の変更なし |
+a |
– |
正負を反転する |
-a |
※+は特に変更しないので使うことはまずありません。
インクリメント、デクリメント演算子
数値を1だけ増やしたり減らしたりするための演算子です。
++ |
値を1増やす |
a++、++a |
— |
値を1減らす |
a–、–a |
前置と後置の違い
インクリメント、デクリメント演算子は書き方によって若干振る舞いが異なります。例えばa=1のとき、
b = ++a; // a = 2、b = 2
b = a++; // a = 1、b=2
上のように、代入した場合にbの値の結果に違いが出ます。
前置(++a)の場合には、まず先にaに1を足して、その結果である2をbに代入します。
後置(a++)の場合には、まず先にbにaを代入して、その後aに1を足します。
ビット演算子
ビット演算子とは整数型の数値をビット単位で演算する演算子です。
通常、整数は10進数で表しますが、ビット演算では2進数で考えます。
例えば10進数の3は2進数では10、4は11になります。このように2進数ではすべての値を1か0で表します。この1桁をビットと呼びます。
ビット演算子は、このビットに対して処理を行います。
& |
ビットAND |
両辺のビットを比較し共に1のときに1 |
| |
ビットOR |
両辺のビットを比較しいずれかが1のとき1 |
^ |
ビットXOR |
両辺のビットを比較しビットの値が異なる場合に1、同じ場合は0 |
~ |
ビット反転(ビットNOT) |
右辺のビットを反転させる。1のときは0、0のときは1 |
シフト演算子
シフト演算子は、整数型の数値のビットを指定方向に移動させる演算子です。
<< |
左辺のビットを右辺のビットだけ左にシフトし右端は0で埋める |
>> |
左辺のビットを右辺のビットだけ右にシフトし左端は最上位ビットと同じ符号で埋める |
>>> |
左辺のビットを右辺のビットだけ右にシフトし左端は0で埋める |
代入演算子
代入演算子は、右辺の値を左辺に代入する際に使います。
= |
右辺の値を左辺に代入 |
+= |
右辺の値を左辺に足して左辺に代入 |
-= |
右辺の値を左辺から引いて左辺に代入 |
*= |
右辺の値を左辺に掛けて左辺に代入 |
/= |
右辺の値で左辺を割って左辺に代入 |
%= |
右辺の値で左辺を割った余りを左辺に代入 |
&= |
右辺の値で左辺を論理積演算して左辺に代入 |
|= |
右辺の値で左辺を論理和演算して左辺に代入 |
^= |
右辺の値で左辺を排他的論理和演算して左辺に代入 |
<<= |
右辺の値だけ左辺のビットを左にシフトして左辺に代入(右端は0で埋める) |
>>= |
右辺の値だけ左辺のビットを右にシフトして左辺に代入(左端は最上位ビットと同じ符号で埋める) |
>>>= |
右辺の値だけ左辺のビットを右にシフトして左辺に代入(左端は0で埋める) |
関係演算子
関係演算子は左右のオペランドを比較する場合に使います。
< |
左辺が右辺より小さければ真、そうでなければ偽 |
> |
左辺が右辺より大きければ真、そうでなければ偽 |
<= |
左辺が右辺以下であれば真、そうでなければ偽 |
>= |
左辺が右辺以上であれば真、そうでなければ偽 |
== |
左辺と右辺が等しければ真、そうでなければ偽 |
!= |
左辺と右辺が等しくなければ真、そうでなければ偽 |
論理演算子
複数の条件を評価したい場合には論理演算子を使います。
&& |
論理積 |
両辺が真のとき真を返し、それ以外は負を返す |
|| |
論理和 |
両辺のうち少なくとも一つが真であれば真、それ以外は負 |
! |
論理否定 |
右辺が真ならば負、右辺が負ならば真を返す |
条件演算子
条件 ? 式A : 式B
条件を提示して、その条件が真(正しければ)式Aを実行し、偽(間違っていれば)式Bを実行します。
例
int a = 10;
char b;
b = a <10 ? ’10より下’ : ’10以上’;
Sytem.out.println(b);
実行結果は「10以上」と表示されます。
if文を演算子で書いたようなものです。
条件演算子はif文よりも簡素に書くことができるのでコードをすっきりと短くすることができる代わりに、if文よりもコードが読みにくくなるので、あまり使わない方がよいともされています。
関連記事
Eclipseで分離したウィンドウを元に戻す
Eclipseを使って、ウィンドウを分離する場合には、分離したいウィンドウのバーをクリックして、アプリケーション外に移動します。 分離したウィンドウを結合する 分離したウィンドウを元に戻すには、「ウィ…続きを読む
JAVAの予約語
プログラム言語で予め使われている名前、たとえば変数の型を示す名前などは、変数名やクラス名として宣言することができません。これらの名前を予約語といいます。 予約語一覧 abstract(修飾子) ass…続きを読む
JAVAのローカル変数とグローバル変数
変数には、その有効範囲が定められています。 この有効範囲のことをスコープと言います。 スコープ内では変数を利用できますが、スコープ外ではその変数は存在しないことになり、利用することができません。 ロー…続きを読む
JAVAで定数を定義する
JAVAでは変数を宣言した場合、変数の内容は代入する値によって変わっていきます。 しかし、プログラム上、内容を変更したくない変数がある場合には、変数宣言の前に「final」と記述します。 final …続きを読む
JAVAで変数を使う:変数宣言と変数の型
変数とは、プログラム内で利用される「値」を入れるための「器」です。 変数は一定の規則に従えば、任意の名前を付けることができます。 変数はどのように使うのかというと、例えば、Hensuという名前を変数を…続きを読む
JAVAのコメントアウト
コメントアウトとは、プログラムには影響しないただの「メモ」書きのことです。たいていのプログラム言語にはコメントを書くための書式がありますが、言語によって書き方が異なります。今回はJAVAでコメントを書…続きを読む
JAVAのループ処理:do~while文
JAVAのループ文には、while文というものがあります。 while文は、条件式に合致している間、処理を続けるというものです。while文は、まず条件を判定して、その後に処理を行います。 これに対し…続きを読む
JAVAの多次元配列
多次元配列とは、配列変数の要素の表現がHareitsu[0]であるのに対し、Hairetsu[0][0]と表すことができる配列変数です。 多次元配列の用途 多次元配列を使うと、ゲームで言うならばマップ…続きを読む
JAVAのエスケープシーケンス
例えば、以下のように、ダブルクォーテーションを出力したい場合には、どのように書けばいいでしょうか。 System.out.println(“””); 上のように書い…続きを読む
Eclipseを使ってJAVAで”Hello World”を表示する
統合開発環境(IDE)であるEclipseを使ってJAVAプログラミングを練習していきます。第一弾は、基本中の基本である、「Hello World」を表示する、というものです。 Eclipseの使い方…続きを読む