未分類

演算子の優先順位

投稿日:

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

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

関連記事

サンプルイメージ

練習問題(クラスの利用)(前半)

      練習10-1 MarkPrinterMain1~4クラスを実行すると下図の様な実行結果となるようにMarkPrinterクラスを作成してください。 練習10-2 MarkPrinterクラ …

サンプルイメージ

for文のしくみを知る

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

サンプルイメージ

プログラミングの効率的な勉強法

やる前から苦手意識を持たない。答えは一つではない。 プログラミングはパソコンに対してこうしろと命令文を書いているだけです。 少し勉強しただけで、自分にはプログラミングに向いていないと諦めてしまう人がい …

サンプルイメージ

式と演算子

式のしくみを知る Javaの「式」の多くは、 演算子(演算するもの)とオペランド(演算の対象) を組み合わせてつくられています。たとえば、「1 + 2」の場合は、「+」が演算子、「1」と「2 …

サンプルイメージ

練習問題(メソッド)

練習8-1 下記の2つのクラスがある。[WelcomeMain1.java]を実行すると下のような結果になるように[Welcome1.java]の空欄を埋めてください。        練習8-2 下記 …