Java

はじめに

言語の特徴

インストロール

Eclipseの使い方

発動起動編

  1. Eclipseディレクトリ(若い人はフォルダっていうのか)の中にあるEclipse.exeを起動.
  2. 起動時にワークスペースを尋ねてきますが,まぁ適当でOKです.
  3. 初期化に少々かかってEclipse起動.

プロジェクトを作ろう編

  1. 「ようこそ!」みたいな画面が出る.
  2. 眺めてもいいけど鬱陶しいのでさっさと閉じてしまう.
  3. ペインがいくつか分かれているが,左の「パッケージエクスプローラー」で右クリック → 新規 → プロジェクト.
  4. Javaプロジェクトを探して「次へ」.
  5. プロジェクト名を適当な英数字でつけて「終了」.
  6. するとパッケージエクスプローラーにプロジェクトが作成される.

いよいよクラスだ編

  1. さっきのプロジェクトを右クリック → 新規 → クラス.
  2. で,適当な名前をつけて,「public static void main(String[] args)」のチェックを入れて「終了」.
  3. 警告出るけどエラーじゃないから気にすんな.
  4. これでクラスのひな形が出来たから中身を記述すればおk.
  5. 「クラス名がわからない」「あのメソッドなんだっけ?」っていう時はCtrlとスペースキーを押すと候補の一覧が出ます(便利!).
  6. その候補を選択してエンターを押せば勝手に入力してくれる(便利!).

さぁデバッグだ編

  1. プログラムが完成したらデバッグです.
  2. ツールバーの虫アイコンの右にある▼を押して,メニューから「構成およびデバッグ」を選びます.
  3. 作っているプログラムのタイプ(このページのサンプルならJavaアプリケーション)を右クリック,「新規」を選びます.
  4. パッケージエクスプローラーでクラスが選ばれているとその情報が代入されますが,入力されていないときは「参照」やら「検索」やらで適当にやってください.
  5. 入力が終わり,「デバッグ」を押すとデバッグが開始されます.
  6. 後はツールバーの虫アイコンをクリックするたびに,直前に行われた情報でデバッグを繰り返します.

もうちょっとだけ続くんじゃ編

  1. デバッグの虫アイコンの右に,●に三角を組み合わせたアイコンがあります.
  2. 基本はデバッグと同じですが,こちらは「実行」です.
  3. 実行の方が早いのですが,デバッグだといろいろな情報をデバッグ用に保持するので,例外が起きた行がわかったり,ブレークポイントを仕掛けることが出来ます.
  4. キーボードからの入力のサンプルプログラムで使っているprintStackTraceなんかで行番号がわかると便利です.
  5. 詳細はググってね^^

サンプルコード

Hello World

とりあえず基本ですね

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行目入力した文字列をそのまま表示します

swingを使ってGUIを作ってみよう

ちょっとアプリケーションっぽくなってくる

 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もわりと楽なんだけどね.

基礎的な構文

1行の扱い

Javaではセミコロン( ; )にぶつかるまでを1文としています.
そのため

hoge foo = bar;

hoge foo
=bar;

は意味的に同じです.
また,中括弧{}で囲まれたブロックを1文として扱います.

hoge;
foo;

だと2文ですが,

{ hoge;
foo;
}

だと1文という扱いになります.

if~else

if( 条件式 )
条件を満たしたときに実行される文
else
それ以外でのときに実行される文

条件式の結果が真(結果が0以外になった)なら直後の文を実行 偽ならelse文を実行

while

while(条件式)
条件を満たす間実行される文

条件式を満たしている間,whileの次の文を実行する

for

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型の変数を引数に与えることで,「プログラム作成時に決めた文字」ではなく,「プログラム実行時に決めた文字」を出力しています.
このように,「値が固定されていない場合に,代わりに使う物」みたいな感じです.
もちろん「変数は代入できる」ものですから,メソッドの結果を受け取ることも出来ます.

発展

まぁこんな感じでやっていきます

リンク

まずは本家

Eclipse

参考サイト


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS