計算をやってみよう

<概要>整数の四則演算と剰余計算を学びます。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ビットなのに驚いた!


戻る / ホーム