戻る
アプリケーション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.としても浮動小数点として扱われる。
次へ