============================================================================================ Learn More About Java2 Professional Tutrial Vol.1 I-ichirow Suzuki ============================================================================================ Learn More About Java2 Professional Tutrial Chapter 1 変数とオブジェクト Chapter 2 お約束とコメント Chapter 3 メソッドと基本制御 Chapter 4 コンストラクタと初期化 Chapter 5 クラスの再利用 Chapter 6 継承 Chapter 7 ポリモフィズム Chapter 8 インターフェイスとインナークラス Chapter 9 コレクション Chapter10 エラーハンドリング Chapter11 ファイル入出力 Chapter12 Creating Windows AWT Chapter13 Creating Windows Swing Chapter14 Multiple Threads Chapter15 ネットワーク Chapter16 アルゴリズムとデータ構造 /////////////////////////////////////////////////////////////////////////////////////////// //// Chapter 1 変数とオブジェクト //------------------------------------------------ // c01 どれも結局同じ意味 String s; s = "asdf" ; String s = "asdf"; String s = new String("asdf"); //------------------------------------------------ // c01 どれも結局同じ意味 char c = 'x'; Character C = new Character(c); Character C = new Character('x'); //------------------------------------------------ // c01 スコープとは { int x = 12; /* only x available */ { int q = 96; /* both x & q available */ } /* only x available */ /* q "out of scope" */ } { int x = 12; { int x = 96; /* illegal */ } } { String s = new String("a string"); } /* end of scope */ //------------------------------------------------ // c01 クラスオブジェクトのインスタンス // DataBase.java class DataOnly { int i; float f; boolean b; } public class DataBase //ファイルに1つだけの存在のpublicクラス { public static void main(String[] args) { DataOnly d = new DataOnly(); d.i = 47; d.f = 1.1f; d.b = false; } } //------------------------------------------------ // c01 メソッドの戻り型 returnType methodName( /* argument list */ ) { /* Method body */ } int storage(String s) { return s.length() * 2; } boolean flag() { return true; } float naturalLogBase() { return 2.718f; } void nothing() { return; } void nothing2() {} //------------------------------------------------ // c01 staticとは // StaticTest.java class StaticTest { static int i = 47; } public class StaticTestBase { public static void main(String[] args) { StaticTest.i++; } } //------------------------------------------------ // c01 staticとは 応用 // StaticFunBase.java class StaticTest { static int i = 47; } class StaticFun { static void incr() { StaticTest.i++; } public class StaticFunBase { public static void main(String[] args) { StaticFun sf = new StaticFun(); sf.incr(); } } /////////////////////////////////////////////////////////////////////////////////////////// //// Chapter 2 お約束とコメント //------------------------------------------------ // c02 Hello, world ? // HelloDate.java import java.util.*; public class HelloDate { public static void main(String[] args) { System.out.println("Hello, it's: "); System.out.println(new Date()); } } /** Hello, it's: Sat Feb 24 14:37:56 JST 2001 **/ //------------------------------------------------ // c02 コメント /* This is a comment * that continues * across lines */ /* This is a comment that continues across lines */ // this is a one-line comment /** A class comment */ public class docTest { /** A variable comment */ public int i; /** A method comment */ public void f() {} } /////////////////////////////////////////////////////////////////////////////////////////// //// Chapter 3 メソッドと基本制御 //------------------------------------------------ // オブジェクトの = は 同じメモリアドレスを参照させる 決して値の代入ではない //: c03:Assignment.java class Number { int i; } public class Assignment { public static void main(String[] args) { Number n1 = new Number(); Number n2 = new Number(); n1.i = 9; n2.i = 47; System.out.println("1: n1.i: " + n1.i + ", n2.i: " + n2.i); n1 = n2; System.out.println("2: n1.i: " + n1.i + ", n2.i: " + n2.i); n1.i = 27; System.out.println("3: n1.i: " + n1.i + ", n2.i: " + n2.i); } } /** 1: n1.i: 9, n2.i: 47 2: n1.i: 47, n2.i: 47 3: n1.i: 27, n2.i: 27 **/ //------------------------------------------------ //: c03:PassObject.java オブジェクトを渡す // class Letter { char c; } public class PassObject { static void f(Letter x) { x.c = 'z'; } public static void main(String[] args) { Letter x = new Letter(); x.c = 'a'; System.out.println("1: x.c: " + x.c); f(x); System.out.println("2: x.c: " + x.c); } } /** 1: x.c: a 2: x.c: z **/ //------------------------------------------------ //: c03:Equivalence.java イコールの定義 public class Equivalence { public static void main(String[] args) { Integer n1 = new Integer(47); Integer n2 = new Integer(47); System.out.println(n1 == n2);// 値が格納されているメモリアドレスが等しいか比べる System.out.println(n1 != n2); } } /** false true **/ //------------------------------------------------ //: c03:EqualsMethod.java イコールの定義 public class EqualsMethod { public static void main(String[] args) { Integer n1 = new Integer(47); Integer n2 = new Integer(47); System.out.println(n1.equals(n2));//値を比べる } } /** true **/ //------------------------------------------------ //: c03:EqualsMethod2.java class Value { int i; } public class EqualsMethod2 { public static void main(String[] args) { Value v1 = new Value(); Value v2 = new Value(); v1.i = v2.i = 100; System.out.println( v1.i == v2.i ); System.out.println( v1.equals(v2)); // System.out.println( (v1.i).equals(v2.i) ) ;// Error ! } } /** true false **/ //------------------------------------------------ //: c03:ShortCircuit.java 論理演算子 boolean public class ShortCircuit { static boolean test1(int val) { System.out.println("test1(" + val + ")"); System.out.println("result: " + (val < 1)); return val < 1; } static boolean test2(int val) { System.out.println("test2(" + val + ")"); System.out.println("result: " + (val < 2)); return val < 2; } static boolean test3(int val) { System.out.println("test3(" + val + ")"); System.out.println("result: " + (val < 3)); return val < 3; } public static void main(String[] args) { if(test1(0) && test2(2) && test3(2))// All true { System.out.println("expression is true"); } else { System.out.println("expression is false"); } } } /** test1(0) result: true test2(2) result: false test3(2) result: true expression is false **/ //------------------------------------------------ //: c03:IfElse.java if-else public class IfElse { static int test(int testval, int target) { int result = 0; if(testval > target) { result = +1; } else if(testval < target) { result = -1; } else { result = 0; // Match } return result; } public static void main(String[] args) { System.out.println(test(10, 5)); System.out.println(test(5, 10)); System.out.println(test(5, 5)); } } /** 1 -1 0 **/ //------------------------------------------------ //: c03:WhileTest.java While public class WhileTest { public static void main(String[] args) { double r = 0; while(r < 0.99d) { r = Math.random(); System.out.println(r); } } } /** 0.4643098755141839 0.46956833871910775 0.3023014793430383 0.9343842809456361 0.9642984062528261 0.594761574760128 0.7540668421887108 0.42473394514593177 0.3312915948912968 0.08084027534642113 0.4218415025627196 0.4687745399436214 0.3829927758818946 0.616095194457045 0.011273102047402395 0.4732251094198431 0.33792380108740894 0.5604475435957004 0.5978686611004081 0.35382757166521284 0.5288154146512988 0.3183120940316535 0.99461348729767 **/ //------------------------------------------------ //: c03:ListCharacters.java for loop public class ListCharacters { public static void main(String[] args) { for( char c = 0; c < 128; c++) { if (c != 26 )// ANSI Clear screen { System.out.println("value: " + (int)c + "character: " + c ); } } } } /** value: 0character: ..... . . . value: 118character: v value: 119character: w value: 120character: x value: 121character: y value: 122character: z value: 123character: { value: 124character: | value: 125character: } value: 126character: ~ value: 127character: **/ //------------------------------------------------ //: c03:CommaOperator.java for loop public class CommaOperator { public static void main(String[] args) { for(int i = 1, j = i + 10; i < 5;i++, j = i * 2) { System.out.println("i= " + i + " j= " + j); } } } /** Here's the output: i= 1 j= 11 i= 2 j= 4 i= 3 j= 6 i= 4 j= 8 **/ //------------------------------------------------ //: c03:BreakAndContinue.java break & continue public class BreakAndContinue { public static void main(String[] args) { for(int i = 0; i < 100; i++) { if(i == 74) { break; // Out of for loop } if(i % 9 != 0) continue; // Next iteration { System.out.println(i); } } int i = 0; // An "infinite loop": while(true) { i++; int j = i * 27; if(j == 1269) { break; // Out of loop } if(i % 10 != 0) { continue; // Top of loop } System.out.println(i); } } } /** 0 9 18 27 36 45 54 63 72 10 20 30 40 **/ //------------------------------------------------ //: c03:VowelsAndConsonants.java switch public class VowelsAndConsonants { public static void main(String[] args) { for(int i = 0; i < 20; i++) { char c = (char)(Math.random() * 26 + 'a'); System.out.print(c + ": "); switch(c) { case 'a': case 'e': case 'i': case 'o': case 'u': System.out.println("vowel"); break; default: System.out.println("consonant"); } } } } /** c: consonant r: consonant d: consonant c: consonant j: consonant j: consonant k: consonant v: consonant w: consonant s: consonant a: vowel r: consonant v: consonant i: vowel q: consonant y: consonant t: consonant l: consonant x: consonant s: consonant **/ /////////////////////////////////////////////////////////////////////////////////////////// //// Chapter 4 コンストラクタと初期化 //------------------------------------------------ //: c04:SimpleConstructor.java デフォルトコンストラクタ class Rock { Rock()// This is the constructor { System.out.println("Creating Rock"); } } public class SimpleConstructor { public static void main(String[] args) { for(int i = 0; i < 5; i++) { new Rock(); } } } /** Creating Rock Creating Rock Creating Rock Creating Rock Creating Rock **/ //------------------------------------------------ //: c04:SimpleConstructor2.java コンストラクタへ値を渡す class Rock2 { Rock2(int i) // This is the constructor { System.out.println("Creating Rock number " + i); } } public class SimpleConstructor2 { public static void main(String[] args) { for(int i = 0; i < 5; i++) { new Rock2(i); } } } /** Creating Rock number 0 Creating Rock number 1 Creating Rock number 2 Creating Rock number 3 Creating Rock number 4 **/ //------------------------------------------------ //: c04:OverloadingOrder.java // パラメータの内容が異なればコンストラクタの名前は同一でも構わない public class OverloadingOrder { static void print(String s, int i) { System.out.println("String: " + s +", int: " + i); } static void print(int i, String s) { System.out.println("int: " + i + ", String: " + s); } public static void main(String[] args) { print("String first", 11); // String, int print(99, "Int first"); // int, String } } /** String: String first, int: 11 int: 99, String: Int first **/ //------------------------------------------------ //: c04:DefaultConstructor.java // デフォルトコンストラクタは省略が可能 自動的に作成される class Bird { } public class DefaultConstructor { public static void main(String[] args) { Bird nc = new Bird(); // default! } } /** **/ //------------------------------------------------ //: c04:Cake.java class Pie { void f() { System.out.println("Pie.f()"); } } class Cake { public static void main(String[] args) { Pie x = new Pie(); x.f(); } } /** * Pie.f() */ //------------------------------------------------ //: c04:Flower.java // thisはクラスのコンストラクタを意味する public class Flower { int petalCount = 0; String s = new String("null"); Flower(int petals) { petalCount = petals; System.out.println("Constructor w/ int arg only, petalCount= " + petalCount); } Flower(String s, int petals) { this(petals); this.s = s; // Another use of "this" System.out.println("String & int args"); } Flower() { this("hi", 47); System.out.println("default constructor (no args)"); } void print() { System.out.println("petalCount = " + petalCount + " s = "+ s); } public static void main(String[] args) { Flower x = new Flower(); x.print(); } } /** Constructor w/ int arg only, petalCount= 47 String & int args default constructor (no args) petalCount = 47 s = hi **/ //------------------------------------------------ //: c04:OrderOfInitialization.java // インスタンスオブジェクトの生成の後、コンストラクタが実行される class Tag { Tag(int marker) { System.out.println("Tag(" + marker + ")"); } } class Card { Tag t1 = new Tag(1); // Before constructor Card() { // Indicate we're in the constructor: System.out.println("Card()"); t3 = new Tag(33); // Reinitialize t3 } Tag t2 = new Tag(2); // After constructor void f() { System.out.println("f()"); } Tag t3 = new Tag(3); // At end } public class OrderOfInitialization { public static void main(String[] args) { Card t = new Card(); t.f(); // Shows that construction is done } } /** Tag(1) Tag(2) Tag(3) Card() Tag(33) f() **/ //------------------------------------------------ //: c04:ExplicitStatic.java // static はクラス変数 class Cup { Cup(int marker) { System.out.println("Cup(" + marker + ")"); } void f(int marker) { System.out.println("f(" + marker + ")"); } } class Cups { static Cup c1 = new Cup(1); static Cup c2 = new Cup(2); Cups() { System.out.println("Cups()"); } } public class ExplicitStatic { public static void main(String[] args) { System.out.println("Inside main()"); Cups.c1.f(99); } } /** Inside main() Cup(1) Cup(2) f(99) **/ //------------------------------------------------ //: c04:IceCream.java class Sundae { private Sundae() { } static Sundae makeASundae() { return new Sundae(); } } public class IceCream { public static void main(String[] args) { //! Sundae x = new Sundae(); Sundae x = Sundae.makeASundae(); } } /** * */ //------------------------------------------------ //: c04:Arrays.java // プリミティブ変数の配列 public class Arrays { public static void main(String[] args) { int[] a1 = { 1, 2, 3, 4, 5 }; int[] a2; a2 = a1; for(int i = 0; i < a2.length; i++) { a2[i]++;//increment } for(int i = 0; i < a1.length; i++) { System.out.println("a1[" + i + "] = " + a1[i]); } } } /** a1[0] = 2 a1[1] = 3 a1[2] = 4 a1[3] = 5 a1[4] = 6 **/ I-ichirow Suzuki _/_/_/_/_/_/_/_/_/_/_ URL : www.kg-group.com Top Page Mail : suzuki@kg-group.com /_/_/_/_/_/_/_/_/_/_/_/_ ICQ : 3743158