Developer

2022.08.31
Lv1

【はじめてのJava】演算子編 ~復習問題~

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


演算子 ~復習問題~

プログラミング内で演算を行いたいときに用いられる記号である「演算子」について、JavaSilverにおいてよく狙われるポイントを解説していきます。

今回は、これまで扱ってきた演算子を複合的に用いた復習問題を扱います。

目次


演算子のおさらい

演算子は、プログラミングにおいて演算処理を行う際の記号のことでした。

演算子は大きく3種類に分類が可能です。
(1)右辺の値を左辺に代入する代入演算子(=)                           記事はこちら
(2)四則演算を行う算術演算子(+,-,∗,%,/)       加算(+)・減算(-)・乗算(∗)の記事はこちら  
                                                                                         除算・剰余演算(%,/)の記事はこちら
(3)代入演算子と算術演算子を組み合わせて用いる複合演算子            記事はこちら
(4)演算処理の前後に±1を行うインクリメント・デクリメント(++,--)      記事はこちら

それぞれの詳細については、各記事にて紹介してきました!


問題

それでは、さっそく問題を解いてみましょう!

次のプログラムを実行・コンパイルした時の結果として、正しいものを選択しなさい。(1つ選択)

public class Preview{
  public static void main(String[] args){ 
    int x = 8 + 3 * 2;
    int y = 6 - 4 / 2;
    int z = ++x % y++ + x-- * ++y;
    System.out.println("変数zの値は" + z + "です。"); 
  }
} 

A. 92が表示される。
B. 19が表示される。
C.    73が表示される。
D. 93が表示される。
E.    実行時に例外がスローされる。
F.    コンパイルエラーが発生する。


解答

解答 D

>javac Sample.java
>java Sample
変数zの値は93です。

今回の問題を解く上で注意すべきポイントは、2点です!
[1]演算の優先順位
[2]前置・後置でのインクリメント・デクリメントの処理

これらの2点に注意しながら、設問を見ていきましょう!

この問題では、int型変数x,yに対して、四則演算を用いた計算結果を代入し、変数x、yを用いてzを定義し、その結果を出力しています。

まず変数x,yの値を確認しましょう。
xの演算では加算(+)及び乗算(∗)、yの演算では減算(-)及び除算(/)を用いていますが、四則演算では乗算・除算が優先されるというルールがありました!

したがってx,yの値はそれぞれ下記の通りとなります。
int x = 8 + (3 ∗ 2) = 8 + 6 = 14;
int y = 6 - (4 / 2) = 6 - 2 = 4;

次に、このx,yを用いてzを計算します。
zの演算では、前置・後置のインクリメント・デクリメントを1つの式の中ですべて使用しています。
前置ではその数値が演算処理される前に、後置では数値が演算処理された後に。±1を行います。
式を読み進めながら、x,yがそれぞれ現在いくつなのか注意する必要があります。

演算の順序としては、剰余演算・乗算が優先されるので
(1) ++x % y++
(2) x-- ∗ ++y
(3) (1)の結果+(2)の結果 となります。

それぞれ、前置・後置に注意しながら計算すると
(1) (14 + 1) % 4 = 3
この段階では、x=15,y=5
(2) 15 ∗ 6 = 90
この段階では、x=14,y=6
(3) 3 + 80 = 93

となり、解答 D. 93が表示される。が導かれます。


次回の内容

今回は演算子の復習問題を扱いました。
演算子は、プログラム内で計算を行う上で、基礎的な部分ですのでよく覚えておきましょう。
次回からは、基本構文編としていよいよ構文の学習の説明を行い、条件分岐から学びます!

次回記事はこちら


はじめてのJavaシリーズの記事一覧はこちら
シリーズ全記事一覧
環境構築編
プログラムの作り方編
データ型と変数編
演算子編


java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら