【Java】演算子の優先順位と基本データ型の型変換

Java

演算子の優先順位と統合規則

下表は優先順位が高い順

優先順位 演算子 機能 統合規則
++(後置) --(後置) 1加算・1減算  →
++(前置) --(前置)  ! 1加算・1減算・論理否定  ←
()(キャスト) 型変換
* /   % 乗算・除算・剰余  
+  - +(文字列連結) 加算・減算・文字列連結
< <= > >= 大小比較
==  != 同時判定
&& 論理AND
|| 論理OR
= += -= *=  /= %= 代入・複合代入  ←

※関係演算子・論理演算子の結果は必ずteueかfalseが返されます。

以下に実行時のコードを記載します。

package test;

public class sample {

	public static void main(String[] args) {
		// 使用する変数の定義
		int a = 8, b = 2; // 変数の宣言

		// 普通の演算による計算と代入
		System.out.println("a + b = " + (a + b));
		System.out.println("a - b = " + (a - b));
		System.out.println("a * b = " + (a * b));
		System.out.println("a / b = " + (a / b));
		System.out.println("a % b = " + (a % b));
		System.out.println("a >= b = " + (a >= b));
		System.out.println("(a >= 0) && (b >= 3):" + ((a >= 0) && (b >= 3)));
		System.out.println("(a >= 0) || (b >= 3):" + ((a >= 0) || (b >= 3)));
		// 代入演算による計算
		System.out.println("代入演算による計算");
		System.out.println("a += b = " + (a += b));
		System.out.println("a -= b = " + (a -= b));
		System.out.println("a *= b = " + (a *= b));
		System.out.println("a /= b = " + (a /= b));
		System.out.println("a %= b = " + (a %= b));
	}
}

計算結果

a + b = 10
a - b = 6
a * b = 16
a / b = 4
a % b = 0
a >= b = true
(a >= 0) && (b >= 3):false
(a >= 0) || (b >= 3):true
代入演算による計算
a += b = 10
a -= b = 8
a *= b = 16
a /= b = 8
a %= b = 0
コンソールから入力した値を受け取って計算する場合は、
「変数の宣言」の個所に以下のように記述します。
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);

基本データ型の型変換とキャスト

キャストなしの型変換

数値同士の演算や代入をする際、表現できる値の幅が(右辺)小→(左辺)大の場合は自動的に変換されるので、キャストの明示は不要です。

キャストを明示した型変換

数値同士の演算や代入をする際、表現できる値の幅が(右辺)大→(左辺)小の場合キャストで明示します。

例:int b =  (double)a;

例えば32bitのものは64bitで表現できますが、32bitのものを64bitでそのまま表現することできませんので、キャストが必要になります。

double→float

long→int→short→byte

 

整数 byte 8ビット
short 16ビット
int 32ビット
long 64ビット
小数 float 32ビット
double 64ビット

 

以下は、floatからlongへ型変換可能か試したコードと結果です。

使用するとすれば、doubleからintへの型変換で使うのでしょうが、興味本位で試してみました。

package test;
 
public class Sample {
 
   public static void main(String[] args){
	    int price = Integer.parseInt(args[0]);
	    float rate = 0.08f;         // 消費税率:8%
	    long amount;

	    amount = (long)(price * (1 + rate));
	    System.out.println("税込金額:" + amount + "円");
	  }
}

コンソールから1980と入力した出力結果型変換は可能でした。

税込金額:2138円

String型の型変換まとめ

区分 記述方法
String型 ⇒ int型 Integer.parseInt(String型の変数)
String型 ⇒ double型 Double.parseDouble(String型の変数)
数値型 ⇒ String型 String.valueOf(数値型の変数)
“” + (数値型の変数)

にほんブログ村 IT技術ブログ IT技術メモへ

コメント

タイトルとURLをコピーしました