class PrintInt{ public static void main(String[] args){ System.out.print("1分は"); System.out.print(60); System.out.println("秒です."); } }このように,
System.out.print(60);として数字60を表示できる.これは,
System.out.print("60");とどこが違うのだろうか.出力結果は変わらないが,文字列と数値は意味が違 う.文字列の「"60"」は,「'6'」という文字の後に「'0'」という文字が並ん だ列を表しているのに対し,数値「60」は60という数を表す.数値データは,
class PrintInt{ public static void main(String[] args){ System.out.println(60-3); } }のように四則演算などの計算をさせることが書くことは可能で,実行すると,
ktanaka@nc01921> java PrintInt 57となるのに対し,
class PrintInt{ public static void main(String[] args){ System.out.println("60"-"3"); } }とすると,コンパイル時に
ktanaka@nc01921> javac PrintInt.java PrintInt.java:3: 演算子 - は java.lang.String,java.lang.String に適用できません。 System.out.println("60"-"3"); ^ エラー 1 個のようなエラーが出る.なお,
class PrintInt{ public static void main(String[] args){ System.out.println("60-3"); } }とするとコンパイルはできるが,出力結果は,
60-3になる.
上の例では,減算の演算子「-」を用いたが,加算の演算子「+」の場合は話 が違ってくる. class PrintInt{ public static void main(String[] args){ System.out.println("60"+"3"); } }はコンパイルできるが,実行結果は,603となる.これは,演算子「+」は数の加算以外に文字列の連結という意味を持っ ているからである.どちらの意味かは,使われ方により決定される.このよう な演算子を多相な(polymorphic)演算子と呼ぶが,多相な演算子に関し ては Java は慎重で,少数の限られた演算子しか導入されていない.
class Hours{ public static void main(String[] args){ System.out.print("10000秒は"); System.out.print(10000/(60*60)); System.out.println("時間です."); } }ただし,四則演算では数学で使うのと同じように,
プログラムHoursの実行結果は,
10000秒は2時間です.となるはずだ.2時間は7200秒なので,おかしな結果に見える.
これは,Java言語で整数の計算を基本にしているためである.四則演算の対 象がすべて整数の場合は,演算の結果も整数となる.Java言語では実数を扱う こともできる.実数の定数を表現する時は,小数点をつければ良い.3.0 は数 学の世界では 3 と同じ数を表すが,Java言語の世界では 実数表現の 3 を表 す.
四則演算の際は,対象に実数が含まれている場合は結果は実数となる.した がって,先ほどのプログラムは
class Hours{ public static void main(String[] args){ System.out.print("10000秒は"); System.out.print(10000.0/(60*60)); System.out.println("時間です."); } }のように直すと,
10000秒は2.7777777777777777時間です.と表示される.
整数,実数と言うと複素数とか四元数などを期待する人もいるかもしれな いが,Java言語では基本的な型として採用されていない.
class FuncTest { public static void main(String[] args){ System.out.print("sin(1)は"); System.out.print(Math.sin(1)); System.out.println("です"); System.out.print("2の平方根は"); System.out.print(Math.sqrt(2)); System.out.println("です"); } }実行結果は以下のようになる.
sin(1)は0.8414709848078965です 2の平方根は1.4142135623730951です
「Math.abs」というのは「Math」クラスの静的メソッド「abs」に対するメ ソッド呼び出しなのだが,その説明は後でやるので,ここでは算術関数をこ う書くとだけ覚えておけば良い.