未分類

式と演算子

投稿日:

式のしくみを知る

Javaの「式」の多くは、

演算子(演算するもの)とオペランド(演算の対象)

を組み合わせてつくられています。たとえば、「1 + 2」の場合は、「+」が演算子、「1」と「2」がオペランドにあたります。

「1+2」という式を記述しました。計算式は()でくくっておきましょう。実行結果は「3」が出力されます。次も同じように「3*4」という式で記述しています。これは「3×4」という式を意味しています。

いろいろな演算をする

演算の対象となるものは、1や2といった一定の数ばかりではありません。

7行目と13行目で変数をオペランドとして使った式を記述しています。

まず、sum = num1 + num2は、変数num1と変数2に記憶されている「値」どうしのたし算を行い、その値を変数sumに代入する

次に、num1 = num1 + 1は、変数num1の値に1をたし、その値を再度num1に代入するという式です。

=記号は「等しい」という意味ではなく、「値を代入する」という機能をもつものでした。

いろいろな演算子

主な演算子の種類を次の表に示します。

  • +  加算(文字列連結)     ++  インクリメント
  • -  減算            –   デクリメント
  • *  乗算           >  より大きい
  • /  除算           >= 以上
  • % 剰余           < 未満
  • + プラス(単項)        <= 以下
  • - マイナス(単項)       == 等価
  • ~ 補数(単項)         !=非等価
  • & ビット論理積        instanceof 型比較
  • | ビット論理和        ! 論理否定(単項)
  • ^ ビット排他的論理和     && 論理積
  • << 左シフト         || 論理和
  • << 右シフト         ? : 条件
  • >>> 符号なし右シフト   new オブジェクト生成

最後の「%演算子」(剰余演算子)という演算子はあまり使わないと思います。

num1 ÷ num2 = ●…あまり×

という計算で「×」の値です。つまり、あまりの数を求める演算子です。

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

a++;

上記の、++演算子は、インクリメント演算子と呼びます。値を1増やす演算のことです。つまり、下記のコードと同じ処理を行っていることになります。

a = a + 1;

一方、-を2つ続けた「–」はデクリメント演算子と呼びます。

b–;

下記のコードと同じ意味です。

b = b – 1;

インクリメント・デクリメントの前置と後置

インクリメント・デクリメント演算子は、オペランドの前と後ろのどちらにでも記述することができます。つまり、変数aをインクリメントする場合は、

  • a++
  • ++a

という2つの書き方ができるのです。後ろに置く場合と前に置く場合、変数を1増やすだけならどちらの書き方でも同じです。

しかし、表記の違いによってプログラムの実行結果が異なる場合もあります。

ここでは、後置インクリメント演算子を使ってみました。これを、前置インクリメント演算子にすると、実行結果が異なります。7行目のコードを

b = ++a;に変更し実行してみましょう。

はじめに使った後置インクリメント演算子では、変数bにaの値を代入してから → aの値を1増やす

という処理でしたが、前置インクリメント演算子は、aの値を1増やしてから → 変数bにaの値を代入する

という逆の処理が行われます。このために、出力される変数bの値が異なるのです。

代入演算子

代入演算子は = だけではなく、= とほかの演算を組み合わせたバリエーションもあります。次の表に一覧にしています。

  • +=            加算代入
  • -=            減算代入
  • *=            乗算代入
  • /=            除算代入
  • %=           剰余代入
  • &=            論理積代入
  • |=            論理和
  • ^=            排他的論理和代入
  • <<=           左シフト代入
  • >>=           右シフト代入
  • >>>=          符号なし右シフト代入

これらの代入演算子は、ほかの演算と代入を同時に行うための複合的な演算子となっています。

a += b;     a+bの値をaに代入します。

変数aの値に変数bの値をたし算し、その値を変数aに代入するという演算を行います。+演算子と=演算子の機能をあわせた機能をもっています。

ためしに、+=演算子を使ってコードを記述してみましょう。

入力した3つの数値のたし算の結果を、+=演算子を使って順番に変数sumに格納しています。

シフト演算子

「<<」、「>>」、「>>>」という記号で示したシフト演算子とは、

数値を2進数であらわし左か右に指定数だけずらすことです。

「5<<2」という左シフト演算を行いましょう。

  •   5  0000000000000101
  • <<2
  •  20  0000000000010100

つまり、5<<2は20となります。一方、>>演算子は、右シフト演算と呼ばれる演算です。

>>演算子は、右辺で指定した桁数を右にずらし、はみだした桁数だけ正の数ならば0、負の数ならば左端から1を入れる

5>>2では次のようになります。

  •   5   0000000000000101
  • >>2
  •   1   0000000000000001

正負にかかわらず左端から0を入れる右シフト演算を行う>>>があります。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

for文のしくみを知る

激レアキャラをゲットするまでは・・・→レアガチャを引き続ける 私たちの生活に朝起きる、歯を磨く、朝食を食べる、学校に行く・・・といった「繰り返し処理」を行っています。 Javaでは、このような繰り返し …

サンプルイメージ

配列のしくみ①

プログラムの中ではたくさんのデータを扱う場合があります。例えば、50体のキャラクターの攻撃力や体力や属性を扱うプログラムを考えてみましょう。 たくさんの変数が登場するので、コードが複雑で読みにくくなり …

プログラム

プログラムのしくみ

ワープロ、表計算ソフトのような「プログラム」を使うことは、文字を表示し、書式を整え、印刷するといった特定の「仕事」をコンピューターに指示し、処理させないといけません。 プログラミング言語 Java コ …

サンプルイメージ

Android Studioインストール&日本語化

      まずAndroid StudioとGoogle検索して、1番上の項目を選択してください。 下記の画面になるので、最新バージョンをダウンロードしましょう。 DOWNLOAD ANDROID …

サンプルイメージ

画面への出力

前回画面に文字列を出力するコードを学習しました。「System.out.println・・・」という言葉に注目してください。この「System.out」とは、 標準出力(standard output …