未分類

演算子の優先順位

投稿日:

a + 2 * 5  2*5が先に評価されます。

この式では、+演算子と*演算子の2つが使われています。通常の四則演算では、たし算よりかけ算を先に計算します。これは、かけ算の方が

優先順位が高い

からです。Javaの演算子の場合も同じです。  演算子の優先順位は、変更することもできます。通常の数式と同じようにカッコを使って優先的に評価させるのです。次の式では、「a+2」が先に評価されてから、5倍されます。

(a + 2) * 5  カッコ内が先に評価

演算子の優先順位を調べる

System.out.println(“1 + 2は” + (1 + 2) + “です。”);

この()をつけないとどうなるでしょう?次のコードを入力して下さい。

たし算の部分がおかしくなっています。これは、

「1」+「2」を文字列につなぐ

という+演算子が先に行われ、「1+2」の計算よりも前に行われてしまうのです。そこで、「1+2」という数値の計算をするために、この部分を()で囲んで優先順位を上げる必要があるのです。

なお、次の「3*4」の演算は、*演算子の優先順位が高いので、()をつけなくても正しい計算結果が出力されます。

大きなサイズの型に代入する

上記のコードは、int型の変数の値をdouble型の変数に代入しています。一般にJavaでは、

大きなサイズの型の変数に小さなサイズの型の値を代入することができます。このことを型変換といいます。

先ほどとは逆に、小さいサイズの型の変数に大きなサイズの型の値を代入するには、上記の8行目のように型を変換することを明示的に書いておく

必要があります。このことをキャスト演算子といいます。但し「160.5」の小数点以下が切り捨てられ、「160」が格納されるので注意してください。

異なる型どうしで演算する

int型のdの値とdouble型のpiの値のかけ算をしています。Javaでは、一般的に演算子に異なる2つのオペランドを記述した場合には、

一方のオペランドを大きなサイズの型に変換してから演算を行う

というきまりになっています。int型のdの「2」がdouble型の(2.0)に変換されてから、かけ算が行われています。

同じ型どうしで演算する

上記のコードは、int型の変数num1とnum2を使って、5÷4の結果をdouble型の変数divに代入しています。「1.25」の値が出力されることを期待して、このように記述しました。しかし、「5/4」が「1」というint型の値として計算されます。その結果、「1.0」という値が出力されました。

このコードで「1.25」を得るには変数num1かnum2のどちらかをdouble型に変換する必要があります。

double div = (double)num1/(double)num2;

コードを変更した場合の実行結果は次のようになります。

5/4は1.25です。

7行目のコードをdouble型に書きかえることによって、1.25という答えを出力することができます。

-未分類

執筆者:


comment

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

関連記事

サンプルイメージ

クラス型の変数

               クラスの基本で下記のようにオブジェクトを作成していました。 chara1のようにオブジェクトをさす変数を、Character型の変数と呼びました。さらに、newを使ってオ …

サンプルイメージ

キーボードからの入力

キーボードからいろいろな文字を入力させ、その値を出力するコードを記述してみましょう。 String str = br.readLine(); という部分が重要です。実行画面がユーザーからの入力を待つ状 …

Android 練習問題(文字、図形の描画)

     問題1-1 Kuku 九九の表を表示してください。 問題1-2 CheckerBoard 下図のように表示させてください。正方形の大きさは適当でよい。 問題1-3 AslantLine 以下 …

サンプルイメージ

練習問題(配列)

練習7-1   BirthStone.java 誕生月を入力すると、その月の誕生石を表示するプログラムを、下の空欄を埋めて作成してください。 練習7-2   DispArray1.java 以下のプロ …

サンプルイメージ

関係演算子と条件

条件のしくみ これまでのコードは1文ずつ順序よく処理が行われていました。しかし、「場合に応じた処理」を行うことができます。 ゲームのスコアが良かったら・・・→ボーナスステージに行く ゲームのスコアが悪 …