戻る
   アプリケーションMini_2は実行しても何も起こらない。
  何かが起こるプログラムを作成するには、その為のjavaの文を書かなければならない。
  javaの文は、javaのメソッドの中に書く。

   アプリケーションMini_2に文を追加して何かが起こるプログラムに改良する。手始めに何か文字列を出力してみる。
  その為には、mainメソッドに文字列を出力するための文を追加すれば良い。メソッドに文を書く位置は、{ }の中である。

   public static void main(String[ ] args) {     } ←ここに文を置く

println
   javaで文字列を出力するには、printlnを使う。
  printlnは、指定された文字列を標準出力に出力する。

   printlnで文字列を出力するには、出力したい文字列を” "で囲み、さらにそれを( )で囲み、最後に;をつける。

   println("文字列");

   例えば「勉強中」という文字列を出力したいなら、次のように書く。

   println("勉強中");

   この文をmainメソッドの中に置けば良い

   public static void main(String[ ] args) {
    println("勉強中");
   }

   mainメソッドにprintlnを追加したMini_3.java

   //
   // Mini_3.java
   //
   public class Mini_3 {
    // mainメソッド
    public static void main(String[ ] args) {
     println("勉強中");
    }
   }

   しかしながら、このMini3_javaをコンパイルすると、次のようなエラーとなってしまう。

   $ javac Mini_3.java
   Mini_3.java7: シンボルを解釈処理できません。
   シンボル: メソッドprintln (java.lang.String)
   位置 : Mini_3のクラス
    println("勉強中");
    ^
   エラー 1個

   なぜ、コンパイルできなかったのかの説明。

javaライブラリ
   printlnの正体は、実はメソッドである。mainメソッドの定義中にprintlnという他のメソッドを置くのは奇妙に見えるかもしれない。

   public static void main(String[ ] args) {
    printlnメソッド・・・・・・・・・・メソッドの定義の中にメソッドがある。
   }

   メソッドには、次の二面性がある。
    ・ メソッドを「定義する」
    ・ メソッドを「使う」

   すなわち、そのメソッドがどのような振る舞いをするかを「定義」し、定義したメソッドを「使う」のである。
  mainメソッドの定義の中で使っているprintlnメソッドは、(既にどこか他の所で定義されたものを)「使っている」のである。

   javaでは、よく使われてる機能(例えば文字列を出力する機能)を実現するためのメソッド等が既に用意されていて、
  プログラマがわざわざ定義しなくても使えるようになっている。それらを集めたものをjavaライブラリという。

   javaライブラリのように他の所で定義されたメソッドを使う時は、それがどこにあるのかを指定する必要がある。
  printlnが定義されている場所は、System.outである。
  そこで、printlnメソッドを使う時は、その前にSystem.outをつけて、次のように記述する。

   System.out.println("勉強中”);

  サンプル:Mini.java
   //
   // Mini.java
   //
   public class Mini {
    // mainメソッド
    public static void main(String [ ] args) {
     System.out.println("勉強中");
    }
   }

   もちろん、これをコンパイルしてもエラーにはならない。

   $ javac Mini.java
   $ dir Mini.class
   Mini.class
   $ _

   Mini.classを実行したところ

   $ java Mini
   勉強中
   $ _

数値の出力

   printlnメソッドは、文字列だけでなく、数値を出力することも出来る。例えば8750という数値を出力する例である。

   System.out.println(8750);

  サンプル:Num.java
   //
   // Num.java ---数値を出力する。
   //
   public class Num {
    public static void main(String[ ] args) {
     //次は数値の出力
     System.out.println(8750);
    }
   }

   Num.javaをコンパイル・実行したところ。

   $ javac Num.java・・・・・・・・・コンパイル
   $ dir Num.class
   Num.class・・・・・・・・・・・・・・作成されたクラスファイル
   $ java Num・・・・・・・・・・・・・実行
   8750
   $ _

   数値の出力は、文字列の出力と何ら変わらない様に見えるかもしれない。例えば前項のNum.javaでは、次のようにして数値を出力した。

   System.out.println(8750); ←出力する数値

   この数値を” ”で囲めば、文字列になる。

   System.out.println("8750"); ←これは文字列

  サンプル:PString.java
   //
   //PString.java ---数値を文字列で出力する。
   //
   public class PString {
    public static void main(String[ ] args) {
     //次の"8750"は文字列
     System.out.println("8750");
    }
   }

   実行例

   $ java PString
   8750
   $ _

   この実行例は、前項と全く同じである。何か文字列と数値に違いはあるのだろうか?

数値演算

   文字列の代わりに数値を使うのは、数値は演算が可能だからである。
  例えば、次のようにすると65+12を計算した結果を出力することができる。

   System.out.println(65+12); ←数値なら演算ができる。このprintlnは演算結果を出力する。

  サンプル:plus.java
   //
   //Plus.java ---65+12を計算する
   //
   public class Plas {
    public static void main(String[ ] args) {
     System.out.println(65+12);
    }
   }

   実行例

   $ java Plus
   77・・・・・・・・・・・・・・65+12が計算されている
   $ _

   では、同じ事を文字列で行うとどうなるか

   System.out.println("65+12"); ←この部分はどう出力されるか

  サンプル:PlusStr.java
   //
   // PlusStr.java
   //
   public class PlusStr {
    public static void main(String [ ] args) {
     System.out.println("65+12");
    }
   }

   実行例

   $ java PlusStr
   65+12
   $ _

   これを見ると、演算は行われず、文字列"65+12"ガそのまま出力されているのがわかる。
  文字列はあくまでも「文字の列」であり、指定された文字の列そのものを表す。演算を行うには(文字列ではなく)数値を使わなければならない。

文字列の連結

   前節の出力は以下のようなものであった。

   $ java Plus
   77・・・・・・・・・・・・・・65+12が計算されている
   $ _

   この77は、もちろん65+12を計算したものであるが、この出力では分かりにくい。
  そこで、この出力を次のように分かりやすいものに変更してみる。

   $ java Plus_2
   65+12=77
   $ _

   この出力のうち、"65+12="の部分を文字列で出力するのである。
  javaの文字列は、+記号を用いて連結することができる。例えば、次は3つの文字列を連結している。

   "ABCDEFG"+"1234567"+"abcdefg"
  この結果は1つの文字列となり、次と同じになる。

   "ABCDEFG1234567abcdefg"

   文字列の連結で面白いのは、数値を連結できることである。
  その場合、その数値は文字列に変換されて連結される。例えば、次は文字列と数値を連結している。

   "65+12="+77
   ↑文字列 ↑数値

   この場合、数値の77が文字列"77"に変換され、連結される。その結果、次の文字列になる。

   "65+12=77"

   更に面白いのが、数値の部分に演算を含んでもいいという事である。その場合は、その演算の結果が文字列に変換されて連結される。

   "65+12="+(65+12) ←この部分は演算を含む数値。演算結果の77が文字列に変換される。

   従って、この場合も次のように連結されて1つの文字列になる。

   "65+12=77"

   なお、この例では演算を含む数値を( )で囲んでいるが、この( )必要である。もし( )がないと、次のように連結されてしまう。

   "65+12="+656+12 ←文字列"65+12="と数値65と数値12が連結される
   ↓
   65+12=6512

  サンプル:Plus.javaの改良 Plus_2.java

   //
   //Plus_2.java---出力の改良
   //
   public class Plus_2.java
    public static void main(String[ ] args) {
     System.out.println("65+12="+(65+12));
    }
   }

   実行例

   $ java Plus_2
   65+12=77
   $ _

算術演算子

   数値を使って計算を行う時、次の算術演算子を使う事ができる。

   +:加算  −:減算  *:乗算  /:除算  %:剰余

   次は、1〜10までの整数を合計するサンプルアプリケーションである。

   //
   //Add_10.java---1〜10までの整数を合計する
   //
   public class Add_10 {
    public static void main(String[ ] args) {
     System.out.println(
      "1〜10までの合計="+
      (1+2+3+4+5+6+7+8+9+10)
     );
    }
   }

   実行例

   $ java Add_10
   1〜10までの合計=55・・・・・・・・・・1〜10までの合計が計算されその結果が表示される
   $ _

   1〜1000までを合計するアプリケーション

   //
   //Add_1000.java---1〜1000までを合計
   //
   public class Add_1000 {
    public static void main(String[ ] args) {
     System.out.println(
      "1〜1000までの合計="+(1+1000)*1000/2
     );
    }
   }

   実行例

   $ java Add_1000
   1〜1000までの合計=500500
   $ _

   今度は、元利合計を計算する。次は、1000円を年利5%の利率で預けた場合の1年後の元利合計(元金+利息)を計算するプログラムである。
  元利合計は、元金=n 年利=r の1年後の元利合計= n*(1+r)

   サンプル: Interest.java

   //
   //Interest.java---10000円を年利5%で預けたときの1年後の元利合計
   //
   public class Interest {
    public static void main(String[ ] args) {
     System.outprintln("10000円を年利5%の利率で預けた時の");
     System.out.println("              1年後の元利合計="+
     (10000*(1+0.05)));
    }
   }

   このプログラムでは、初めて2つの文を使用した。次に実行例を示す。

   $ java Interest
   10000円を年利5%の利率で預けた時の
                  1年後の元利合計=10500.0
   $ _

   次にエンゲル係数を求めるプログラムを作成する。このプログラムでは、次の条件でエンゲル係数を求めている。
  1ヶ月の家計費=20万円 食費9万円の時、食費9万円/家計費20万円×100

   サンプル: Engel.java

   //
   //Engel.java---エンゲル係数を求める
   //
   public class Engel {
    public static void main(String[ ] args) {
     System.out.println("エンゲル係数="+9./20*100);
    }
   }

   このプログラムのポイントは、9の後ろにピリオドがついている事である。(次項にて説明)
  このプログラムの実行例。

   $ java Engel
   エンゲル係数=45.0
   $ _

整数と浮動小数点

   javaの数値型は、次の2種類に分ける事が出来る。
    整数型・・・・・・・小数点を含まない数値型
    不動小数点型・・小数点を含む数値型

   両者の大きな違いは、小数点を扱えるかどうかにある。
  両者は、除算を行った時に大きな違いが出る。javaで整数同士の除算を行うと、割り切れないとき、小数点以下を切り捨てる。
  その時、四捨五入はしないので、バッサリと切り捨てる。しかし、浮動小数点の場合は、小数点以下も計算する。
   例えば、9÷20の計算を考える。これを整数型で計算すると、小数点以下が切り捨てられ0になってしまう。

   System.out.println(9/20); ←これは整数同士の除算なので小数点以下が切り捨てられ0が表示される。
  これを浮動小数点として計算したければ、数値に小数点をつければ良い。

   9・・・・・・・これは整数
   9.0・・・・・ これは浮動小数点

   つまり、次のように計算する。

   System.out.println(9.0/20.0); ←これは浮動小数点同士の除算なので、小数点以下も計算されて0.45が表紙される。
  尚、次のように9.0または20.0の一方だけを浮動小数点にしても小数点以下が計算される。
  javaでは演算数の一方が浮動小数点の場合、他方が整数でも浮動小数点として計算されるからである。
  更に言うと、9.0の0を取って9.としても浮動小数点として扱われる。

次へ