未分類

演算子の優先順位

投稿日:

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

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

関連記事

サンプルイメージ

アリギリス プロフィール

       私はこれからjavaの基礎及び環境開発、JDKのインストールを解説し、より多くの人にスマホでゲームを作成してもらい「モノ作り」の面白さに触れてもらいたいと思います。 このブログではjav …

サンプルイメージ

練習問題(メソッド)

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

サンプルイメージ

練習問題(メソッド)解答例

次の章ではクラスのアクセス制限、オーバーロード、コンストラクタについて学んでいきましょう。

サンプルイメージ

List、Mapインターフェイス

     ArrayListとは、配列とよく似ています。値の集合を扱うときに利用します。 リストは要素が追加された順番を保持します。又重複した要素もそのまま保持することができます。 下記のコードでは、 …

サンプルイメージ

変数

変数のしくみを知る プログラムを実行するとき、いろいろな値を記憶させながら処理をしていきます。例えば ユーザーが入力した数値を画面に出力する というプログラムについて考えてみましょう。まず、数値をどこ …