適当にjavaに触れてみる
そのまま。気晴らし(?)に、javaをちょいちょい学ぶ。
参考にさせていただいたサイト。
目指せプログラマー!
とほほのJava入門
ここ
目指せプログラマー!
はアセンブラについてかなり書かれている。面白そう・・・。
完璧に初心者なので以下、メモなど。上サイトからコピペもするので、自分の文章ばかりではありません。元サイトさんのほうがかなり確実。
Javaでは、CPUが理解できる言葉に翻訳するのではなく、 Java Virtual Machine(JVM)が理解できる言葉(中間言語=バイトコード)にコンパイルする。WindowsではWindows用の JVM上で、UNIXではUNIXで動作するJVM上で、このコンパイルされたバイトコードが実行される。
コンパイルされたバイトコードはclassファイルといい、このファイルがwindows、UNIXなどの間で共通の形式となって仲立ちをする。
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とかと違うな…。
でもなんとかなりそう。