5月8日

WordPressのURL: http://abc2015.satoshis.jp/

Eclipseに慣れる

テキストp.406 まとめ

Eclipseでプログラミングするときの手順。

プロジェクトを作る

  1. [新規]-[Javaプロジェクト]
  2. プロジェクト名を入力
  3. 「完了」

クラスを作る

  1. [新規]-[クラス]
  2. パッケージ名を指定(プロジェクト名が入っているので消す)
  3. クラス名を入力
  4. 完了をクリック

21章 例外とアサーション

まとめの練習問題
Renshu.java

import java.io.IOException;

public class Renshu {

	public static void main(String[] args) throws IOException {
		foo(10);
		bar(20);
	}

	static void foo(int a) throws IllegalArgumentException {
		//
	}

	static void bar(int b) throws IOException {
		//
	}
}

Renshu2.java

class FooException extends Exception {

}

public class Renshu2 {

	public static void main(String[] args) {
		try {
			foo();
		} catch (FooException e) {
			System.out.println(e);
		}
	}

	private static void foo() throws FooException {
		throw new FooException();
	}

}

22章 クラスを使いこなす

ネストクラス

ネストクラスには、以下の3種類がある。

  • メンバクラス
  • ローカルクラス
  • 無名クラス

ガベージコレクション

ガベージコレクションは、不要になったインスタンスが使用したメモリ領域を自動的に解放する仕組み。

列挙型

列挙型は定数の集合を扱うための型。

BloodType.java


public enum BloodType {
	A,
	B,
	AB,
	O
}

EnumSample.java

public class EnumSample {

	public static void main(String[] args) {
		BloodType bloodType = BloodType.A;
		System.out.println("bloodType=" + bloodType);
	}

}

EnumSample2.java


public class EnumSample2 {

	public static void main(String[] args) {
		BloodType type = BloodType.valueOf("B");
		System.out.println(type.name());
		System.out.println(type == BloodType.A);
		System.out.println(type == BloodType.B);
		BloodType[] values = BloodType.values();
		for (BloodType value : values) {
			System.out.print(value + ",");
		}
	}

}

static import

static import することで、他のクラスのstaticメンバに直接アクセスできるようになる。

StaticImportSample.java

import static java.lang.Math.*;

public class StaticImportSample {

	public static void main(String[] args) {
		double pi = PI;
		System.out.println(pi);
		int num = abs(-10);
		System.out.println(num);
	}

}

23章 コレクション

コレクションでは、主に3つの種類がよく使われる。

  • List
  • Set
  • Map

ListSample.java(警告が表示されるが、ここでは無視)

import java.util.ArrayList;

public class ListSample {

	public static void main(String[] args) {
		ArrayList list = new ArrayList();
		list.add("東京");
		list.add("ロンドン");
		list.add("パリ");
		list.add(new Integer(1));
		for (int i = 0; i < list.size(); i++) {
			String item = (String)list.get(i);
			System.out.println(i + ":" + item);
		}
	}

}

ジェネリックス

ジェネリックスを使って型引数を指定する。
コレクションフレームワークでは、標準ではObject型を扱うが、ジェネリックスによって特定の型のみを扱えるように制限する。

ListSample3.java

import java.util.ArrayList;
import java.util.List;


public class ListSample3 {

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("東京");
		list.add("ロンドン");
		list.add("パリ");
		for (int i = 0; i < list.size(); i++) {
			String item = list.get(i);
			System.out.println(i + ":" + item);
		}
	}

}

自作クラスの利用

コレクションフレームワークでは、自作クラスも利用できる。

Man.java


public class Man {
	String name;
	int age;
	Man(String name, int age) {
		this.name = name;
		this.age = age;
	}
	void introduce() {
		System.out.println("僕は" + name + " 年は" + age);
	}
}

ListSample5.java

import java.util.ArrayList;
import java.util.List;


public class ListSample5 {

	public static void main(String[] args) {
		List<Man> list = new ArrayList<Man>();
		list.add(new Man("孫", 10));
		list.add(new Man("北尾", 15));
		list.add(new Man("三木谷", 20));
		for (int i = 0; i < list.size(); i++) {
			Man man = list.get(i);
			man.introduce();
		}
	}

}

拡張for文で走査する

ListSample6.java

import java.util.ArrayList;
import java.util.List;

public class ListSample6 {

	public static void main(String[] args) {
		List<Man> list = new ArrayList<Man>();
		list.add(new Man("孫", 10));
		list.add(new Man("北尾", 15));
		list.add(new Man("三木谷", 20));
		for (Man man : list) {
			System.out.println(man);
		}
	}

}

このままでは出力結果がよくわからないので、ManクラスでtoString()メソッドをオーバーライドする。

Man.java


public class Man {
	String name;
	int age;
	Man(String name, int age) {
		this.name = name;
		this.age = age;
	}
	void introduce() {
		System.out.println("僕は" + name + " 年は" + age);
	}

	@Override
	public String toString() {
		return super.toString() + "[name=" + name + ", age=" + age + "]";
	}
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です