演算子の優先順位と統合規則
下表は優先順位が高い順
優先順位 | 演算子 | 機能 | 統合規則 |
---|---|---|---|
1 | ++(後置) --(後置) | 1加算・1減算 | → |
++(前置) --(前置) ! | 1加算・1減算・論理否定 | ← | |
2 | ()(キャスト) | 型変換 | |
3 | * / % | 乗算・除算・剰余 | → |
+ - +(文字列連結) | 加算・減算・文字列連結 | ||
4 | < <= > >= | 大小比較 | |
== != | 同時判定 | ||
5 | && | 論理AND | |
6 | || | 論理OR | |
7 | = += -= *= /= %= | 代入・複合代入 | ← |
※関係演算子・論理演算子の結果は必ず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 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型の型変換まとめ
区分 | 記述方法 | |
---|---|---|
1 | String型 ⇒ int型 | Integer.parseInt(String型の変数) |
2 | String型 ⇒ double型 | Double.parseDouble(String型の変数) |
3 | 数値型 ⇒ String型 | String.valueOf(数値型の変数) |
“” + (数値型の変数) |
コメント