HOME技術JAVAJAVAのオペランドと演算子

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文よりもコードが読みにくくなるので、あまり使わない方がよいともされています。

関連記事

JAVAのパッケージ

パッケージとはクラスのさらに上の概念です。 あるパッケージに属するクラスは、同じ名称であっても別のパッケージのクラスとは別物として扱われます。 「aaa」パッケージの「cde」というクラスと、 「bb…続きを読む

JAVAのループ処理:while文

ある条件を満たしている間は、決められた処理を繰り返す、という命令文が、ループ処理です。 JAVAのループ処理には以下の2つがあります。 while文 do~while文 for文 今回はwhile文に…続きを読む

JAVAの配列変数の宣言

配列変数とは、変数を1つのグループとして使う方法です。 変数名は同じだけれど、[1]、[2]、[3]…とその変数の要素を設定できます。 JAVAでは配列変数を以下のように表します。 int[] Hai…続きを読む

JAVAのループ処理:do~while文

JAVAのループ文には、while文というものがあります。 while文は、条件式に合致している間、処理を続けるというものです。while文は、まず条件を判定して、その後に処理を行います。 これに対し…続きを読む

JAVAでクラスを生成する

JAVAでは、一つのソースファイル(.javaファイル)ごとに最低でも1つのpublicクラスが必要になります。 publicクラスは、1つのソースファイルに1つしか設定できません。 publicでな…続きを読む

JAVAでメソッドをつくる

JAVAには既に存在するメソッドのほかに、自分でメソッドを作ることができます。 自分でメソッドを作る際のルールは以下の通りです。 修飾子 戻り値の型 メソッド名(引数) { 処理 } 修飾子とは 修飾…続きを読む

JAVAのループ処理:for文

JAVAにおけるループ処理の一つとして、while文のほかに、for文というのがあります。 これはある条件を満たしている場合は決められた処理を繰り返すというところまではwhile文と一緒ですが、条件を…続きを読む

JAVAの予約語

プログラム言語で予め使われている名前、たとえば変数の型を示す名前などは、変数名やクラス名として宣言することができません。これらの名前を予約語といいます。 予約語一覧 abstract(修飾子) ass…続きを読む

WindowsにJAVA実行環境「Pleiades」をインストールする

プログラミングを学習するためにJAVAでアプリケーションをつくることにしました。手始めに、Windows 10にJAVAの実行環境をつくります。 Windows 10にJAVAの開発環境をつくる JA…続きを読む

Eclipseで分離したウィンドウを元に戻す

Eclipseを使って、ウィンドウを分離する場合には、分離したいウィンドウのバーをクリックして、アプリケーション外に移動します。 分離したウィンドウを結合する 分離したウィンドウを元に戻すには、「ウィ…続きを読む