未分類

演算子の優先順位

投稿日:

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を使ってオ …

サンプルイメージ

コンストラクタのしくみ

                 クラスの中には、フィールドとメソッドのほかに、コンストラクタと呼ばれるものを記述することができます。 コンストラクタは、メソッドに大変よく似ています。しかし、コンスト …

プログラム

プログラムのしくみ

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

Android 図形、画像の描画

     ソースコードの解説 GraphicsExはプログラムの本体となるクラスです。 GraphicsView.javaを解説します。 ①ラインの描画(25行目) 描画前に「ライン幅」と「描画スタイ …

サンプルイメージ

練習問題

練習問題  HelloWorld.java 以下のプログラムの空欄を埋めて実行結果のように表示させてください。 練習問題  ChangeXY.java 下のプログラムの空欄を埋めてアイテムAとアイテム …