WordPressのURL: http://abc2015.satoshis.jp/
Eclipseに慣れる
テキストp.406 まとめ
Eclipseでプログラミングするときの手順。
プロジェクトを作る
- [新規]-[Javaプロジェクト]
- プロジェクト名を入力
- 「完了」
クラスを作る
- [新規]-[クラス]
- パッケージ名を指定(プロジェクト名が入っているので消す)
- クラス名を入力
- 完了をクリック
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 + "]"; } }