からしからいし

SEのたまごです。タイピング練習中。からしって辛いよね。

java9/9演算子の種類

今日のjavaです。

 

演算子の種類

 演算子は、四則演算(+ - * /)などのほかにも、単項演算子、文字列連結演算子、インクリメント・デクリメント演算子、代入演算子、シフト演算子などの種類がある。

 

・単項演算子(unary operator)

 単項演算子とは、オペランド(演算されるもの)を1つだけとる演算子

 主な単項演算子は、

 + (プラス(正))

 - (マイナス(負))

 ~ (補数)

 ! (論理否定)

 など。

 例えば、 -5 や、+10 のように使う。

 

・文字列連結演算子

 + は、加算やプラスのほかに、文字列連結演算子としての役割もある。

 例えば、

 int n = 5;

 System.out.println("変数nには、"  + n +  "が代入されています。");

 とすると、

 変数nには5が代入されています。

 と出力される。

 つまり、+ は文字列を連結することができ、オペランドの片方が文字列、もう片方が数値であった場合、数値が文字列に変換され、連結される。

 

・インクリメント・デクリメント演算子

 インクリメント演算子 ++ と、デクリメント演算子 -- がある。

 使い方は、a++; というようにかく。

 これは、値を1増やすという意味で、a = a + 1; とかくのと同じ。

 デクリメント演算子は、a--; とかき、値を1減らすという意味になる。

 この2つの演算子は、オペランドの前にかくことも、後ろにかくこともできる。

 つまり、a++ としても、++a としても良い。

 変数の値を1増やすだけなら同じように使える。

 しかし以下の2つは違う結果になる。

 b = a++;

 b = ++a;

 前者は、b に a を代入してから a の値を1増やしている。

 後者は、a の値を1増やしてから b に a を代入している。

 つまり、はじめに a が 1 だった場合、前者の式の後の b は 1 、後者の式の後の b は 2 になる。

 

・代入演算子

 代入演算子の代表は、= で、これは「左辺の変数に右辺の値を代入する」という意味。

 つまり、a = 1; というのは、a に 1 を代入するという演算。

 他の代入演算子は、= とその他の演算子の組み合わせで、以下のようなものがある。

 += (加算代入)

 -= (減算代入)

 *= (乗算代入)

 /= (除算代入)

 %= (剰余代入)

 &= (論理積代入)

 <<= (左シフト代入)

 などといったものがある。論理和(|)や排他的論理和(^)、右シフト代入(>>)、符号なし右シフト代入(>>>)でも同じようにできる。

 このような組み合された代入演算子は、

 a += b;

 というように使い、

 変数aの値に変数bの値を足し算し、その値を変数aに代入することを意味する。

 つまり、

 a = a+b;

 と同じことができる。これは + の部分を他の記号に変えて、組み合された代入演算子すべてにいえる。

 組み合された代入演算子は、組み合わせて1つの意味をなすので、以下のように間にスペースを空けてかくことができない。

 a +  = b;

 

・シフト演算子

 シフト演算子は数値を2進数で表した場合の桁を、右また左に指定の数だけずらすという意味を表す演算子

 以下のシフト演算子がある。

 << (左シフト演算子

 >> (右シフト演算子

 >>> (符号なし右シフト演算子

 例えば、

 4 << 2;

 としたとき、4は2進数の100であるから、2桁左にずらして、2進数で10000、つまり、式の値は16。

 桁をずらすとき、新しく増えた桁には0を入れ、はみ出たものは気にしない。

 左シフト演算は、数値を2倍、4倍、8倍・・・とする計算ができる。

 コンピュータ内では2進数で数値を扱っているため、シフト演算子は、四則演算より処理が速くなるらしい。

 

 

使える演算子の種類が増えました。

文字列連結演算子によって文字列と数字が連結できるようになったというのが役立ちそうです。

 

今日の内容を使ったコードを書いてみました。

class Sample0
{
 public static void main(String[] args)
 {
  int a = 1;
  int b = 2;
  int c = 5;

  System.out.println("a, b, cはそれぞれ、" + a + "," + b + "," + c + "です。");

  b++;
  System.out.println("bを1増やすと" + b +  "です。");

  b -= a;
  System.out.println("b-aは、" + b + "です。");

  b = c >> a;
  System.out.println("c>>aは、" + b + "です。");
 }
}

 

これは、コンパイルして実行すると、

a, b, cはそれぞれ、1,2,5です。
bを1増やすと3です。
b-aは、2です。
c>>aは、2です。

と表示されます。

 

 

Javaを独習する前に読む本

Javaを独習する前に読む本

 

 

 


にほんブログ村