Aritalab:Lecture/Programming/Java
From Metabolomics.JP
< Aritalab:Lecture | Programming(Difference between revisions)
(→コンパイルの仕方) |
m |
||
Line 1: | Line 1: | ||
==Java プログラミング== | ==Java プログラミング== | ||
+ | ===プログラムの書き方=== | ||
+ | [http://www.eclipse.org/ Eclipse]のような統合環境でプログラムを書く場合、自動的にインデントが入ります。インデントはプログラムを読みやすくする(特に{}の対応)ために入れるので、崩さないようにしましょう。Emacsの場合は、[http://jdee.sourceforge.net/ JDE]などを使ってください。 | ||
+ | |||
+ | Eclipseの場合は、Menu→Source→Formatで崩れたインデントを修正できます。自分流にインデントしたい人はPreferences→Java→Code Styleで変更できます。 | ||
===コンパイルの仕方=== | ===コンパイルの仕方=== | ||
Line 33: | Line 37: | ||
Javaで小数とfloatを一緒に使うと、「精度が落ちている」とエラーになります。メモリ量は気にしないで常にdoubleを使いましょう。 | Javaで小数とfloatを一緒に使うと、「精度が落ちている」とエラーになります。メモリ量は気にしないで常にdoubleを使いましょう。 | ||
<pre> | <pre> | ||
− | float f = 3. | + | float f = 3.14; // コンパイルエラー。精度が落ちている。3.14fはOK。 |
− | double d = 3. | + | double d = 3.14; // OK。 |
</pre> | </pre> | ||
Line 53: | Line 57: | ||
String str = "Value of pi is " + 3.1415; | String str = "Value of pi is " + 3.1415; | ||
</pre> | </pre> | ||
− | |||
===クラス=== | ===クラス=== | ||
Line 109: | Line 112: | ||
boolean empty() { return (size==0); } | boolean empty() { return (size==0); } | ||
− | static public void main(String[] args) | + | //サンプルプログラム |
+ | static public void main(String[] args) | ||
{ List L = new List(); | { List L = new List(); | ||
for(int i=0; i < 10; i++) | for(int i=0; i < 10; i++) |
Revision as of 15:42, 5 October 2010
Contents |
Java プログラミング
プログラムの書き方
Eclipseのような統合環境でプログラムを書く場合、自動的にインデントが入ります。インデントはプログラムを読みやすくする(特に{}の対応)ために入れるので、崩さないようにしましょう。Emacsの場合は、JDEなどを使ってください。
Eclipseの場合は、Menu→Source→Formatで崩れたインデントを修正できます。自分流にインデントしたい人はPreferences→Java→Code Styleで変更できます。
コンパイルの仕方
全てのプログラムはクラスの集合として表現されます。 ファイル名はそのファイル内に記述するクラス名にします。 ファイル集合の中で、どこかに一箇所、スタートする位置としてmain関数をおきます。
- ファイル Test.java
public class Test { public static void main(String[] args) { for(int i=0; i < args.length; i++) System.out.println(args[i]); } }
コンパイルして実行してみましょう。
$ javac Test.java [1]+ Done $ java Test This is a pen This is a pen
基本データ型
変数は必ず型を持ち、異なる型の間では型変換を行う必要があります。
また、各基本データ型int, float, double等はクラスと互換性が無いため、それぞれInteger, Float, Doubleというクラスが用意されています。
Javaで小数とfloatを一緒に使うと、「精度が落ちている」とエラーになります。メモリ量は気にしないで常にdoubleを使いましょう。
float f = 3.14; // コンパイルエラー。精度が落ちている。3.14fはOK。 double d = 3.14; // OK。
コンパイラは、自明な型変換なら自動で行ってくれます。
Integer I = 1; // 基本データ型をIntegerクラスに型変換 int i = I; // クラスIの中身を基本データ型に型変換
Javaのクラス定義における よく遭遇するのは、文字列型から数値への変換です。
String str = "3.1415"; float pi = Float.valueOf(str); // piに3.1415という数値が入る。 int pi = Integer.valueOf(str); // コンパイルエラー。3.1415は整数ではない。
数値を逆に文字列にするには+記号でOKです。
String str = "Value of pi is " + 3.1415;
クラス
オブジェクト単位でデータを管理するのに、クラスを定義します。
- File List.java
class ListRep { // publicなclassではない(List.java中に書ける。) Object obj; ListRep(Object o) { obj = o; } // コンストラクタ ListRep prev; ListRep next; public Object inf() { return obj; } } public class List { ListRep head =null; ListRep tail =null; int size =0; List() {} //コンストラクタ void push(Object o) { ListRep r = new ListRep(o); if (size > 0) head.prev = r; else tail = r; r.next = head; head = r; size++; } Object pop() { ListRep x = head; if (x != null) { ListRep y = x.next; head = y; if (y != null) y.prev = null; else tail = null; size--; return x.inf(); } else { System.err.println("Accessing empty list."); System.exit(1); } } void append(Object o) { ListRep r = new ListRep(o); if (size > 0) tail.next = r; else head = r; r.prev = tail; tail = r; size++; } int size() { return size; } boolean empty() { return (size==0); } //サンプルプログラム static public void main(String[] args) { List L = new List(); for(int i=0; i < 10; i++) L.push(i); while (!L.empty()) System.out.println(L.pop()); } }