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

演算子の優先順位

下表は優先順位が高い順

++ , -- +1,-1 インクリメント演算子
a++ → aに1を加える
デクリメント演算子
a-- → aから1を引く
* , /  , % ×,÷,余り 算術演算子
7*2→14 , 7/2→3 , 7%2→1
7+2→9 , 7-2→5
+ , - +,-
<> , <= , >= 大小比較 関係演算子
a>=0→aが0以上ならtrue
== , != 等しいか 関係演算子
a==b→aとbが等しければtrue
&& , || かつ,または 論理演算子
(a>=0)&&(b>=0)
aが0以上かつbが0以上ならばtrue
= 代入 代入演算子
a = b → bをaに代入
+= , -=,*= , /= , %= 複合代入 複合代入演算子
a + = →  a=a+bと同じ

※関係演算子・論理演算子の結果は必ず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]);

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

キャストなしの型変換

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

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

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

例えば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円

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

スポンサーリンク
スポンサーリンク
SNSフォローボタン

フォローする

シェアする

  • このエントリーをはてなブックマークに追加
スポンサーリンク
スポンサーリンク