<概要>整数の四則演算と剰余計算を学びます。C言語、C++言語のそれにソックリだー(笑)!
●例題2-1 加減乗除。
○プログラム
public class Calc1{
public static void main(String[] args){
System.out.println("3+2="+(3+2)+"です。");
System.out.println("5-8="+(5-8)+"です。");
System.out.println("3*4="+(3*4)+"です。");
System.out.println("7/3="+(7/3)+"です。");
}
}
○実行結果
D:\atsushi\Java\List2-1>java Calc1
3+2=5です。
5-8=-3です。
3*4=12です。
7/3=2です。
-- Press any key to exit (Input "c" to continue) --
○解説
println メソッドは、C言語の printf 関数より、C++言語の cout に近いような?
数値は、そのまま表示させることは出来ないので、自動的に文字列に変換されます。
+ 演算子は文字列の連結も行います。
数値を挟む括弧は必ずしも必要ではありません(補足参照)。
7/3=2 となっている実行結果に注目!
○補足
"3+2="+3+2 → 3+2=32
"5-8="+5-8 → コンパイルエラー
"3*4="+3*4 → 3*4=12
"7/3="+7/3 → 7/3=2
★ 0 で割った場合
//プログラム
public class Calc1{
public static void main(String[] args){
System.out.println("3+2="+(3+2)+"です。");
System.out.println("5-8="+(5-8)+"です。");
System.out.println("3*4="+(3*4)+"です。");
System.out.println("7/3="+(7/3)+"です。");
System.out.println("1/0="+(1/0)+"です。");
}
}
//コンパイル
■D:\atsushi\Java\List2-1> javac Calc1.java
[CPad: コンパイル終了]
//実行結果
D:\atsushi\Java\List2-1>java Calc1
3+2=5です。
5-8=-3です。
3*4=12です。
7/3=2です。
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Calc1.main(Calc1.java:7)
-- Press any key to exit (Input "c" to continue) --
●例題2-2 1+2×3−4÷2 を計算する。
○プログラム
public class Calc2{
public static void main(String[] args){
System.out.println(1+2*3-4/2);
}
}
○実行結果
D:\atsushi\Java\List2-2>java Calc2
5
-- Press any key to exit (Input "c" to continue) --
○解説
演算子の優先順位は「演算子と優先順位」をご覧あれ。
同じ優先度の場合、代入演算子は右結合、その他は左結合です。
●例題2-3 剰余の計算。
○プログラム
public class Calc3{
public static void main(String[] args){
System.out.println("20%7="+20%7);
}
}
○実行結果
D:\atsushi\Java\p44>java Calc3
20%7=6
-- Press any key to exit (Input "c" to continue) --
○解説
C言語、C++言語と一緒。
●例題2-4 -10000*10000 を int 型と long 型の両方で計算する。
○プログラム
public class CalcBig{
public static void main(String[] args){
System.out.println(-100000*100000);
System.out.println(-100000*100000L);
}
}
○実行結果
D:\atsushi\Java\List2-3>java CalcBig
-1410065408
-10000000000
-- Press any key to exit (Input "c" to continue) --
○解説
int 型は符号付き32ビット整数です。
したがって、-100000*100000 を計算するとオーバーフローを起こします。
long 型は符号付き64ビット(!)整数なので、オーバーフローを起こしません。
long 型として扱う場合は整数の末尾に L あるいは l (小文字のエル) を付けるだけです。
このプログラムでは片方にしか L を付けていないにもかかわらず、
正しい実行結果が得られたということは、暗黙の型変換が行われているということになりますね。
★整数型一覧
型名 | 最小値 | 最大値 | 解説 |
byte | -128 | 127 | 符号付き8ビット |
short | -32768 | 32767 | 符号付き16ビット |
int | -2147483648 | 2147483647 | 符号付き32ビット |
long | -9223372036854775808 | 9223372036854775807 | 符号付き64ビット |
char | 0 | 65535 | 符号無し16ビット |
C言語やC++言語のそれとは微妙に異なるようで。
Java言語では型の値の範囲が厳密に定められていて、
処理系によって詳細が異なる、なんてことはありません。
また、型指定子 signed と unsind は存在しません。
個人的には long 型が64ビットなのに驚いた!