23‐1
(1) 何も継承することなく定義したクラスも自動的にあるクラスを継承します。そのクラスは何ですか?
すなわち、そのクラスは広い意味で全てのクラスのスーパークラスになります。
(2) (1)のクラスのメソッドで、あるインスタンスを文字列に変換するという役割をもつものは何ですか?
(3) (1)のクラスのメソッドで、自分のインスタンスと他のインスタンスが等しいかどうか判定するという役割をもつものは何ですか?
23‐2
選手をモデルとするPlayer01というクラスを次のように作成・コンパイルします。
------------------------------------------------------------------------
class Player01 {
	private String name;

	Player01(String name){
		this.name = name;
	}
}
------------------------------------------------------------------------
上記Player01を使用する次のようなクラスを作成・コンパイル・実行します。
------------------------------------------------------------------------
class Exer23_02 {
	public static void main(String[] args){
		Player01 p = new Player01("Matsui");
		System.out.println(p);
	}
}
------------------------------------------------------------------------
実行結果は、"Player01@7ced01"のような意味不明の出力になりました。
これを、Exer23_02を実行すると"Matsui"と出力されるように、Player01を変更しなさい。

23‐3
次のクラスをコンパイル・実行するとどのように出力されますか?
なお、Player02は23‐2で変更した後のものとします。(変更前であっても同じです。)
------------------------------------------------------------------------
class Exer23_03 {
	public static void main(String[] args){
		Player01 p1 = new Player01("Matsui");
		Player01 p2 = p1;
		Player01 p3 = new Player01("Matsui");
		System.out.println(p1 == p2);
		System.out.println(p1 == p3);
		System.out.println(p1.equals(p2));
		System.out.println(p1.equals(p3));
	}
}
------------------------------------------------------------------------

23‐4
次のクラスをコンパイル・実行するとどのように出力されますか?
------------------------------------------------------------------------
class Exer23_04 {
	public static void main(String[] args){
		System.out.println("abcdefgh".length());
		System.out.println("abcdefgh".charAt(4));
		System.out.println("abcdefgh".indexOf("efg"));
		System.out.println("abcdefgh".substring(4, 6));
	}
}
------------------------------------------------------------------------

23‐5
次のクラスをコンパイル・実行するとどのように出力されますか?
------------------------------------------------------------------------
class Exer23_05 {
	public static void main(String[] args){
		String s1 = new String("Matsui");
		String s2 = s1;
		String s3 = new String("Matsui");
		System.out.println(s1 == s2);
		System.out.println(s1 == s3);
		System.out.println(s1.equals(s2));
		System.out.println(s1.equals(s3));
	}
}
------------------------------------------------------------------------

23‐6
コマンドライン引数で指定した2つの文字列をチェックする次のようなクラスを作成しました。
------------------------------------------------------------------------
class Exer23_06 {
	public static void main(String[] args){
		if(args[0] == "tanaka" && args[1] == "zzz0123"){
			System.out.println("ログインできました");
		}else{
			System.out.println("ログインできませんでした");
		}
	}
}
------------------------------------------------------------------------
上記クラスをコンパイルし、次のように実行しました。
java Exer23_06 tanaka zzz0123
その結果、"ログインできませんでした"と出力されました。
その理由を説明するとともに、"ログインできました"と出力されるように修正しなさい。

23‐7
次のクラスをコンパイル・実行するとどのように出力されますか?
------------------------------------------------------------------------
class Exer23_07 {
	public static void main(String[] args){
		StringBuffer sb = new StringBuffer();
		sb.append("zyxwvu");
		sb.insert(3, "abc");
		sb.replace(3, 6, "0123");
		System.out.println(sb);
	}
}
------------------------------------------------------------------------

23‐8
3つのコマンドライン引数(整数)の積の桁数を出力するようなクラスを作成しなさい
23‐9
Integerクラスのインスタンスはint型のデータを内部に保持します。インスタンスの生成方法は次のものがあります。
・コンストラクタでint型の引数を指定してnewする。
・コンストラクタでString型の引数を指定してnewする。
・IntegerクラスのstaticメソッドvalueOf()をString型の引数を指定して呼び出す。
上記の3通りの方法を使用し、適当な値を指定してIntegerのインスタンスを生成し、それぞれのインスタンスから内部で保持しているint型のデータを取り出して積を求め、それを出力するようなクラスを作成しなさい。