プログラミング言語/Java
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* Java [#k043866f]
#contents
**はじめに [#haa5c093]
-ソースの行頭に行番号が書いてあります.
--解説のためなので,コピペするときは消してね^^
- インデントはオレ流(笑)
- 引用以外の箇所で所々?が出てきます
-- これはwikiが勝手にリンクだと解釈して付加したものの可能...
-- カーソルをあわせて指先マークに変わったら間違いなくwiki...
-- とりあえず無視することをオヌヌヌ.
**言語の特徴 [#b1aa0413]
- OSに依存しない
-- JavaはJava VM(Java Virtual Machine:JVM)というソフトウ...
-- このJava VMがOSの差異を吸収するので,Javaで作られたプ...
--- Java VMの仕様は、Java仮想マシン仕様として公開されてお...
- オブジェクト指向
-- うはwwwwwwwwwテラオブジェクトwwwwwwww...
- ライブラリが豊富
-- 基本的な機能がすでにライブラリとして存在するので,部品...
- 重い(遅い)
-- 前述のように,Java VMを使っているせいです.
-- 要するにOSの上でもう一つOSを動かしているような物なので...
-- 最近はPCのスペックがあがってきてるのでそれほどストレス...
**インストール [#d90f6540]
- 統合開発環境(IDE)のEclipseを利用することにします.
- とりあえずEclipse自体もJavaで書かれているのでJavaプログ...
- JREをダウンロードして適当にインストールします.規約なん...
- そんでAll-In-One Eclipseをインストールする。
-- インストール方法は[[ここ:https://sourceforge.jp/projec...
-- eclipseに挫折した場合はこっちも見てみてね
--- [[./eclipse以外の方法]]
**Eclipseの使い方 [#s81d46f6]
***発動起動編 [#h89dc71e]
+ Eclipseディレクトリ(若い人はフォルダっていうのか)の中に...
+ 起動時にワークスペースを尋ねてきますが,まぁ適当でOKで...
+ 初期化に少々かかってEclipse起動.
***プロジェクトを作ろう編 [#kdd42554]
+ 「ようこそ!」みたいな画面が出る.
+ 眺めてもいいけど鬱陶しいのでさっさと閉じてしまう.
+ ペインがいくつか分かれているが,左の「パッケージエクス...
+ Javaプロジェクトを探して「次へ」.
+ プロジェクト名を適当な英数字でつけて「終了」.
+ するとパッケージエクスプローラーにプロジェクトが作成さ...
***いよいよクラスだ編 [#sd4c47fe]
+ さっきのプロジェクトを右クリック → 新規 → クラス.
+ で,適当な名前をつけて,「public static void main(Strin...
+ 警告出るけどエラーじゃないから気にすんな.
+ これでクラスのひな形が出来たから中身を記述すればおk.
+ 「クラス名がわからない」「あのメソッドなんだっけ?」っ...
+ その候補を選択してエンターを押せば勝手に入力してくれる(...
***さぁデバッグだ編 [#gfb39608]
+ プログラムが完成したらデバッグです.
+ ツールバーの虫アイコンの右にある▼を押して,メニューから...
+ 作っているプログラムのタイプ(このページのサンプルならJa...
+ パッケージエクスプローラーでクラスが選ばれているとその...
+ 入力が終わり,「デバッグ」を押すとデバッグが開始されま...
+ 後はツールバーの虫アイコンをクリックするたびに,直前に...
***もうちょっとだけ続くんじゃ編 [#kfc37e84]
+ デバッグの虫アイコンの右に,●に三角を組み合わせたアイコ...
+ 基本はデバッグと同じですが,こちらは「実行」です.
+ 実行の方が早いのですが,デバッグだといろいろな情報をデ...
+ キーボードからの入力のサンプルプログラムで使っているpri...
+ 詳細はググってね^^
**サンプルコード [#r40b0a47]
***Hello World [#k89a1c58]
とりあえず基本ですね
-HelloWorld.java
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はそのメソッド...
***キーボードからの読み込み。 [#vaf57385]
基本その2。キーボードで入力した文字をそのまま出力するぞ。
-InputFromKeyBoard.java
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 In...
8: strTemp = br.readLine();
9: }catch( Exception e ){
10: e.printStackTrace();
11: }
12: System.out.println( "入力された文字は「" + strTe...
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を作ってみよう [#icc727f3]
ちょっとアプリケーションっぽくなってくる
-SwingTest.java
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 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_CLO...
17: frm.pack();
18: frm.setVisible( true );
19: }
20: }
|2行目 |SwingというGUIの部品が詰まったライブラリを使いま...
|13行目 |まず表示される枠,JFrameを作ります.引数で与えて...
|14行目 |テキストの表示用に,入出力が可能なTextAreaを用意...
|15行目 |フレームにテキスト枠を追加|
|16行目 |フレームを閉じたときのふるまい.今回はJFrameで用...
|17行目 |フレームを適切なサイズに変更.|
|18行目 |フレームの表示|
WindowsのAPIだとめんどくさくて仕方のないGUIの表示がJavaだ...
宣言を入れてもわずか7行で済んでしまう.~
GUIアプリを作りたいけどAPIまんどくせ^^;っていう時は「O...
高速演算は向いてないし,Windowsに限れば.NET FrameWork使え...
Eclipseでポトペタ
http://www.eclipsewiki.net/eclipse/?GUI%A5%D7%A5%E9%A5%B0...
**基礎的な構文 [#ka44bfda]
***1行の扱い [#ccabbd5c]
Javaではセミコロン( ; )にぶつかるまでを1文としています.~
そのため
hoge foo = bar;
と
hoge foo
=bar;
は意味的に同じです.~
また,中括弧{}で囲まれたブロックを1文として扱います.
hoge;
foo;
だと2文ですが,
{ hoge;
foo;
}
だと1文という扱いになります.
***if~else [#xdd4e806]
if( 条件式 )
条件を満たしたときに実行される文
else
それ以外でのときに実行される文
条件式の結果が真(結果が0以外になった)なら直後の文を実行
偽ならelse文を実行
***while [#f29755c8]
while(条件式)
条件を満たす間実行される文
条件式を満たしている間,whileの次の文を実行する
***for [#f31444c4]
for( 初期化式; 繰り返し条件; 条件判定の前に実行される文)
繰り返し条件を満たす間実行される文
for文が実行されるとき,最初に1度初期化式が実行されます.~
そして繰り返し条件を満たす間,次の文が繰り返されます.~
for文3つめのパラメータは,命令実行後,繰り返し条件の判定...
例)
for( i = 0; i < 10; i ++ )
この場合,for文が実行されるときにiに0を代入し,iが10より...
命令が終わった後でiを+1することで,結果的に10回の繰り返し...
**基本的な変数 [#h44862a0]
***変数って何? [#obc08d06]
数学でいうnの様に,値を代入できる記号のようなもの,と捉え...
変「数」とついていますが,数字以外にも文字やフラグの場合...
しかし,数を代入する変数には数を,文字を代入する変数には...
***どう使うのよ? [#s2f94480]
たとえば上記のサンプルコードで画面に文字列を出力する際,p...
この場合プログラムに hoge を出力しろ と書かれているのでつ...
サンプルコードではString型の変数を引数に与えることで,「...
このように,「値が固定されていない場合に,代わりに使う物...
もちろん「変数は代入できる」ものですから,メソッドの結果...
**クラスの基礎 [#b549c68b]
***クラスって何? [#x5cc152e]
簡単に言うと、「変数やらそれをいじくる機能やらを一まとめ...
C(C++でなくてよい)がわかることを前提として書いてます。
***クラスを使ってみる [#ibf0db8e]
クラスを使ってみて感じをつかみましょう。
int型の変数をより便利にしたようなクラス、Integerを使って...
public class test{
public static void main(String[] args){
Integer a = new Integer(10);
System.out.println(a.intValue());
}
}
3行目
Integer a = new Integer(10);
まず左辺でInteger型の変数aを作成し、右辺にあるものをaに代...
new Class-name(あれば引数)
とすると、Class-name型の変数に代入できる「実体」(インス...
(Integerクラスというものの作り方がわかっていて、new Inte...
5行目
a.intValue();
はaの持っている値を返す関数のようなもの(メソッドという)...
変数名.メソッド名(あれば引数)
とすることでその変数のクラス(aならばInteger)の持ってい...
***もうちょっと使ってみる [#rde8d327]
次はStringクラスを使ってみます。
public class test2{
public static void main(String[] args){
String str = new String("Vipper!!");
// Vipper!!という文字列を持ったStringクラスのインスタ...
System.out.println(str); // strをそのまま表示
System.out.println(str.length()); // strの長さを表示
System.out.println(str.toUpperCase()); // strを大文字...
}
}
ここではクラスの使い方をつかんでもらえればOKです。
Stringクラスに他にどんなメソッドがあるかは適当にぐぐって...
***クラスを作ろう [#e648c0b3]
次はクラスを作ってみます。自分で作ってみると一気に理解が...
次のコードを見てください。
class myInt{
private int value;
public myInt(int i){
value = i;
}
public int intValue(){
return value;
}
public int intValueNegative(){
return -1 * value;
}
}
public class test3{
public static void main(String[] args){
myInt a = new myInt(5);
System.out.println(a.intValue());
System.out.println(a.intValueNegative());
}
}
出力
5
-5
二行目
private int value;
クラスの中に入っている変数をフィールドといいます。これは...
test2で10という値を保持していくれていた場所もフィールドで...
private, publicについては後で説明します
四行目~六行目
public myInt(int i){
value = i;
}
クラスの名前と同じ名前のメソッドを、コンストラクタといい...
これは
myInt a = new myInt(5);
としたときに呼び出されるものです。
つまり上のコードではmyInt型のインスタンスをつくり、その保...
あとはだいたい見ればわかってもらえると思います・・・&br;
***アクセス指定子 [#s651da5f]
先ほどのtest3で、privateとかpublicとかいうものがありまし...
一言でいうと、
public: クラスの外からアクセスできる
private: クラスの外からアクセスできない
です。(他にprotectedというのがありますがこれはクラスの継...
例えば、myIntのintValueメソッドはpublicなので、myIntクラ...
System.out.println( a.inValue() );
という風に呼び出すことができました。&br;
一方、valueはprivateなので
a.value = 10;
などと値を変えようとしてもエラーになります。
publicは「外部に公開する値やメソッド」、privateは「外から...
例えば文字列の長さなどはint型で保持されているでしょうが、...
(しかし長さが見れないと意味がないので、 public な length...
public class String(){
private int length; // 外から str.length = 10; とかやら...
//コンストラクタとか
public int length(){
return length;
// こうすることで外から str.length() を呼べば長さがわ...
}
}
こんな感じになっています。(本当はpublic final class Stri...
***thisについて [#g2d6baf7]
上のmyIntのコンストラクタは
public myInt(int i){
value = i;
}
となっています。&br;
しかし仮引数の名前にはiよりかはvalueを使いたいところです...
でもそれだとクラスフィールドのvalueと名前が衝突してどっち...
といったときに登場するのが this です。具体的には次のよう...
public myInt(int value){
this.value = value;
}
myIntのコンストラクタの仮引数の名前を変更しました。また代...
this.変数名
とすると、「クラスフィールドの中にある変数のどれか」を表...
オレの.value
見たいなもんです。
んで、なぜ上のコードでOKかと言うと、名前が被ったときはク...
つまり、 myInt(int value) の中で普通に value と書くと仮引...
オレの.value = (仮引数の)value
となって、めだたくクラスフィールドのvalueに引数で与えられ...
**staticメソッド [#u17655b3]
***staticメソッドとは [#wf2f2fc5]
クラスにはメソッドがありましたが、メソッドを呼び出すとき...
例えば整数を扱うクラスIntegerは、String型をint型に変換す...
Integer it = new Integer(0);
...
int x = it.parseInt("1234");
などとするのは無駄な気がします。
なぜなら文字列を数に変換する操作は「普遍的」なもので、コ...
実は、parseIntを呼び出すのにインスタンスを作る必要はなく、
int x = Integer.parseInt("1234");
のように使えます。このようにインスタンスを作らずとも呼び...
static int parseInt(String)
などとかかれています。
***staticメソッドの作り方 [#t858ee5c]
自分で作ったクラスにstaticメソッドを持たせるには、そのメ...
class MyMath{
public static double sinh(double x){
return (Math.exp(x)-Math.exp(-x))/2;
}
}
Math.exp(x)ではMathクラス(あらかじめ用意されている)のstat...
このようにして作ったメソッドsinhは、MyMathのインスタンス...
double p = MyMath.sinh(1.0);
**クラスの継承 [#c486a184]
**発展 [#pc636e11]
まぁこんな感じでやっていきます
- ifやらfor,whileなんかはCと変わらないので省略.
-- と思ったけど「Cの項目にねーよタコ」って言われt(ry
- Java(というかオブジェクト指向)の基本はクラスを作成し,...
- javaでは入出力はストリーム(流れ)として扱います.
-- それがキーボードからの入力でもファイルでも,TCPだって...
-- たとえば上記のBufferedReaderでreadLineメソッドを利用し...
**リンク [#q03f1191]
***まずは本家 [#kcf70aa2]
- [[JDK ダウンロードページ:http://java.sun.com/javase/ja/...
- [[Java APIドキュメント:http://java.sun.com/javase/ja/6/...
***Eclipse [#o72e1476]
- [[Eclipse:http://www.eclipse.org/]]公式英語です.
-- [[Eclipse Wiki:http://www.eclipsewiki.net/eclipse/]]日...
-[[Eclipse 3.4からはじめるIDE入門:CodeZine(コードジン)...
-[[Eclipse - @IT:http://www.atmarkit.co.jp/channel/ecli...
--[[Eclipse 3.4で超簡単Javaプログラミング基礎入門 (1/5) -...
-[[Eclipse V3.4 をマスターする - IBM developerWorks Japan...
***参考サイト [#x79a0c19]
-[[Java(tm) House Mailing List Homepage (in Japanese):htt...
--[[Java House ML Topics:http://java-house.jp/ml/topics/]...
- [[JavaでHello World(Internet Archive):http://web.archiv...
- [[浅煎り珈琲 Java アプリケーション入門:http://music.geo...
- [[JNode:http://www.jnode.org/]]Java(とアセンブラ)でOS...
終了行:
* Java [#k043866f]
#contents
**はじめに [#haa5c093]
-ソースの行頭に行番号が書いてあります.
--解説のためなので,コピペするときは消してね^^
- インデントはオレ流(笑)
- 引用以外の箇所で所々?が出てきます
-- これはwikiが勝手にリンクだと解釈して付加したものの可能...
-- カーソルをあわせて指先マークに変わったら間違いなくwiki...
-- とりあえず無視することをオヌヌヌ.
**言語の特徴 [#b1aa0413]
- OSに依存しない
-- JavaはJava VM(Java Virtual Machine:JVM)というソフトウ...
-- このJava VMがOSの差異を吸収するので,Javaで作られたプ...
--- Java VMの仕様は、Java仮想マシン仕様として公開されてお...
- オブジェクト指向
-- うはwwwwwwwwwテラオブジェクトwwwwwwww...
- ライブラリが豊富
-- 基本的な機能がすでにライブラリとして存在するので,部品...
- 重い(遅い)
-- 前述のように,Java VMを使っているせいです.
-- 要するにOSの上でもう一つOSを動かしているような物なので...
-- 最近はPCのスペックがあがってきてるのでそれほどストレス...
**インストール [#d90f6540]
- 統合開発環境(IDE)のEclipseを利用することにします.
- とりあえずEclipse自体もJavaで書かれているのでJavaプログ...
- JREをダウンロードして適当にインストールします.規約なん...
- そんでAll-In-One Eclipseをインストールする。
-- インストール方法は[[ここ:https://sourceforge.jp/projec...
-- eclipseに挫折した場合はこっちも見てみてね
--- [[./eclipse以外の方法]]
**Eclipseの使い方 [#s81d46f6]
***発動起動編 [#h89dc71e]
+ Eclipseディレクトリ(若い人はフォルダっていうのか)の中に...
+ 起動時にワークスペースを尋ねてきますが,まぁ適当でOKで...
+ 初期化に少々かかってEclipse起動.
***プロジェクトを作ろう編 [#kdd42554]
+ 「ようこそ!」みたいな画面が出る.
+ 眺めてもいいけど鬱陶しいのでさっさと閉じてしまう.
+ ペインがいくつか分かれているが,左の「パッケージエクス...
+ Javaプロジェクトを探して「次へ」.
+ プロジェクト名を適当な英数字でつけて「終了」.
+ するとパッケージエクスプローラーにプロジェクトが作成さ...
***いよいよクラスだ編 [#sd4c47fe]
+ さっきのプロジェクトを右クリック → 新規 → クラス.
+ で,適当な名前をつけて,「public static void main(Strin...
+ 警告出るけどエラーじゃないから気にすんな.
+ これでクラスのひな形が出来たから中身を記述すればおk.
+ 「クラス名がわからない」「あのメソッドなんだっけ?」っ...
+ その候補を選択してエンターを押せば勝手に入力してくれる(...
***さぁデバッグだ編 [#gfb39608]
+ プログラムが完成したらデバッグです.
+ ツールバーの虫アイコンの右にある▼を押して,メニューから...
+ 作っているプログラムのタイプ(このページのサンプルならJa...
+ パッケージエクスプローラーでクラスが選ばれているとその...
+ 入力が終わり,「デバッグ」を押すとデバッグが開始されま...
+ 後はツールバーの虫アイコンをクリックするたびに,直前に...
***もうちょっとだけ続くんじゃ編 [#kfc37e84]
+ デバッグの虫アイコンの右に,●に三角を組み合わせたアイコ...
+ 基本はデバッグと同じですが,こちらは「実行」です.
+ 実行の方が早いのですが,デバッグだといろいろな情報をデ...
+ キーボードからの入力のサンプルプログラムで使っているpri...
+ 詳細はググってね^^
**サンプルコード [#r40b0a47]
***Hello World [#k89a1c58]
とりあえず基本ですね
-HelloWorld.java
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はそのメソッド...
***キーボードからの読み込み。 [#vaf57385]
基本その2。キーボードで入力した文字をそのまま出力するぞ。
-InputFromKeyBoard.java
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 In...
8: strTemp = br.readLine();
9: }catch( Exception e ){
10: e.printStackTrace();
11: }
12: System.out.println( "入力された文字は「" + strTe...
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を作ってみよう [#icc727f3]
ちょっとアプリケーションっぽくなってくる
-SwingTest.java
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 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_CLO...
17: frm.pack();
18: frm.setVisible( true );
19: }
20: }
|2行目 |SwingというGUIの部品が詰まったライブラリを使いま...
|13行目 |まず表示される枠,JFrameを作ります.引数で与えて...
|14行目 |テキストの表示用に,入出力が可能なTextAreaを用意...
|15行目 |フレームにテキスト枠を追加|
|16行目 |フレームを閉じたときのふるまい.今回はJFrameで用...
|17行目 |フレームを適切なサイズに変更.|
|18行目 |フレームの表示|
WindowsのAPIだとめんどくさくて仕方のないGUIの表示がJavaだ...
宣言を入れてもわずか7行で済んでしまう.~
GUIアプリを作りたいけどAPIまんどくせ^^;っていう時は「O...
高速演算は向いてないし,Windowsに限れば.NET FrameWork使え...
Eclipseでポトペタ
http://www.eclipsewiki.net/eclipse/?GUI%A5%D7%A5%E9%A5%B0...
**基礎的な構文 [#ka44bfda]
***1行の扱い [#ccabbd5c]
Javaではセミコロン( ; )にぶつかるまでを1文としています.~
そのため
hoge foo = bar;
と
hoge foo
=bar;
は意味的に同じです.~
また,中括弧{}で囲まれたブロックを1文として扱います.
hoge;
foo;
だと2文ですが,
{ hoge;
foo;
}
だと1文という扱いになります.
***if~else [#xdd4e806]
if( 条件式 )
条件を満たしたときに実行される文
else
それ以外でのときに実行される文
条件式の結果が真(結果が0以外になった)なら直後の文を実行
偽ならelse文を実行
***while [#f29755c8]
while(条件式)
条件を満たす間実行される文
条件式を満たしている間,whileの次の文を実行する
***for [#f31444c4]
for( 初期化式; 繰り返し条件; 条件判定の前に実行される文)
繰り返し条件を満たす間実行される文
for文が実行されるとき,最初に1度初期化式が実行されます.~
そして繰り返し条件を満たす間,次の文が繰り返されます.~
for文3つめのパラメータは,命令実行後,繰り返し条件の判定...
例)
for( i = 0; i < 10; i ++ )
この場合,for文が実行されるときにiに0を代入し,iが10より...
命令が終わった後でiを+1することで,結果的に10回の繰り返し...
**基本的な変数 [#h44862a0]
***変数って何? [#obc08d06]
数学でいうnの様に,値を代入できる記号のようなもの,と捉え...
変「数」とついていますが,数字以外にも文字やフラグの場合...
しかし,数を代入する変数には数を,文字を代入する変数には...
***どう使うのよ? [#s2f94480]
たとえば上記のサンプルコードで画面に文字列を出力する際,p...
この場合プログラムに hoge を出力しろ と書かれているのでつ...
サンプルコードではString型の変数を引数に与えることで,「...
このように,「値が固定されていない場合に,代わりに使う物...
もちろん「変数は代入できる」ものですから,メソッドの結果...
**クラスの基礎 [#b549c68b]
***クラスって何? [#x5cc152e]
簡単に言うと、「変数やらそれをいじくる機能やらを一まとめ...
C(C++でなくてよい)がわかることを前提として書いてます。
***クラスを使ってみる [#ibf0db8e]
クラスを使ってみて感じをつかみましょう。
int型の変数をより便利にしたようなクラス、Integerを使って...
public class test{
public static void main(String[] args){
Integer a = new Integer(10);
System.out.println(a.intValue());
}
}
3行目
Integer a = new Integer(10);
まず左辺でInteger型の変数aを作成し、右辺にあるものをaに代...
new Class-name(あれば引数)
とすると、Class-name型の変数に代入できる「実体」(インス...
(Integerクラスというものの作り方がわかっていて、new Inte...
5行目
a.intValue();
はaの持っている値を返す関数のようなもの(メソッドという)...
変数名.メソッド名(あれば引数)
とすることでその変数のクラス(aならばInteger)の持ってい...
***もうちょっと使ってみる [#rde8d327]
次はStringクラスを使ってみます。
public class test2{
public static void main(String[] args){
String str = new String("Vipper!!");
// Vipper!!という文字列を持ったStringクラスのインスタ...
System.out.println(str); // strをそのまま表示
System.out.println(str.length()); // strの長さを表示
System.out.println(str.toUpperCase()); // strを大文字...
}
}
ここではクラスの使い方をつかんでもらえればOKです。
Stringクラスに他にどんなメソッドがあるかは適当にぐぐって...
***クラスを作ろう [#e648c0b3]
次はクラスを作ってみます。自分で作ってみると一気に理解が...
次のコードを見てください。
class myInt{
private int value;
public myInt(int i){
value = i;
}
public int intValue(){
return value;
}
public int intValueNegative(){
return -1 * value;
}
}
public class test3{
public static void main(String[] args){
myInt a = new myInt(5);
System.out.println(a.intValue());
System.out.println(a.intValueNegative());
}
}
出力
5
-5
二行目
private int value;
クラスの中に入っている変数をフィールドといいます。これは...
test2で10という値を保持していくれていた場所もフィールドで...
private, publicについては後で説明します
四行目~六行目
public myInt(int i){
value = i;
}
クラスの名前と同じ名前のメソッドを、コンストラクタといい...
これは
myInt a = new myInt(5);
としたときに呼び出されるものです。
つまり上のコードではmyInt型のインスタンスをつくり、その保...
あとはだいたい見ればわかってもらえると思います・・・&br;
***アクセス指定子 [#s651da5f]
先ほどのtest3で、privateとかpublicとかいうものがありまし...
一言でいうと、
public: クラスの外からアクセスできる
private: クラスの外からアクセスできない
です。(他にprotectedというのがありますがこれはクラスの継...
例えば、myIntのintValueメソッドはpublicなので、myIntクラ...
System.out.println( a.inValue() );
という風に呼び出すことができました。&br;
一方、valueはprivateなので
a.value = 10;
などと値を変えようとしてもエラーになります。
publicは「外部に公開する値やメソッド」、privateは「外から...
例えば文字列の長さなどはint型で保持されているでしょうが、...
(しかし長さが見れないと意味がないので、 public な length...
public class String(){
private int length; // 外から str.length = 10; とかやら...
//コンストラクタとか
public int length(){
return length;
// こうすることで外から str.length() を呼べば長さがわ...
}
}
こんな感じになっています。(本当はpublic final class Stri...
***thisについて [#g2d6baf7]
上のmyIntのコンストラクタは
public myInt(int i){
value = i;
}
となっています。&br;
しかし仮引数の名前にはiよりかはvalueを使いたいところです...
でもそれだとクラスフィールドのvalueと名前が衝突してどっち...
といったときに登場するのが this です。具体的には次のよう...
public myInt(int value){
this.value = value;
}
myIntのコンストラクタの仮引数の名前を変更しました。また代...
this.変数名
とすると、「クラスフィールドの中にある変数のどれか」を表...
オレの.value
見たいなもんです。
んで、なぜ上のコードでOKかと言うと、名前が被ったときはク...
つまり、 myInt(int value) の中で普通に value と書くと仮引...
オレの.value = (仮引数の)value
となって、めだたくクラスフィールドのvalueに引数で与えられ...
**staticメソッド [#u17655b3]
***staticメソッドとは [#wf2f2fc5]
クラスにはメソッドがありましたが、メソッドを呼び出すとき...
例えば整数を扱うクラスIntegerは、String型をint型に変換す...
Integer it = new Integer(0);
...
int x = it.parseInt("1234");
などとするのは無駄な気がします。
なぜなら文字列を数に変換する操作は「普遍的」なもので、コ...
実は、parseIntを呼び出すのにインスタンスを作る必要はなく、
int x = Integer.parseInt("1234");
のように使えます。このようにインスタンスを作らずとも呼び...
static int parseInt(String)
などとかかれています。
***staticメソッドの作り方 [#t858ee5c]
自分で作ったクラスにstaticメソッドを持たせるには、そのメ...
class MyMath{
public static double sinh(double x){
return (Math.exp(x)-Math.exp(-x))/2;
}
}
Math.exp(x)ではMathクラス(あらかじめ用意されている)のstat...
このようにして作ったメソッドsinhは、MyMathのインスタンス...
double p = MyMath.sinh(1.0);
**クラスの継承 [#c486a184]
**発展 [#pc636e11]
まぁこんな感じでやっていきます
- ifやらfor,whileなんかはCと変わらないので省略.
-- と思ったけど「Cの項目にねーよタコ」って言われt(ry
- Java(というかオブジェクト指向)の基本はクラスを作成し,...
- javaでは入出力はストリーム(流れ)として扱います.
-- それがキーボードからの入力でもファイルでも,TCPだって...
-- たとえば上記のBufferedReaderでreadLineメソッドを利用し...
**リンク [#q03f1191]
***まずは本家 [#kcf70aa2]
- [[JDK ダウンロードページ:http://java.sun.com/javase/ja/...
- [[Java APIドキュメント:http://java.sun.com/javase/ja/6/...
***Eclipse [#o72e1476]
- [[Eclipse:http://www.eclipse.org/]]公式英語です.
-- [[Eclipse Wiki:http://www.eclipsewiki.net/eclipse/]]日...
-[[Eclipse 3.4からはじめるIDE入門:CodeZine(コードジン)...
-[[Eclipse - @IT:http://www.atmarkit.co.jp/channel/ecli...
--[[Eclipse 3.4で超簡単Javaプログラミング基礎入門 (1/5) -...
-[[Eclipse V3.4 をマスターする - IBM developerWorks Japan...
***参考サイト [#x79a0c19]
-[[Java(tm) House Mailing List Homepage (in Japanese):htt...
--[[Java House ML Topics:http://java-house.jp/ml/topics/]...
- [[JavaでHello World(Internet Archive):http://web.archiv...
- [[浅煎り珈琲 Java アプリケーション入門:http://music.geo...
- [[JNode:http://www.jnode.org/]]Java(とアセンブラ)でOS...
ページ名: