とりあえず基本ですね
1: public class HelloWorld{ 2: public static void main( String[] arg ){ 3: System.out.println( "Hello World" ); 4: } 5: }
実行結果
Hello World
1行目 | クラスを宣言しますが,クラス名はファイル名と同一にします. |
違う場合はエラーになり,コンパイラに怒られてしまいます. | |
2行目 | プログラムを実行したときに,まずこのmainが実行されます. |
前後についているpublic static voidやString[] argは今は無視して構いません. | |
3行目 | 画面に「Hello World」を出力します. |
System.out.printlnというのが画面に改行付きで文字列を出力する機能(関数,もしくはメソッドと呼びます)です. | |
Javaがこのメソッドを用意しているので,括弧の中に出力したい文字列を代入する(引数を与えるといいます)だけで機能が使えます. | |
正確にはメソッドはprintlnで,System.outはそのメソッドがどこにあるか(どのライブラリに含まれているか)を指しています. |
基本その2。キーボードで入力した文字をそのまま出力するぞ。
1: import java.io.*; 2: public class InputFromKeyBoard{ 3: public static void main( String[] arg ){ 4: String strTemp = new String(); 5: try{ 6: System.out.println("なんか文字入力してちょ"); 7: BufferedReader br = new BufferedReader( new InputStreamReader( System.in )); 8: strTemp = br.readLine(); 9: }catch( Exception e ){ 10: e.printStackTrace(); 11: } 12: System.out.println( "入力された文字は「" + strTemp + "」"); 13: } 14: }
実行結果 これはコンソールに出る
なんか文字入力してちょ hoge ←適当に文字を入力 入力された文字は「hoge」
1行目 | ライブラリを使うときはimport文でライブラリを宣言します |
ライブラリ=機能をまとめた物と考えて当座は大丈夫です. | |
4行目 | 文字列を扱うために,String型(クラス)でstrTemp(インスタンス)を宣言します. |
=の後のnew演算子で,これが新しいインスタンスだということを表します. | |
その後のString()は,strTempに与える初期設定です. | |
これはクラスごとにいろいろな物があります. | |
5行目 | エラーが起きたときに,try~catchでそれを捉える事ができます. |
7行目 | キーボードから読み込むためのインスタンスを作ります. |
BufferdReaderは入力をシステムである程度貯めて(バッファして)読み込むクラスです. | |
=以下,BufferedReaderは読み込みのストリーム(後述)を必要とするので,初期化の際に与えてやります. | |
読み込みストリームはSystemのin(デフォルトではキーボード)から得ます. | |
8行目 | strTempに先ほどのbrからreadLineメソッドを用いて1行読み込みます |
9行目 | tryからココまでの間にエラーが起きればeに情報が代入され,処理が括弧の中に移ります. |
10行目 | eの中に含まれる情報から,何処でエラーが起こったのかを表示します. |
12行目 | 入力した文字列をそのまま表示します |
ちょっとアプリケーションっぽくなってくる
1: import java.io.*; 2: import javax.swing.*; 3: 4: public class SwingTest{ 5: public static void main( String[] arg ){ 6: String strTemp = new String(); 7: try{ 8: BufferedReader br = new BufferedReader( new InputStreamReader( System.in )); 9: strTemp = br.readLine(); 10: }catch( Exception e ){ 11: e.printStackTrace(); 12: } 13: JFrame frm = new JFrame( "SwingTest" ); 14: JTextArea txt = new JTextArea( strTemp ); 15: frm.getContentPane().add( txt ); 16: frm.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 17: frm.pack(); 18: frm.setVisible( true ); 19: } 20: }
2行目 | SwingというGUIの部品が詰まったライブラリを使います. |
13行目 | まず表示される枠,JFrameを作ります.引数で与えてるのはフレームの上部に表示されるタイトル. |
14行目 | テキストの表示用に,入出力が可能なTextAreaを用意します.引数はキーボードから入力された文字列. |
15行目 | フレームにテキスト枠を追加 |
16行目 | フレームを閉じたときのふるまい.今回はJFrameで用意されているEXIT_ON_CLOSE(閉じられたら終了)を使用. |
17行目 | フレームを適切なサイズに変更. |
18行目 | フレームの表示 |
WindowsのAPIだとめんどくさくて仕方のないGUIの表示がJavaだとこんなに簡単.
宣言を入れてもわずか7行で済んでしまう.
GUIアプリを作りたいけどAPIまんどくせ^^;っていう時は「OSに依存しないんでwwwwwwww」を切り札にJava使っちゃうのもアリだと思う.
高速演算は向いてないし,Windowsに限れば.NET FrameWork使えばGUIもわりと楽なんだけどね.
Javaではセミコロン( ; )にぶつかるまでを1文としています.
そのため
hoge foo = bar;
と
hoge foo =bar;
は意味的に同じです.
また,中括弧{}で囲まれたブロックを1文として扱います.
hoge; foo;
だと2文ですが,
{ hoge; foo; }
だと1文という扱いになります.
if( 条件式 ) 条件を満たしたときに実行される文 else それ以外でのときに実行される文
条件式の結果が真(結果が0以外になった)なら直後の文を実行 偽ならelse文を実行
while(条件式) 条件を満たす間実行される文
条件式を満たしている間,whileの次の文を実行する
for( 初期化式; 繰り返し条件; 条件判定の前に実行される文) 繰り返し条件を満たす間実行される文
for文が実行されるとき,最初に1度初期化式が実行されます.
そして繰り返し条件を満たす間,次の文が繰り返されます.
for文3つめのパラメータは,命令実行後,繰り返し条件の判定の前に実行されます.
例)
for( i = 0; i < 10; i ++ )
この場合,for文が実行されるときにiに0を代入し,iが10より小さい間次の命令が実行されます.
命令が終わった後でiを+1することで,結果的に10回の繰り返しとなるわけです.
数学でいうnの様に,値を代入できる記号のようなもの,と捉えていいかもしれません.
変「数」とついていますが,数字以外にも文字やフラグの場合もあります.
しかし,数を代入する変数には数を,文字を代入する変数には文字を入れなくてはいけません.
たとえば上記のサンプルコードで画面に文字列を出力する際,println( "hoge" )と書いたらどうなるでしょうか?
この場合プログラムに hoge を出力しろ と書かれているのでつねに hoge が出力されることになります.
サンプルコードではString型の変数を引数に与えることで,「プログラム作成時に決めた文字」ではなく,「プログラム実行時に決めた文字」を出力しています.
このように,「値が固定されていない場合に,代わりに使う物」みたいな感じです.
もちろん「変数は代入できる」ものですから,メソッドの結果を受け取ることも出来ます.
まぁこんな感じでやっていきます