適当にjavaに触れてみる

そのまま。気晴らし(?)に、javaをちょいちょい学ぶ。
参考にさせていただいたサイト。
目指せプログラマー!
とほほのJava入門


ここ
目指せプログラマー!
アセンブラについてかなり書かれている。面白そう・・・。


完璧に初心者なので以下、メモなど。上サイトからコピペもするので、自分の文章ばかりではありません。元サイトさんのほうがかなり確実。


Javaでは、CPUが理解できる言葉に翻訳するのではなく、 Java Virtual Machine(JVM)が理解できる言葉(中間言語バイトコード)にコンパイルする。WindowsではWindows用の JVM上で、UNIXではUNIXで動作するJVM上で、このコンパイルされたバイトコードが実行される。
コンパイルされたバイトコードはclassファイルといい、このファイルがwindowsUNIXなどの間で共通の形式となって仲立ちをする。
javaは基本クラスをつないで設計する。
基本的に
javac
でclassにコンパイル
java
で実行する。

今回はjcpadを使って簡単プログラミングする。
c:Sun\SDK\
にinstall。


Java言語を構成する語句は「識別子」、「予約語」、「定数」、「文字列」、「演算子」、「区切子」、「コメント」、「ブランク」。

識別子は、メソッド(関数のこと)名、変数名そしてクラス名のことで、変数には、単純変数、配列の2種類があり、さらにint型、char型などの型が存在する。
予約語は、プログラムの実行順序の制御や、変数の型など、決まっている語。
コメントの書き方は2種類で、1つは 「//」の以降改行まで、2つ目は「/*」と「*/」の間である。後者は入れ子ができない。

クラスをあるカテゴリーでまとめておきたいときに、C++では「名前空間(namespace)」という機能を作ることでとりあえず分別はできるが、実質は名前空間を分けているだけだから、分別しているわけではない。Javaでは、パッケージという機能を使うことで可能となる。
たとえば、JDKで用意されているクラスのうち、GUIを担うクラス群(ボタンやテキストエリアなど) は「awt」という名前でパッケージ化されていて、ネットワーク関係を担うクラス群は「net」という名前でパッケージ化してある。

また、JavaにはCやC++のようなヘッダーファイルがないため、どのパッケージを使用するかをあらかじめ宣言しなくてはならない。それが「import」である。
import java.io.*;
がすべてのパッケージを利用するということである。

javaではプログラムはすべてクラス内に入れる。最初に入れるのが、mainメソッドとなる。
CやC++では、main関数を定義するのに、引数を取ったり取らなかったり、また、戻り値をintにしたりvoidにしたり自由に定義できたが、Javaでは、戻り値はvoid、引数はString型の配列と決まっている。

Javaでは基本的に1つのファイルに1クラスで、クラス名とファイル名は同じ。特殊な場合は1ファイルに複数のクラスを定義することもできるが、オブジェクト指向に反するので、このような使い方は一般にしない。小さなプログラムや、 Java Appletを作るときには、やるらしい。

変数はどこでも宣言でき、メソッドの内外どちらで宣言したかによってmメンバー変数かローカル変数かの区別ができる。
CやC++と異なり、1文字を表す「char」型は、16bit(2byte)に拡張されていて、これはunicodeに拡張されているからである。

小数は標準でdouble型になりますので、float型として扱いたい場合は、数字の後に「f」または「F」をつけなくてはない。
f = 3.1415f;
みたいに。

CやC++では、真は1、偽は0となったが、Javaではtrueかfalseである。すなわち、この比較結果は boolean型にしか代入できない。

DOS窓への文字の表示はデバッグも含めてよく行なうが、それは
System.out.print("abcdef");
で行なう。
System.out.println("abcdef");
だと、最後に改行が入る。
リダイレクションを使えるのは、前者のみ。
変数などを表示させたいときは、
System.out.println("n1=" + n1 + "です");
のように+で文をつなげる。

文章を扱うのに、javaでは文字列という概念を使う。
それはstringクラスで使う。

class Test{
    public static void main(String args[]){
        int    n         = 1;
        String str1      = "モーニング娘。の中で" + n + "番目は";
        String strMyouji = "ごとう";
        String strNamae  = "まき";
        String strName   = strMyouji + strNamae;
        System.out.println(str1 + strName + "だと思います");
    }
}

のように書ける。

たとえば、数字を入力してそれを判別するクラスは次のように書ける。

import  java.io.*;

class Test{
    public static void main(String args[]){
        int n;
        n = readNumber();
        if ( 10 <= n && n < 20 )
            System.out.println("10代");
    }

    // キーボードから数字を入力するメソッド
    public static int readNumber(){
        byte b[] = new byte[100];

        try{
             System.in.read(b);
             return Integer.parseInt((new String(b)).trim());
        }catch(Exception e){
             return 0;
        }
    }
}

ここで、readNumber()が入力を受け付けてint変数を返すメソッドである。System.in.read(b)がおそらくデータ受付け、

Integer.parseInt((new String(b)).trim());

でおそらくint型の数字として返すのではないか。

結構ところどころCとかと違うな…。
でもなんとかなりそう。