JAVA Note

¥»ºô­¶¥H¥´³yµL»Ùê¾\Ū¬°¥Ø¼Ð¡A¥i¥H¥Î¥ô¦óÂsÄý¾¹¨ÓÆ[¬Ý¥»ºô­¶


Javaªº¸ê°T¨ä¹ê¤w¸g°÷¦h¤F, ¤£¦ý¦³³\¦h®ÑÁÙ¦³¦U¦¡¦U¼Ëªººô¯¸, ·F¹Àµ§ªÌÁ٧ˤ@­ÓJavaµ§°O©O? ¦Ñ¹ê»¡¥¿¦]¬°¸ê°T¤Ó¦h¤Ï¦Ó®e©ö§Ë¤£²M»y¨¥ªº¥þ»ª, ¤@¤è­±¤]¬O¥»¤H¬°·Ç³ÆSCJP¦Ò¸Õ©Ò¾ã²z, §Æ±æ°µ¨ì´£ºõ®²»â, ¦r¦r¯]¿Y, ¨S¦³¼o¨¥¡C
·PÁ´¿¸g«ü¾ÉªºSCJP¦Ñ®v : ¦¿¸qµØ ¥ý¥Í

²¤¶

Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language.

¦bSun Microsystemsªº Java»y¨¥¥Õ¥Ö®Ñ¸Ì´£¨ì¡A Java»y¨¥¦³¥H¤U¯SÂI

À³¸ÓÁÙ¥i¥[¤J¥H¤U¯SÂI

JAVAªºª©¥»

¤U¸ü»P¦w¸Ë

jdkªº¦w¸Ë»¡©ú

Java Development Kit 5.0 ©x¤è¦w¸Ë»¡©ú¡A­Y»Ý­nstep by stepªºª©¥»½Ð°Ñ¦Ò¡GJava Programmingµ{¦¡µo®iÀô¹Ò«Ø¸m«ü«n

Class Pathªº»¡©ú

JAVA¥­¥x¬[ºc

J2SE ¥­¥x¬[ºc¹Ï

J2SE¥­¥x¬[ºc¹Ï

JAVAµ{¦¡»y¨¥

java»y¨¥¬O°ª¶¥»y¨¥¡A¯S§Oªº¬O¥¦¦P®É¦³½sĶ(compiler)»Pª½Ä¶(interpreter)ªº¦æ¬°

¥iÀ³¥Î¼h­±

»y¨¥½sͬyµ{

HelloWorld.java asciiªºjava­ì©lÀÉ
javac HelloWorld.java
½sĶ(compiler)
HelloWorld.class ²£¥Íjavaªºbytecode
java HelloWorld
VM(Virtual Machine)¥i°õ¦æ¦b¦UºØ¥­¥x
  1. class loader
  2. bytecode verifier
  3. ª½Ä¶(interpreter)
Hello, World µ{¦¡°õ¦æµ²ªG

JAVA¥­¥x(Java Platform)

Javaµ{¦¡¬[ºc

Javaµ{¦¡¦³2¤jÃþ

Applicationªºµ²ºc

/** ²Ä¤@¤äJavaµ{¦¡
¥u¦³µù¸Ñ¥i¥H©ñ¦b package °Ï¤§«e
*/

//package «Å§i°Ï //¥iµL¦¹«Å§i°Ï¡A­Y¥¼«ü©wpackage«h¹w³]package¬°¥Ø«e¥Ø¿ý
package exam.test;
//import ±Ô­z°Ï //¥iµL¦¹±Ô­z°Ï¡A¹w³]¤@©w·| import java.lang;
import java.awt.Button; //¤Þ¤J«ü©wªºclass
import java.util.*; //¤Þ¤J«ü©wªºpackage
//class, interface, enum ©w¸q°Ï
//int x; // µo¥Í½sĶ¿ù»~
public class HelloWorld
{
     public static void main( String[] args ) // µ{¦¡°õ¦æ¶i¤JÂI
     {
          System.out.println( "Hello World " ); //¦]¬°¹w³] import ¤F java.lang , ©Ò¥H¥Nªí³o­Ó System.out.println ¦b¨ä¤§¤U

          //b = 200; // µo¥Í½sĶ¿ù»~
          tmp obj = new tmp();
          obj.i = 6;
          System.out.println( obj.i );
     }
}

class tmp
{
     int i = 5;
}

½Ð¥H¤å®Ñ½s¿è¾¹Áä¤J¤W¤èµ{¦¡°Ï¶ô¤º®e¡A¨Ã¯S§Oª`·N¤U¦C´XÂI

©R¦W¤è¦¡

¼¶¼gµ{¦¡®É±`¹J¨ì­n¬°Ãþ§O¡A¨ç¼Æ¡AÅܼơA±`¼Æ©R¦Wªº±¡ªp¡AJava ¤¤ªº©R¦W¥²¶·²Å¦X¨äÃѧO¦r(Identifier)ªº³W½d

©µ¦ù¾\Ū¡GJava Programming Style Guide  ,  Code Conventions for the Java Programming Language(Javaµ{¦¡½XºD¨Ò½Ķ)

package«Å§i°Ï

import±Ô­z°Ï = ¤Þ¤J¦ó®M¥ó

class, interface, enum °Ï = Ãþ§O«Å§i

Appletªºµ²ºc

Ä~©ÓÃö«Y

»yªk

classÃþ§O html»yªk
import java.awt.*;
import java.applet.*;

public class appletest extends Applet
{
¡@ //¤¸¥ó°Ï
String s1 = "";
¡@ButName=this.getParameter("ButtonName"); //±µ¦¬°Ñ¼Æ

¡@public void init() //¥iµø¬°«Øºc¨ç¼Æ
¡@{
¡@¡@s1=s1+"init()->";
¡@}
¡@public void start() //¥iµø¬°mainµ{¦¡¶i¤JÂI
¡@{
¡@¡@s1=s1+"start()->";
¡@}
¡@public void stop()
¡@{
¡@¡@s1=s1+"stop()->";
¡@}
¡@public void destroy()
¡@{
¡@¡@s1=s1+"destroy()->";
¡@}
¡@public void paint(Graphics g) //¸ü¤J®É­«µeApplet©Îcall repaint()
¡@{
¡@¡@ g.drawString("Hello World!", 25, 25);
¡@}
}
<html>
<head>
</head>
<body>
¡@<applet code="appletest.class" width=500 height=150>
¡@¡@<param name = "ButtonName" value = "B1">
¡@¡@alt="±zªºÂsÄý¾¹¤£¤ä´©Applet"
¡@</applet>
</body>
</html>
/*
  • Appletµ{¦¡»Ý¥Îhtml¥]°_¨Ó¦bÂsÄý¾¹©Îappletviewer°õ¦æ
  • ©Ò¦³ªºAppletµ{¦¡¥²¶·extends Applet
  • ¸ü¤J®É©I¥sclassªºinit()»Pstart()
  • Â÷¶}®É©I¥sstop()»Pdestroy()
  • Applet¤£¥i§@IOªº°Ê§@
  • ­Y§ï¥Îimport javax.swing.JApplet (¥ÑAWT§ï¥ÎSwing) «hÂsÄý¾¹¤¤·|¥X²{¦Ç¦âªº°Ï¶ô¥NªíApplet¨Ã¥¼³Q°õ¦æ¡A­ì¦]¬OÂsÄý¾¹¥u¤ä´©¨ìJDK1.1.x¡A¦]¦¹¥²¶·¦w¸ËJava Plugin(JRE)
  • ¨ä¥LÂsÄý¾¹­YµLªk°õ¦æ¤]­n¦w¸ËJava Plugin(JRE)
*/

½s¿èjavaµ{¦¡

¤@¯ë¦Ó¨¥½s¼gjavaµ{¦¡¥i¿ï¾Ü¥H¤U¤TºØÃþ«¬ªº½s¿è¾¹

µ§ªÌªº«ØÄ³¬Oªì¾Ç¨Ï¥Î¯Â¤å¦rªº½s¿è¾¹¡A¨ä¤¤µ§ªÌ°¾¦nªº¬O Crimson ¡A¤é«á¥i§ï¥Î¤õ¬õªºEclipse¡C
¥H¤U°²³]SDK¤w¦w¸Ë¦bd:\jdk¡A±µ¤U¨Ó¬°¤j®a¤¶²Ð¦p¦ó³]©wCrimson»PUltraEdit§@¬°½s¼gjavaªºIDEÀô¹Ò ¡C

³]©wCrimson§@¬°½s¼gjavaªºIDEÀô¹Ò

³]©wUltraEdit§@¬°½s¼gjavaªºIDEÀô¹Ò

Java¸ê®Æ«¬ºA

public class DataType
{
   public static void main(String args[])
   {
     int i; //Åܼƫŧi¥H¸ê®Æ«¬ºA¶}ÀY¡A«á±µÅܼƦWºÙ
     i=3; //µ¥¸¹ºÙ¬°«ü©w±Ô­z(Assignment Statement)¡A¥ªÃä¬OLvalue¥NªíÅܼƦWºÙ¡A¥kÃä¬ORvalue¥Nªí¹Bºâ¦¡(Expressions)
     System.out.print("oringinal i is ");
     System.out.println(i);
     i = 4; // 4 ¦b¦¹ºÙ¤§¬°Integer Literal
     System.out.printf("i be changed to %d\n\n",i); //Java 1.5°_¤ä´©printf()
     final int j = 3;
     System.out.print("oringinal j is ");
     System.out.println(j);
     // j = 4; //¹ï±`¼Æ«ü©w­È·|³y¦¨½sĶ¿ù»~
     System.out.printf("i be changed to %d\n\n",j);

     int a1 = 100;
     long n1 = a1; // ¦Û°ÊÂ૬¦¨¥\ ¤p¼Æ­ÈÂà¤j¼Æ­È( int Âà long )
     long n2 = 100;
     //int a2 = n2; // ¦Û°ÊÂ૬¥¢±Ñ ¤j¼Æ­ÈÂà¤p¼Æ­È ( long Âà int )
     int a2= (int)n2; // ±ý±N¤j¼Æ­ÈÂà¤p¼Æ­È»Ý¨Ï¥Î ±j¨îÂ૬ ( long Âà int )
     int a3 = (int)123.23; // double Âà int
     int a4 = (int)123.23F; // float Âà int
     byte a5 = 'A'; // char Âà byte

     double d = 123.3;
     //a1 = a1 + d; //¦Û°ÊÂ૬¥¢±Ñ
     a1 += d; // ±Ä¤£©ú½T«¬ºAÂà´«¦¨¥\

/*°Ñ¦Ò«¬ºAÂà­ì¥Í«¬ºA*/
     //a2 = "123"; // ¦Û°ÊÂ૬¥¢±Ñ (String Âà int)
     //a2 = (int)"123"; // ±j¨îÂ૬¥¢±Ñ (String Âà int)
     a2 = Integer.parseInt( "123" ); //§Q¥ÎÀRºAª«¥óªº¤èªk
   }
}

String»P°ò¥»¸ê®Æ«¬ºA(int byte...µ¥)¤§¶¡ªºÂà´«

¥Ñ °ò¥»¸ê®Æ«¬ºAÂà´«¦¨ String

Tip:¦p¦ó´M§äAPI ? 1.¶Ç¤J¬°°ò¥»¸ê®Æ«¬ºA 2.¦^¶Ç String «¬ºA 3.¤@©w¬Ostatic 4.APIªº¸ÑÄÀ¬°©Ò»Ý

String Ãþ§O¤¤¤w¸g´£¨Ñ¤F±N°ò¥»¸ê®Æ«¬ºAÂà´«¦¨ String ªºÀRºA(static)¤èªk¡A¦³¤U¦C´XºØ

double d = 123.35;
String str = String.valueOf(i);

¥Ñ String Âà´«¦¨ ¼Æ¦rªº°ò¥»¸ê®Æ«¬ºA

Tip:¦p¦ó´M§äAPI ? 1.¶Ç¤J¬° String «¬ºA 2.¦^¶Ç °ò¥»¸ê®Æ«¬ºA 3.¤@©w¬Ostatic 4.APIªº¸ÑÄÀ¬°©Ò»Ý

­n±N String Âà´«¦¨°ò¥»¸ê®Æ«¬ºA¡A¤j¦h»Ý­n¨Ï¥Î°ò¥»¸ê®Æ«¬ºAªº¥]¸ËÃþ§O(wrapper class)ªºÀRºA(static)¤èªk¡A¦ý¶·ª`·Nªº¬O¡A­YÂà´«¥¢±Ñ®É·|¥á¥X¨Ò¥~¡GNumberFormatException

try
{
     String str = "3000";
     int i = Integer.parseInt(str);
}
catch (NumberFormatException e)
{
     System.out.println(" Âà´«¾ã¼Æ®É¥¢±Ñ!! " + e);
}

 

¦r¦ê

¦r¦ê±`¼Æ

  1. ¬°¤F®Ä²vªºÃö«Y,¥Hstring literals©Ò©w¸q¬Û¦Pªº ¦r¦ê±`¼Æ ³£·|©ñ¤J©Ò¿×ªºstring pool¤º§@¦@¨É°O¾ÐÅ骺³B²z.(¦P¤@­Ó¹êÅé) , ¦ý¥Ñnew©Ò²£¥Íªºstring¨Ã¤£·|©ñ¤Jstring pool¤º
    String s1 = "java";
    String s2 = "java";
    String s3 = new String("java");
    String s4 = new String("java");
    System.out.println( s1 == s2 ) ;
    System.out.println( s3 == s4 ) ;
  2. ³]©w¦r¦ê±`¼Æ¤~¯à¦b½sͮɴÁ§@³Ì¨Î¤Æ,­Y³]©wÅܼƫh»Ý¦bruntime®É´Á¤~¯à¨M©w
  3. string¨S¦³append()¤èªk
  4. toUpperCase()·|¦^¶Ç¦P¤@­Ó¹êÅé

String Ãþ§O

String Buffer Ãþ§O

  1. StringBuffer Class¥Hfinal­×¹¢,¦]¦¹¤£¯à¦A³QÄ~©Ó
  2. StringBuffer objectªº¤º®e¬O¥i¥H§ïÅܪº(mutable)
  3. StringBuffer¨Ã«Dwrapper classs¦]¦¹¨Ã¨S¦³override equals()¤èªk
  4. ¦r¦ê¬Û¥[¥Î append
  5. Âন¦r¦ê¥Î toString()
  6. ±`¥Î¨ç¼Æ¦³ length(), append(), insert(), delete(), CharAt(),replace(), reverse(),capacity()
  7. °t¸m¦r¤¸ªÅ¶¡­ì«h : ¥H16¦r¤¸ªº­¿¼Æ©¹¤W¥[
    1. StringBuffer SB=new StringBuffer(); //¹w³]°t¸m16¦r¤¸ªºªÅ¶¡®e¶q
    2. StringBuffer SB=new StringBuffer("Hello"); //°t¸m21¦r¤¸ªºªÅ¶¡®e¶q
    3. System.out.println(SB.capacity()); //¥i¨Ï¥Îcapacity()¤èªkÅçÃÒ

°}¦C

©w¸q

  1. °}¦C¬O¤@ºØ¯S®íªºÃþ§O(class)¥²¶·¨Ï¥Înew¤~¯à«Ø¥ß¹êÅé
  2. «Å§i¤è¦¡¥i¥H¦³2ºØ
    1. «¬ºA[ ] ÅܼơA¨Ò¦p: int[] arr1, int[ ][ ][ ] arr3;
    2. «¬ºA ÅܼÆ[ ] ¡A¨Ò¦p: int arr1[ ];

°t¸m

  1. new operator ¨Ï¥Înew()°t¸m¹êÅé
    °}¦CÅܼÆ=new °}¦C¤¸¯À«¬ºA[­Ó¼Æ]
    arr1=new int[3], arr2=new int[2][3][2]; //arr1»Parr2ªº¤¸¯À¤º®e¹w³]ªì©l¤Æ¬° 0
  2. array initializers ©w¸q®É¥ß§Y°t¸m
    1. int arr3[ ]=new int[ ]{1,3,5}, int[ ][ ] arr4=new int[ ][ ]{{1,3,5}{2,4,6}};
    2. int arr5[ ]={1,3,5}, arr6[ ][ ]={{1,3,5},{2,4,6}};
  3. ¦hºû°}¦Cªº°ÊºA°t¸m(¤£¹ïµ¥ªº°t¸m),¦ý­nª`·Nºû«×¬Û¦P¤~¯à«ü©w
    int [][][] arr7;
    arr7=new int[2][][];
    arr7[0]=new int[3][2];
    arr7[1]=new int[2][2];

¦s¨ú

  1. °}¦C¤¤¦³¤@­Ófinal ¦¨­ûÅÜ¼Æ length , ¥Î¨Ó°O¿ý°}¦C¤j¤p(°}¦C¤£¥i³Q resize,°£«D§Q¥Îarraycopy.....)
  2. arr1 [0] =2; // arr1:°}¦CÅÜ¼Æ , [0]:¯Á¤Þ ¦XºÙ¬° ¤¸¯À
  3. ¯Á¤Þ (index)±q0¶}©l, runtime®É­Y¶W¹L½d³ò, ·|µo¥ÍIndexOutOfBoundsException
  4. index¥u¯à¥Îbyte, short, int, char¥|ºØdata type
  5. ¦hºû°}¦Cªº³Ì«á¤@ºû¥Nªí¤¸¯À

¹Bºâ¤l

³]©wop

= int a,b,c,d;
a=10;
a=b=c=10 //right association
+=,-=,*=,/=,%=

int a=100 ;
double d=123.3;
a+=d; //¤£©ú½TÂ૬ a=223

a=a+d; //½sĶ¿ù»~,¦]«¬ºA¤£²Å

ºâ³N(Arithmetic Operators)

*,/
int a=100, b=22, c;
double d=12.3;

c=a*b;
c=a/b;
c=a*d; //½sĶ¿ù»~,¦]«¬ºAÅܤj¤F
++,--
int a=10;
b=a++; //b=10
int a=10;
c=++a; //c=11

¤ñ¸û(Comparison Operators)

¤ñ¸ûªºµ²ªG¤@©w¬° boolean «¬ºA

==,!= Equality Operators
>,>=,<,<= Relational Operators

ÅÞ¿è(Boolean Operators)

¨äoperands¥²¶·¬° boolean«¬ºA, ¤ñ¸ûªºµ²ªG¤]¤@©w¬° boolean «¬ºA

!,&&,||  

¦ì¤¸(Bitwise Operators)

¨äoperands¥²¶·¬° byte, short ,int, long charµ¥

~, &, |, ^

~10 => 0101 =>5
10 & 7 => 1010 & 0111 => 0010 => 2
10 | 7 => 1010 | 0111 => 1111 => 15
10^7 => 1010 ^ 0111 => 1101 => 13

²¾¦ì(Shift Operators)

¨äoperands¥²¶·¬° byte, short ,int, long charµ¥

<<, >>,>>>

10 << 2 => 1010 << 2 => 101000 => 40 //¥kÃäbits¶ñ0
-10 << 2 => 10110 << 2 => 1011000=> -40 //¥kÃäbits¶ñ0
2147483647 << 1 => 01......1 <<1 => 11.......10 =>-2 //int³Ì¤j­È¥ª²¾

-1>>>1 => 11......1>>>1 => 01.....1 => 2147483647 //-1¥k²¾«á¸É0
-1>>1 => 11......1>>1 => 11.....1 => -1 //-1¥k²¾«áµø¥¿­t¸¹¸É1©Î0

public static void main(String [] args) {
int a = -10 ;
System.out.println("a = " + a); //-10
System.out.println("a = " + Integer.toBinaryString(a)); //11111111111111111111111111110110
System.out.println("a = " + (a >> 1)); //-5
System.out.println("a = " + Integer.toBinaryString(a >> 1)); //11111111111111111111111111111011
System.out.println("a = " + (a >>> 1)) ;//2147483643
System.out.println("a = " + Integer.toBinaryString(a >>> 1)); //01111111111111111111111111111011
}

statement±Ô­z¥y

³æ¦æ±Ô­z¥y

¥H ; ¤À¸¹¬°µ²§À ,¤£¥Henter¬°µ²§À
2­Ó±Ô­z¥y,¤À¼g2¦æ
int a;
a=10;
2­Ó±Ô­z¥y,¥u¼g1¦æ
int a; a=10;
1­Ó±Ô­z¥y,¤À¼g¦h¦æ
int a
=
200;

°Ï¶ô±Ô­z¥y

¥H¤j¬A¸¹¥]¬Aªº½d³ò {} //¦pªG¤j¬A©·¤¤¦³³\¦hªº³æ¦æ±Ô­z,³£ÁÙ¬Oºâ¦b°Ï¶ô¤¤ªº,¾ã­Óºâ¤@­Ó

¤À¤ä¿ï¾Ü±Ô­z¥y

  ³æ¤@ Âù¦V ¦h¦V
»yªk if (expression)
¡@¡@statement

if (expression)
¡@¡@statement_true
else
¡@¡@statement_false

switch (expression)
{
¡@¡@case value_1:
¡@¡@¡@¡@[statement_1;]
¡@¡@¡@¡@[break;]
¡@¡@case value_2:
¡@¡@¡@¡@[statement_2;]
¡@¡@¡@¡@[break;]
¡@¡@¡@¡@...
¡@¡@default: ¡@¡@¡@¡@[statement_1;]
¡@¡@¡@¡@[break;]
¡@¡@case value_2:
¡@¡@¡@¡@[statement_2;]
¡@¡@¡@¡@[break;]
¡@¡@¡@¡@...
¡@¡@default:
¡@¡@¡@¡@statement
}

³Æµù

expression¥²¶·¬°boolean«¬ºA

expression¥²¶·¬°boolean«¬ºA
  • expression¥²¶·¬°int literals (arrayªºindex¤]¬O)
  • int literals ¥i¥Î¨Óªì©l¤Æ byte, short, int, char³o¥|ºØtype
  • caseªº­È½d³ò¨ü­­©óexpression
  • ­Y°õ¦æ¨ìbreak·|¸õ¥X{}

°j°é±Ô­z¥y

­p¦¸ : for

»yªk for( init_Statement ; condition ; incre_statement )
¡@¡@ statement
½d¨Ò for( int x=1,y=1; a<=5; x+=1,y+=2)
¡@¡@System.out.println( "x="+x+"y="+y) ;
int a=1;
for( ;a<=5; )
{
¡@¡@System.out.println( "Hello World" ) ;
¡@¡@ a++;
}
³Æµù init_Statement»P incre_Statement ¬Ò¥i³æ¿W¦s¦b

«e´ú : while

»yªk while( expression )
¡@¡@statement
½d¨Ò a=sum=0;
while( a<=100 )
{
¡@¡@a=a+1;
¡@¡@sum=sum+a;
}
System.out.println( "sum="+sum) ;
a=sum=0;
while( a<=100 )
¡@¡@sum=sum+a++;
System.out.println( "sum="+sum) ;

«á´ú : do while

»yªk do
¡@¡@statement
while(
expression ) ;
½d¨Ò int a=1;
int sum=0;
do
{
¡@¡@sum=sum+a;
¡@¡@a=a+1;
}
while( a<= 100) ;
System.out.println( "sum="+sum) ;
int a=1;
int sum=0;
do
¡@¡@sum=sum+a++;
while( a<= 100) ;
System.out.println( "sum="+sum) ;

¸õÄ£±Ô­z¥y

label

¦h»Pbreak©Îcontinue¦X¥Î,¥i¸õ¥X¦h¼h°j°é(multi-level loop)

break

°w¹ï for, while, do while,switch°j°é§@¸õÂ÷

continue

°w¹ï for, while, do while¥»¦¸°j°é²¤¹L¨ä«áªº±Ô­z¥y,µM«á¦^¨ì­«½Æ°õ¦æªº±ø¥ó³B§PÂ_¬O§_Ä~Äò¶i¤J°j°é

return

¤¤Â_¥Ø«eµ{§Çªº°õ¦æ, ¸õ¦^¤W¤@¼hªº©I¥sÂI , ¦ý¤£¥i¤¤Â_¦³¦^¶Ç«¬ºAªº¨ç¼Æ

Ãþ§O(Class)»Pª«¥ó(Object)

Ãþ§O¥]§t¤F

  1. ¥ÑÃþ§O©w¸q©Ò²£¥Íªº¹ê§@ºÙ¤§¬° ª«¥ó(object) ¡A¤]ºÙ¬°Ãþ§Oªº ¹ê¨Ò(instance)
  2. Java objects³£³z¹Lobject reference¦Ó³Q¨ú¥Î¡C
  3. ¤èªkªº©Ò¦³¤Þ¼Æ³£¥Hcall by value¤è¦¡¶Ç»¼¡C

[«Ê¸Ë] [­×¹¢¦r] class Ãþ§O¦WºÙ [extends ¤÷Ãþ§O] [implements ¤÷¤¶­±Ãþ§O]
public class j92070303
{
¡@¡@ //¦¨­ûÅܼÆ,¨t²Î·|µ¹ªì­È(int=0;String="";object=null;char='\u0000')
¡@¡@ static w;
¡@¡@ [«Ê¸Ë] [­×¹¢¦r] ¸ê®Æ«¬ºA ÅܼÆ1[=ªì­È][,ÅܼÆ2,.......];
¡@¡@ string name="peter", blood="A";
¡@¡@ int a;

¡@¡@ //¦¨­û¨ç¼Æ
¡@¡@ [«Ê¸Ë] [­×¹¢¦r] ¦^¶Ç¸ê®Æ«¬ºA ¨ç¼Æ¦W([¶Ç¤J°Ñ¼Æ¦C])
¡@¡@int max(int a, int b)
¡@¡@{
¡@¡@¡@¡@ //©w¸q°Ï°ìÅܼÆ,¨t²Î¥¼µ¹ªì­È¡A¬G­Yª½±µ¤Þ¥Î·|¿ù»~
¡@¡@¡@¡@int x=100 ;
¡@¡@¡@¡@ //¹ê§@°Ï
¡@¡@¡@¡@a=b;
¡@¡@¡@¡@System.out.println(x) ; //°Ï°ìÅܼÆa
¡@¡@¡@¡@System.out.println(this); //¦¨­ûÅܼÆa
¡@¡@¡@¡@ //return ¦^¶Ç­È
¡@¡@¡@¡@return a;
¡@¡@}

¡@¡@public static void main(String[] p)
¡@¡@{
¡@¡@¡@¡@System.out.println("Hello") ;
¡@¡@}
¡@¡@¡@...
}

Inner Classes(¤º³¡Ãþ§O)/±_ª¬Ãþ§O(Nested class)

¤¶­±(Interface)

¤¶­±(Interface)»P©â¶HÃþ§O(Abstract Class)ªº°Ï§O

  1. ©â¶HÃþ§O¥i¥H´£¨Ñ¬Y¨Ç¤èªkªº³¡¤À¹ê§@Åý©Ò¦³Ä~©Óªº¤lÃþ§O¤@¤U¤l´N±o¨ì¤F³o­Ó·sªº¨ãÅé¤èªk¡A¦ý¤¶­±§@¤£¨ì³o¤@ÂI¡C
  2. ¦]¬°³æ¤@Ä~©Ó©Ò¥H¤@­Ó©â¶HÃþ§Oªº¹ê§@¥u¯à¥Ñ³o­Ó©â¶HÃþ§O­l¥Í¡A¦ý¥ô¤@­Ó¹ê§@¤¶­±©Ò³W©wªº¤èªkªºÃþ§O³£¥i¥H¨ã¦³³o­Ó¤¶­±ªº«¬ºA¥B¯à¹ê§@¥ô·N¦h­Ó¤¶­±¡C
  3. ±qµ{¦¡½Xªº­«ºc¨¤«×¨Ó¬Ý¡A±N¤@­Ó³æ¿Wªº¨ãÅéÃþ§O²K¥[¤@­Ó¤¶­±ªº¹ê§@¸û²K¥[¤@­Ó©â¶HÃþ§O§@¬°©â¶HÃþ§O®e©ö¦h¤F¡C
  4. ¤¶­±¬O©w¸q²V©M«¬ºA(Mixin Type)ªº²z·Q¤u¨ã¡A²V©M«¬ºA´N¬O¦b¤@­ÓÃþ§Oªº¥D«¬ºA¤§¥~ªº¦¸­n«¬ºA¡C

«Ê¸Ëµ¥¯Å / ¦s¨ú­­¨î(Access Modifier)

¥i°w¹ïclass»P¦¨­û(ÅܼƻP¨ç¼Æ)§@«Ê¸Ë

private

privateªº¦¨­ûÅܼƶȴ£¨Ñ ¦P¤@­ÓÃþ§O ªº¦¨­û¨ç¼Æ§@¦s¨ú¡A´Nºâ¬O¦P¤@­ÓÀɮצý¤£¦Pclass¤]¤£¥i¦s¨ú¡A¤£¦Ppackage¤£¥i¦s¨ú
privateªº¦¨­ûÅܼƦp¦óÅý¨ä¥Lclass¦s¨ú©O? §Q¥Î¦P¤@­ÓÃþ§O¥B«Å§i¬°publicªº¦¨­û¨ç¼Æ§@¦s¨ú

default access (none)

default access(none) ¬°¦b¦Ppackage(default package)¥i¦s¨ú¡A­Y¤lÃþ§OÄ~©Ó«á¦ý¤£¦b¦Ppackage«h¤£¥i¦s¨ú //­Y¢±­Óclass¬Ò¥¼«Å§ipackage¡A¦ý¦ì©ó¦P¤@­Ó¥Ø¿ý,µø¬°¦P¤@­Ópackage)

protect

protected¬°¦b¦PÃþ§O¡A¦Ppackage¤~¥i¦s¨ú¡A¦b¤£¦Ppackage,¤lÃþ§OÄ~©Ó«á¤~¥i¥H¦s¨ú

protected¬°¦b¦P¤@¤÷Ãþ§O(superclass)¤U¤~¥i¥H¦s¨ú

public

public¤£¨ü­­¨î³£¥i¦s¨ú

­×¹¢¦r

¥i°w¹ïclass»P¦¨­û(ÅܼƻP¨ç¼Æ)§@­×¹¢

final

final class

  1. ¸Óclass¤£¥i¦A³QÄ~©Ó
  2. ¨ä¤º¤§¦¨­û¨ç¼Æ¤]µø¬°final¦Ó¤£¯à¦³abstract
  3. ¤£¥i¦A³Q«Å§i¬°abstract

final method (¦¨­û¨ç¼Æ)

  1. µLªk³Q¤lÃþ§Ooverridden
  2. ¤£¥i¦A³Q«Å§i¬°abstrac

final variable

¦¨­ûÅÜ¼Æ ª«¥óÅÜ¼Æ °Ï°ìÅܼÆ
  1. µL½×¬O§_¨Ï¥Î¤@©w­nªì©l¤Æ
  2. ªì©l¤Æ«á¨ä­È¤£¥i¦A³Q§ïÅÜ
  3. ³q±`¦b©w¸q®Éªì©l¤Æ­Y¤£¦b©w¸q®Éªì©l¤Æ«h¥²¶·¦bstatic initializerªì©l¤Æ
  1. µL½×¬O§_¨Ï¥Î¤@©w­nªì©l¤Æ
  2. ªì©l¤Æ«á¨ä­È¤£¥i¦A³Q§ïÅÜ
  3. ³q±`¦b©w¸q®Éªì©l¤Æ­Y¤£¦b©w¸q®Éªì©l¤Æ«h¥²¶·¦bconstructor©Î¦binstance block {}ªì©l¤Æ
  1. ¤£¤@©w­nªì©l¤Æ
  2. ªì©l¤Æ«á¨ä­È¤£¥i¦A³Q§ïÅÜ
  3. ³q±`¦b©w¸q®Éªì©l¤Æ­Y¤£¦b©w¸q®Éªì©l¤Æ«h¦Ü¤Ö¨ì ¨Ï¥Î«e¤@©w­nªì©l¤Æ

public class test {
¡@static final int a; ¡@¡@//blank final class variable
¡@static{
¡@¡@a=100;
¡@}

¡@final int b; ¡@¡@¡@¡@//blank final instance variable
¡@¡@¡@¡@¡@¡@// {
¡@¡@¡@¡@¡@¡@// ¡@b=200;
¡@¡@¡@¡@¡@¡@// }
¡@test() {
¡@¡@b=200;
¡@}

¡@public static void main(String args[]) {
¡@¡@final int c; ¡@¡@¡@//blank final local variable
¡@¡@c=300;

¡@¡@test obj=new test();
¡@¡@System.out.println(test.a+" "+obj.b+" "+c);
¡@}
}

static

·í°õ¦æ java xxx.class

  1. ±Nxxx.class¸ü¤J¦Ü°O¾ÐÅ餤ªºprogram°Ï
  2. °t¸mclass¤¤ªºclass variable
  3. °õ¦æclass variable initializer
  4. °õ¦æstatic initializer
  5. °õ¦æÃþ§Oªºconstructor
  6. ´M§ämainªº¨ç¼Æ¨Ã°õ¦æ

static initializer (static free-floating block)

   
»¡·í¸ü¤J®É©Î¸Óclass¨ã¦³¹êÅé®É·|¥ß§Y°õ¦æ static block (static initializer) ªº³¡¤À¡A¥B¶È°õ¦æ¤@¦¸
class person
{
¡@static String s;
¡@static
¡@{
¡@¡@s="hello";
¡@}
}

static variable

  1. Åܼƥ[¤Wstatic¦¨¬°Ãþ§OÅܼÆ(¤£¥[¬°ª«¥óÅܼÆ)¡A·íclass¸ü¤J®É¥ß§Y°t¸m¹êÅé
  2. Ãþ§OÅܼưO¾ÐÅ餤¥u¦³¤@¥÷¡Aª«¥óÅܼƥi¥H¦³³\¦h½Æ¥»
  3. static ¤£¥i­×¹¢ local variable
  4. ¦p¦ó¤Þ¥Î¦¨­ûÅܼơG
    1. Ãþ§O.¦¨­û
    2.ª«¥ó.¦¨­û

static method

  1. static method¤£¥iª½±µ¥s¥Î«Dstaticªº¦¨­û
  2. static method¤£¥i¨Ï¥Îthis »P superÃöÁä¦r
  3. static method¤£¥i³Q¤lÃþ§Oªº «Dstatic method overridden
class A
{
¡@int nA; ¡@¡@¡@¡@//ª«¥óÅܼÆ
¡@static int sA; ¡@¡@//Ãþ§OÅܼÆ

¡@public static void fun1()
¡@{
¡@¡@int a;
¡@¡@a=10;
¡@¡@nA=na+1; ¡@ //¦¹¦æ·|¿ù»~¡A¦]static fun¤º¤Þ¥Î¥ô¦óÅܼƧ¡»Ý­n¦³¹êÅé©Î¤]¬Ostatic
¡@¡@sA=sA+1;
¡@}
}

abstract

class ¦¨­û¨ç¼Æ
¸Óclass¤£¥i³Q«Ø¥ß¹êÅé(new),
¨äª«¥óÅܼƥi°Ñ¦Ò¤lÃþ§O¹êÅé

abstract class myShape
{¡@¡@
¡@¡@public abstract void draw();
}

class myCircle extends myShape
{¡@¡@¡@¡@¡@
¡@¡@public void draw(){} //¹ê§@draw
¡@¡@{
¡@¡@¡@System.out.println("O") ;
¡@¡@}
}
class myRectangle extends myShape
{¡@¡@¡@¡@¡@
¡@¡@public void draw(){} //¹ê§@draw
¡@¡@{
¡@¡@¡@System.out.println("¤f") ;
¡@¡@}
}
public class test
{
¡@public static void main(String para [])
¡@{
¡@¡@myShape drawObj;
¡@¡@drawObj=new myCircle();
¡@¡@drawObj.draw();
¡@¡@drawObj=new Rectangle();
¡@¡@drawObj.draw();
¡@}
}

  1. ¸Ó¨ç¼Æ¤£¥i¦³body{},¥B¥H¤À¸¹;µ²§À
  2. ©ÒÄÝÃþ§O¥²¶·«Å§i¬°abstract class
  3. ¤£¥i¦³final, staticµ¥­×¹¢¦r
  4. ¨ä¤lÃþ§O¥²¶·¹ê§@¸Óabstract methods,§_«h¤lÃþ§O¤]·|Åܦ¨abstract class
  5. ¥ª°¼ªºµ{¦¡½X¸ÑÄÀ(¦h«¬ªº½d¨Ò) : ¥Habstract class«Å§iª«¥óÅܼơA¥H¹ê§@ªº¤lÃþ§Onewµ¹¦¹ª«¥óÅܼơA¦¹®É¦b°O¾ÐÅ餤·|¦³bindingªº®ÄÀ³
    draw() --> draw(){}

¤èªk (¦¨­û¨ç¼Æ)

©w¸q»yªk

[«Ê¸Ë] [­×¹¢¦r] ¦^¶Ç«¬ºA ¨ç¼Æ¦WºÙ(¶Ç¤J°Ñ¼Æ¦C) //¶Ç¤J°Ñ¼Æ¦C:«¬ºA °Ñ¼Æ1,«¬ºA °Ñ¼Æ2,......
{
}

©I¥s°õ¦æ¹Lµ{

class person
{
¡@public String name;
¡@public char blood;

¡@Public void set blood( char c )
¡@{
¡@¡@blood=c;
¡@}
}
class person
{
¡@public String name;
¡@public char blood ;

¡@Public void set blood( person this , char blood )
¡@{
¡@¡@ this.blood = blood ;
¡@}
}
public class j92072711
{
¡@Public static void main(String para[])
¡@{
¡@¡@person Obj1=new person();
¡@¡@Obj1.setBlood('O');
¡@¡@person Obj2=new person();
¡@¡@Obj2.setBlood('A');
¡@}
}
public class j92072711
{
¡@Public static void main(String para[])
¡@{
¡@¡@person Obj1=new person();
¡@¡@Obj1.setBlood( Obj1 ,'O' );
¡@¡@person Obj2=new person();
¡@¡@Obj2.setBlood( Obj2 ,'A' );
¡@}
}

°Ñ¼Æ¶Ç»¼

this

¶Ç­È

¤@¯ë¥Î©óprimitive type

¶Ç°Ñ¦Ò

¤@¯ë¥Î©ó«Dprimitive type

¦h¸ü/¦P¦W²§¦¡/¦h«¬(overload)

©w¸q

©I¥s

Âиü(override)

©w¸q

©I¥s

«Øºc¨ç¼Æ(«Øºc¤l/ constractor)

©w¸q

  1. ¦b«Øºcª«¥ó¹êÅé®É·|¥ß§Y©I¥s
  2. µL¦^¶Ç­È¡A¦]¦³¦^¶Ç­È´NÅܦ¨¤@¯ë¨ç¼Æ
  3. ¨ç¼Æ¦W»PÃþ§O¦P¦W
  4. ¥i¥[«Ê¸Ë¡A¦ý¤£¥i¥[­×¹¢¦r
  5. ¥i¥Hoverload( ¤£¥i¯à¦³override,¦]¬° «Øºc¨ç¼Æ¤@©w»Pclass¦P¦W,¦ý¤£¦Pªºclass¦WºÙ¤@©w¤£¤@¼Ë )
  6. ­Yclass¤º¥¼©w¸q¥ô¦ó«Øºc¨ç¼Æ¡A«h¦³ ¹w³]«Øºc¤l ¡A¬G­Y¦³¦Û¦æ¥[¤J«Øºc¤l¡A«h»Ý¦Û¦æ¥[¤J¹w³]«Øºc¤l
  7. °Î¦WÃþ§O¤£¥i¦³«Øºc¨ç¼Æ

«Øºc¨ç¼ÆªºÄ~©Ó©I¥s

  1. ¤lÃþ§Oªº«Øºc¨ç¼Æ¤¤,¹w³]·|°õ¦æ¤÷Ãþ§Oªº«Øºc¨ç¼Æsuper()
  2. super(?) : «ü©w©I¥s¤÷Ãþ§Oªº«Øºc¨ç¼Æ,­Y¼g¥X¨Ó«h¤@©w­n¦b²Ä¤@¦æ //ª`·N¨ä»P super. ªº¤£¦P
  3. ­Y¦³Ä~©ÓÃö«Y¦p¤U : Object -> class A -> class B -> class C,
    «h­Y©I¥snew c(10)®É«h¨Ì§Ç°õ¦æobject() -> A() -> B() -> C(int)ªº«Øºc¨ç¼Æ
  4. this(?) : «ü©w©I¥s¦Û¤vªº«Øºc¨ç¼Æ,¥B¤@©w­n¦b²Ä¤@¦æ //ª`·N¨ä»P this. ªº¤£¦P
  5. this()»Psuper()¤£¥i¦P®É¦s¦b(¦]¬°­n¦b²Ä¤@¦æ)
  6. ObjectÃþ§O¤¤ªº«Øºc¨ç¼Æ¥u¦³ Object(){}

Ä~©Ó

Ä~©ÓÃþ«¬

Ãþ§OÄ~©Ó(¦PÃþÄ~©Ó) = ¹ê§@Ä~©Ó(Implementation Inheritance)

class A extends B //class A Ä~©Ó class B
  1. ¤lÃþ§O¦Û°Ê¾Ö¦³¤÷Ãþ§O©Ò¦³ªº¦¨­û
  2. ­Y¤lÃþ§Oªº¦¨­ûÅܼƻP¤÷Ãþ§O¦P¦W·|³y¦¨hide®ÄªG
  3. ­Y¤lÃþ§Oªº¦¨­û¨ç¼Æ»P¤÷Ãþ§O¦P¦W·|³y¦¨overrideªº®ÄªG
  4. ­Y¥u«Å§iclass A«h¹w³]Ä~©ÓObject
  5. ­Y¦b¤lÃþ§O¤¤­n¨Ï¥Î¤÷Ãþ§Oªº¦¨­û­n¥Hsuper.¤÷¦¨­û
  6. ¤lÃþ§Oªº«Øºc¨ç¼Æ¤¤,¹w³]·|°õ¦æ¤÷Ãþ§Oªº«Øºc¨ç¼Æsuper()
  7. ¤lÃþ§Oªº¹êÅ餤¦P®É¦s¦b¦³¤÷Ãþ§Oªº¹êÅé,¥i§Q¥ÎÂ૬§Þ¥©¨ú¥X

¤¶­±Ä~©Ó(¦PÃþÄ~©Ó)

interface I1 extends I2[,I3,I4.....] //interface I1 Ä~©Ó interface I2[,I3,I4....]
  1. ­Y¥¼extends¤÷¤¶­±¡A«h¤£·|¦Û°Êextends Object
  2. ¤¶­±¦¨­ûÅܼơA¤@©w¬Ofinal+static(­nµ¹ªì­È)
  3. ¤¶­±¦¨­û¨ç¼Æ¡A«h¤£¥i¦³body{}¡A¥H;§@µ²§À
  4. ¥i«Ø¥ßª«¥óÅܼơA¦ý¤£¥i«Ø¥ßª«¥ó¹êÅé¡A­Y¦³»Ý­n«h»Ý°Ñ¦Ò¤lÃþ§O¹êÅé
  5. ¨ä¤lÃþ§O­Y¥¼¹ê§@¸Ómethods¡A¤lÃþ§O·|Åܦ¨abstract class
  6. ¤¶­±¤£¥i¥[¤Wfinal,static­×¹¢¦r¡A¤¶­±¦¨­û¨ç¼Æ¤£¥i¥[¤Wfinal,static­×¹¢¦r
  7. «Ê¸Ë»Pclass¬Û¦P

Ãþ§O¹ê§@¤¶­±Ä~©Ó(¤£¦PÃþÄ~©Ó) = ¤¶­±Ä~©Ó(Interface Inheritance)

class A implements I1,I2[,I3.....] //class A ¹êÅé interface I1,I2[,I3....]
  1. ¥i¹ê§@¦h­Ó¤¶­±
  2. ¤lÃþ§O¦Û°Ê¾Ö¦³¤÷Ãþ§O©Ò¦³ªº¦¨­û

Ä~©Ó»¡©ú

  1. Ä~©Ó«á¤lÃþ§O±N¾Ö¦³¤÷Ãþ§O¥þ³¡ªº¦¨­û¡A¦s¨ú°ÝÃD¬Ý«Ê¸Ë¡C
  2. ª«¥óªºÂ૬¦]Ä~©ÓªºÃö«Y¦Ó¦³ª½¨t»P®Ç¨tªº°Ï¤À,­Y¶i¦æ®Ç¨tÂ૬·|¦³½sĶ¿ù»~,ª½¨tÂ૬¥u¯à¥Ñ¤l¥N©¹¤÷¥NÂà§_«h·|¦³°õ¦æ®É´Áªº¿ù»~¡C
  3. ¦³2­Óclass, class A, class B extends A, «h2ªÌ¦³ is a ªºÃö«Y(AÄ~©ÓB)¡C
  4. ¦³2­Óclass, class A, class B implements A, «h2ªÌ¦³ is a ªºÃö«Y(A¹ê§@¦ÛB)¡C
  5. ¦³2­Óclass, class A, class B{A obj=new A()} , «h2ªÌ¦³ has a ªºÃö«Y¡C
  6. has aªºÃö«Y¦b¤j³¡¥÷ªºDesign Pattern®ÑÄy¤¤¡A±N¤§»¡¦¨Delegate(©e¬£)¡C
  7. ³]­pÃþ§O®É¡A¦b¤@¯ë±¡ªp¤UÀ³¾¨¶q¨Ï¥Î©e¬£(delegate)¦Ó¤Ö¥ÎÄ~©Ó¡C
    1. ¥H©e¬£¨ú¥NÄ~©Óªº®É¾÷¡G¬Y­Ósubclass¥u¨Ï¥Îsuper classes ¤¶­±¤¤ªº¤@³¡¥÷¡A©Î¬O®Ú¥»¨S¥Î¨ìÄ~©Ó¦Ó¨Óªº¸ê®Æ¡C
    2. ¥HÄ~©Ó¨ú¥N©e¬£ªº®É¾÷¡G·í¦b¤G­Óclasses¤¤¨Ï¥Îdelegate¡A¨Ã¸g±`¬°¤G­Óclasses¶¡¼g§@³\¦h²³æªºdelegate function¡C
  8. ¦³2­Óclass, class A, class B extens A, ­Y¤÷Ãþ§OA¦³¨Ò¥~,«h¤lÃþ§OBªº¨Ò¥~¥i¬Ù²¤,´Nºâ¦³¼g¨Ò¥~¤]¤£¯à¤j©ó¤÷Ãþ§O¡C
  9. ¦³2­Óclass, class A, class B extens A, ­Y¤÷Ãþ§OA¦³¤@­Ópublicªº¦¨­û,«h¤lÃþ§OBªº¦¨­û¤]¤£¯à¤j©ó¤÷Ãþ§O(¼gªº¨Ã¤£ºë½T)¡C

¨Ò¥~(Exception)

Exception classesªº¶¥¼h (The Exception Hierarchy)

½sĶ´Á¨Ò¥~

Exception¤¤°£¤FRuntimeExceptionÄÝ©óunchecked Exception¡A¨ä¾lªººÙ¬°Checked Exception,¦p IOException
public class demo
{
¡@public static void main(String[] p)
¡@{
¡@¡@throw new RuntimeException; //½sͮɤ£·|¿ù»~
¡@¡@new FileReader("c:\\ccc"); //½sͮɷ|¿ù»~
¡@}
}
public class demo
{
¡@public static void main(String[] p)
¡@{
¡@¡@throw new RuntimeException //½sͮɤ£·|¿ù»~
¡@¡@try
¡@¡@{
¡@¡@¡@new FileReader("c:\\ccc")
¡@¡@}
¡@¡@catch (IOException e)
¡@¡@{
¡@¡@}
¡@}
}

°õ¦æ´Á¨Ò¥~

¦Û­q¨Ò¥~

µo¥Í¨Ó·½

®·®»&³B²z

³B²z(handling)

»yªk ½d¨Ò
try
{
¡@¡@¡@µ{¦¡½X°Ï¶ô
}
catch(¨Ò¥~Ãþ§O¡@ÅܼÆ) //®·®»1
{
¡@¡@¡@¨Ò¥~³B²z
}
catch(¨Ò¥~Ãþ§O¡@ÅܼÆ) //®·®»2
{
¡@¡@¡@¨Ò¥~³B²z
}
finally
{
¡@¡@ ¤@©w·|°õ¦æ¨ìªºcode
}
­Y¨Ò¥~¥¼³Q®·®»³B²z«h¥æ¥Ñ¨t²Î
import java.io.*;
public class test
{
¡@public static void main(String[] p)
¡@{
¡@¡@int x,y=0;
¡@¡@try
¡@¡@{
¡@¡@¡@if(y==0)
¡@¡@¡@¡@throw new ArithmeticException(); ¡@¡@ //¦Û¦æ±±¨î¨Ò¥~
¡@¡@¡@else
¡@¡@¡@¡@x=10 / y; ¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@ //new ArithmeticException(¦ý¥Ã»·¤£·|µo¥Í¦¹¨Ò¥~)
¡@¡@¡@System.out.println("x="+x);
¡@¡@¡@FileWriter FW=new FileWriter("c:\\c");
¡@¡@}
¡@¡@catch(IOException e) ¡@¡@¡@¡@¡@¡@¡@¡@¡@ //e = new ArithmeticException(µL®·®»¨ì )
¡@¡@{
¡@¡@¡@System.out.println("IOException e catch"+ e.getMessage() );
¡@¡@}
¡@¡@catch(ArithmeticException e) ¡@¡@¡@¡@¡@ //e= new ArithmeticException(¸É®»¨ì)
¡@¡@{
¡@¡@System.out.println("ArithmeticException e catch"+e.getMessage() );
¡@¡@}
¡@¡@catch(RuntimeException e) ¡@¡@¡@¡@ //ArithmeticExceptionªº¤÷Ãþ§O(»Ýª`·N¤£¯à»P¤lÃþ§O¤¬´«¦ì¸m)
¡@¡@{
¡@¡@System.out.println("RuntimeException e catch"+ e.getMessage() );
¡@¡@}
¡@¡@finally
¡@¡@{
¡@¡@¡@System.out.println("µ´¹ï·|°õ¦æ");
¡@¡@}
¡@}
}

«Å§i(declaring)=¨ç¼Æ«ü©ú¥á¥X¨Ò¥~

»yªk ½d¨Ò
try
{
¡@¡@¡@fun1();
}
catch(¨Ò¥~Ãþ§O¡@ÅܼÆ) //®·®»1
{
¡@¡@¡@¨Ò¥~³B²z
}
catch(¨Ò¥~Ãþ§O¡@ÅܼÆ) //®·®»2
{
¡@¡@¡@¨Ò¥~³B²z
}
finally
{
¡@¡@ ¤@©w·|°õ¦æ¨ìªºµ{¦¡½X
}
­Y¨Ò¥~¥¼³Q®·®»³B²z«h¥æ¥Ñ¨t²Î void fun1() throws ¨Ò¥~ªºclass
{
¡@¡@fun1()ªºµ{¦¡½X¥i¯à·|¦³¨Ò¥~
}
import java.io.*
public class test {

¡@¡@static void fun1() throws ArithmeticException //«ü©ú¥á¥X¨Ò¥~
¡@¡@{
¡@¡@¡@int x,y=1;
¡@¡@¡@if(y==0)
¡@¡@¡@¡@throw new ArithmeticException(); ¡@ //¦Û¦æ±±¨î¨Ò¥~
¡@¡@¡@else
¡@¡@¡@¡@x=10 / y; ¡@ //new ArithmeticException(¦ý¥Ã»·¤£·|µo¥Í¦¹¨Ò¥~)
¡@¡@¡@System.out.println("x="+x);
¡@¡@}
public static void main(String[] p)
¡@¡@{
¡@¡@¡@try
¡@¡@¡@{
¡@¡@¡@¡@fun1();
¡@¡@¡@}
¡@¡@¡@catch(Exception e) ¡@¡@¡@¡@¡@¡@¡@¡@¡@ //Ãi¤H°µªk
¡@¡@¡@{
¡@¡@¡@¡@System.out.println("Exception e catch");
¡@¡@¡@}
¡@¡@¡@finally
¡@¡@¡@{
¡@¡@¡@¡@System.out.println("µ´¹ï·|°õ¦æ");
¡@¡@¡@}
¡@¡@}
}

¿é¤J»P¿é¥X(java.io.*)

Java ±N I/O ¤À¬°°ª¶¥ I/O »P§C¶¥ I/O ¡A°ª¶¥ I/O ¦b¨Ï¥Î¤W´£¨Ñ§ó¦hªºÅª¼g¤èªk¡A¦pŪ¼g int ¡B double ¡B String ªº¸ê®Æ«¬ºA¡A¦Ó§C¶¥ªº I/O ¤j³¡¥÷¥u´£¨Ñ write ¡B read ªº byte[] ¦s¨ú¡A¦]¬°µ{¦¡¤j³¡¥÷ªº¸ê®Æ³£¬O¥H¦r¦ê©Î¨ä¥¦¥D­n«¬ºA¸ê®Æ¨Ó¹Bºâ¡A¦]¦¹§C¶¥ªº I/O ¦b¨Ï¥Î¤W¤£§Q©óµ{¦¡³]­p¡A©Ò¥H Java ±N³\¦h¦n¥Îªº¤èªk¥þ³¡¶°¦X¦¨°ª¶¥ I/O; ´«¨¥¤§¡A§C¶¥ I/O ªº¥D­n¤u§@¬O­t³d»P´CÅé¸ê®Æ§@¦s¨ú¡A°ª¶¥ I/O Ãþ§O¥D­n§@¸ê®Æ«¬ºAªºÂà´«¤Î´£¨Ñ¤@¨Ç¯S®íªº¥\¯à¡C¦b¨Ï¥Î Java I/O ®É­nÂÔ°Oªº¤@­Ó­«­n­ì«h¬O¡A¦b«Ø¥ß¤@­Ó I/O ¤§«e¥²»Ý¥ý¥Î§C¶¥ I/O Ãþ§O¨Ó¦s¨ú´CÅé¸ê®Æ ( ¦pÀɮשΠpipe) ¡A¤§«á¦A¨Ï¥Î°ª¶¥ I/O ¨Ó±±¨î§C¶¥ I/O Ãþ§Oªº°Ê§@¡A³oºØ¤@¼h¤S¤@¼hªº¬[ºcºÙ I/O Chain ¡C

File

File ¥i°w¹ï¥Ø¿ý»PÀÉ®×§@¥Î

»yªk

File fileObj=new File( String directoryPath, String filename );

±`¥Î¤èªk

ÀÉ®×/¥Ø¿ý¦s¦b¡@: renameto(), delete(), lists()

ÀÉ®×/¥Ø¿ý¤£¦s¦b¡@:mkdir(), createnewfile()

import java.lang.*;
import java.io.*;

public static void main(String[] p)
{
try
{
File f1 = new File( "d:\\cc" );
System.out.println( f1.isDirectory() );
if( !f1.isDirectory() ) // ­Y¥Ø¿ý¤£¦s¦b «h...
{
f1.mkdir();
File file1 = new File( "d:\\cc\\f1.txt" );
System.out.println( file1.isFile() );
if( !file1.isFile() ) // ­YÀɮפ£¦s¦b «h...
file1.createNewFile();

String[] flist = f1.list();
for( int x=0; x< flist.length; x++)
{
System.out.println( flist[x] );
}
System.out.println( "¼È°± «ö¤UenterÄ~Äò" );
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
in.readLine(); // ¼È°±

file1.delete();
}
f1.delete();
}
catch( Exception rr )
{
System.out.println( rr.getMessage() );
}

}
if( !file1.isFile() ) // ­YÀɮפ£¦s¦b «h...
file1.createNewFile();

String[] flist = f1.list();
for( int x=0; x< flist.length; x++)
{
System.out.println( flist[x] );
}
System.out.println( "¼È°± «ö¤UenterÄ~Äò" );
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
in.readLine(); // ¼È°±

file1.delete();
}
f1.delete();
}
catch( Exception rr )
{
System.out.println( rr.getMessage() );
}

}

Stream

¥Hbyte(byte[])¬°Åª¨ú³æ¦ì¡GInputStream, OutputStream

¥Hdouble byte(char[])¬°Åª¨ú³æ¦ì¡GReader,Writer

Base class Non Buffer subclass Buffer subclass

InputStream

InputStream ¬O«Å§i±q¬Y¯S©w¨Ó·½Åª¨ú¿é¤JªºÃþ§O
InputStream ¬O java.io ùؤj³¡¤À¿é¤J¸ê®Æ¬yªº°ò¦Ãþ§O

FileInputStream, PipedInputStream BufferedInputStream(InputStream¤lÃþ§O¹êÅé)
OutputStream FileOutputStream, PipedOutputStream BufferedOutputStream(OuputStream¤lÃþ§O¹êÅé)
Reader FileReader, PipedReader BufferedReader(Reader¤lÃþ§O¹êÅé)
Writer FileWriter, PipedWriter BufferedWriter(Writer¤lÃþ§O¹êÅé)
FileInputStream,FileOutputStream½d¨Ò FileReader,FileWriter½d¨Ò
¼ÒÀÀcopy
import java.lang.*;
import java.io.*;

public class demo
import java.io.*;

public class demo
{
¡@public static void main(String[] p)
¡@{
¡@¡@try
¡@¡@{
¡@¡@¡@byte[] b=new byte[1];
¡@¡@¡@FileInputStream FIS=new FileInputStream( p[0] );
¡@¡@¡@FileOutputStream FOS=new FileOutputStream( p[1] );
¡@
¡@¡@¡@while(FIS.read(b)!=-1)
¡@¡@¡@¡@FOS.write(b);

¡@¡@¡@FIS.close();
¡@¡@¡@FOS.close();
¡@¡@}
¡@¡@catch(Exception e)
¡@¡@{
¡@¡@¡@System.out.println( e.getMessage() )
¡@¡@}
¡@}
}
import java.lang.*;
import java.io.*;

public class demo
{
¡@public static void main(String[] p)
¡@{
¡@¡@try
¡@¡@{
¡@¡@¡@char[] c=new char[1];
¡@¡@¡@FileReader FR=new FileReader(p[0] );
¡@¡@¡@FileWriter FW=new FileWriter(p[1] );

¡@¡@¡@while(FR.read(c)!=-1)
¡@¡@¡@{
¡@¡@¡@¡@c[0]=Character.toUpperCase(c[0]);
¡@¡@¡@¡@FW.write(c);
¡@¡@¡@}

¡@¡@¡@FR.close();
¡@¡@¡@FW.close();
¡@¡@}
¡@¡@catch(Exception e)
¡@¡@{
¡@¡@¡@System.out.println( e.getMessage() )
¡@¡@}
¡@}
}
¡@
BufferedInputStream,BufferedOutputStream½d¨Ò BufferedReader,BufferedWriter½d¨Ò
 
import java.lang.*;
import java.io.*;

public class demo
{
¡@public static void main(String[] p)
¡@{
¡@¡@try
¡@¡@{
¡@¡@¡@String rStr;
¡@¡@¡@FileReader FR=new FileReader("c:\\config.sys");
¡@¡@¡@BufferedReader BR=new BufferedReader(FR);
¡@¡@¡@FileWriter FW=new FileWriter("c:\\config.dot");
¡@¡@¡@BufferedWriter BW=new BufferedWriter(FW);

¡@¡@¡@while(rStr=BR.readline()!=null)
¡@¡@¡@{

¡@¡@¡@¡@BW.write(rStr,0,rStr.length());
¡@¡@¡@¡@BW.newLine();
¡@¡@¡@}

¡@¡@¡@BR.close();
¡@¡@¡@BW.close();
¡@¡@¡@FR.close();
¡@¡@¡@FW.close();
¡@¡@}
¡@¡@catch(Exception e)
¡@¡@{
¡@¡@¡@System.out.println( e.getMessage() )
¡@¡@}
¡@}
}

°õ¦æºü(Thread)

public class j93110401
{
¡@public static void main ( String[] args )
¡@{
¡@¡@Thread thisThread = Thread.currentThread();
¡@¡@System.out.println( "thisThread.getName()="+thisThread.getName() ) ;
¡@}
}

«Ø¥ß°õ¦æºü(Creations of Threads)

1.Ä~©Ó Thread class

  1. ¦Û©wclassÄ~©Ó¦ÛThread
  2. ¦Û©wclass¤¤ override Threadªºrun() method
    1. ¦brun()¤º¥i¥H¦³while(.T.)
  3. «Øºc¦Û©wªºclass¹êÅé
  4. ©I¥s¹êÅ骺start()¤èªk,´N·|²£¥Í¤@­Ó°õ¦æºü //¥u¯à©I¥s¤@¦¸start()

2.¹ê§@ Runnable (implementing Runnable interface)

¥Ñ©ójava¨Ã¤£¤¹³\¦h­«Ä~©Ó¡A¦]¦¹­Y¤£¬OThreadÃþ§Oªº¤lÃþ§O¡A³£­n¥H¦¹¤èªk¨Ó«Ø¥ß°õ¦æºü
  1. ¦Û©wclass implements Runnable
  2. ¹ê§@Runnableªºrun()
    1. ¦brun()¤º¥i¦³while(.T.)
  3. «Øºc¤@Threadªºª«¥ó¹êÅé(¥²¶·±N¦Û©wclassªº¹êÅé¶Ç¤JThreadª«¥óªº«Øºc¨ç¼Æ)
    1. Thread th2 = new Thread (¦Û©wªºclassª«¥ó)
  4. °õ¦æThreadª«¥ó¹êÅé.start()

±±¨î°õ¦æºü(Controlling Threads)

yield»Psleep»Pwait

wait()¡Bnotify() ©M notifyAll() ¤èªk

¥[¤J(join)°õ¦æºü

¦uÅ@µ{¦¡(Daemon)°õ¦æºü

¦P¨B(Synchronized)

¦P¨B°Ï¶ô(Synchronized block)

¦P¨B¤èªk(Synchronized method)

¹Ï§Î¤Æ¨Ï¥ÎªÌ¤¶­±(GUI)

  AWT Swing
Class¦W java.awt.* javax.swing.*
ªí³æ¦W Frame JFrame
¤¸¥ó-«ö¶s Button JButton
¤¸¥ó-¼ÐÃD Label JLable
¤¸¥ó-µe¥¬ Canvas  
¤¸¥ó-®Ö¨ú¤è¶ô Checkbox JCheckBox
¤¸¥ó-³æ¿ï¶s Choice JRadioButton
¤¸¥ó-¼ÐÃD Label JLable
¤¸¥ó-¦Cªí List JList
¤¸¥ó-±²°Ê¶b Scrollbar  
Ä~©ÓÃö«Y»P
±`¥Î¤èªkÄÝ©Ê
  • Object
    • Component //setVisible(),setBounds(x,y,w,h),setBackground(color)
      • Container //add(¤¸¥ó), setLayout()
        • Window //setCursor(Cursor),setIConImage()
          • Frame //setTitle()
  • Object
    • Component //setVisible(),setBounds(x,y,w,h) ,setBackground(color)
      • Container //add(¤¸¥ó), setLayout()
        • javax.swing.JComponent //JLabel, JButton,....
½d¨Ò

import java.awt.* ;
import java.lang.* ;

public class j92083101 extends Frame
{
¡@Button B1;
¡@public j92083101()
¡@{
¡@¡@this.setLayout(null);
¡@¡@B1=new Button("B1");
¡@¡@B1.setBounds(50,30,60,25);
¡@¡@this.add(B1);
¡@¡@this.setBackground(Color.red);
¡@¡@this.setBounds(100,100,300,300);
¡@¡@this.setVisible(true);
¡@}
¡@public static void main(String[] args)
¡@{
¡@¡@j92083101 Form1=new j92083101();
¡@}
}

import java.awt.*; // Frame
import javax.swing.*; //JFrame
public class j93111103 extends JFrame
{ //¤¸¥ó°Ï
static j93111103 Form1;
Button B1;
JButton JB1;

public j93111103() // ªí³æ & ¤¸¥ó ªì©l¤Æ
{ // ¥Î this ¸ò¥Î Form1 ³£¬O¦P¤@­Óªí³æª«¥ó¹êÅé
JPanel ContentPane = (JPanel )this.getContentPane(); //¨ú±o ContentPane ¥Î Container getContentPane()

ContentPane.setLayout( null ); // ¨ú®ø¤¸¥ó¦b ContentPane °t¸mªº¤è¦¡

this.setTitle( "first Form" ); //== new Frame( "first Form" )
this.setCursor( new Cursor( Cursor.HAND_CURSOR ) ); // setCursor(Cursor cursor)-->

//this.setBackground( Color.RED ); // setBackground(Color c) --> Color.RED == new Color( 255,0,0 )
ContentPane.setBackground( Color.RED );

B1 = new Button( "B1" );
B1.setBounds( 50,50, 60,25 );
ContentPane.add( B1 ); // ¤¸¥ó­n¥[¤J JFrame ªº ContentPane ¤~¦æ

JB1 = new JButton( "JB1" , new ImageIcon( "Tips.gif" ) );
JB1.setBounds( 50,80, 100,100 );
ContentPane.add( JB1 ); // ¤¸¥ó­n¥[¤J JFrame ªº ContentPane ¤~¦æ

this.setBounds( 100,100, 300,300 ); // ³o¸Ì­n¥Î JFrame ªº®Ø¬[(this)
this.setVisible( true ); // ³o¸Ì­n¥Î JFrame ªº®Ø¬[(this)
}
public static void main( String[] dd )
{ Form1 = new j93111103(); }
}
°ª«×°_ºâ ±q¼ÐÃD¦CªºÀY¶}©l ±qµe­±³»ºÝ¶}©l

¶ÉÅ¥ªº¨Æ¥ó

  1. ¦bmyFrame¥[¤J¥i¶ÉÅ¥ªí³æÃö³¬¨Æ¥ó //¤¸¥ó.addwindowListener(¶ÉÅ¥¹êÅé)
  2. ¹ê§@ªº¤è¦¡
    1. ¨Ï¥ÎWindowListenerÃþ§O : ¦Û­qclass¹ê§@Listener¤¶­± //­n¹ê§@¥þ³¡ªº¨Æ¥ó¨ç¼Æ
    2. ¨Ï¥ÎWindowAdapterÃþ§O : ¦Û­qclassÄ~©ÓAdapter //override»Ý­nªº¨Æ¥ó¨ç¼Æ
  3. ±N¦Û©wªºclass¹êÅé¸m¤JaddwindowListener() //Listener¦³Window,Mouse,MouseMotion,Keyµ¥
    WindowListener WindowAdapter
    import java.awt.*;
    import java.lang.*;
    import java.awt.event.*;

    public class j92083101 extends Frame
    {
    ¡@Button B1;

    ¡@public j92083101()
    ¡@{
    ¡@¡@this.setLayout(null);

    ¡@¡@B1=new Button("B1");
    ¡@¡@B1.setBounds(50,30,60,25);
    ¡@¡@this.add(B1);

    ¡@¡@this.addWindowListener(new myWindowListener());
    ¡@¡@this.setBackground(Color.red);

    ¡@¡@this.setBounds(100,100,300,300);
    ¡@¡@this.setVisible(true);
    ¡@}
    ¡@class myWindowListener implements WindowListener
    ¡@{
    ¡@¡@public void windowOpened(WindowEvent e){}
    ¡@¡@public void windowClosing(WindowEvent e)
    ¡@¡@{
    ¡@¡@¡@System.exit(0);
    ¡@¡@}
    ¡@¡@public void windowClosed(WindowEvent e){}
    ¡@¡@public void windowIconified(WindowEvent e){}
    ¡@¡@public void windowDeiconified(WindowEvent e){}
    ¡@¡@public void windowActivated(WindowEvent e){}
    ¡@¡@public void windowDeactivated(WindowEvent e){}
    ¡@}
    ¡@public static void main(String[] args)
    ¡@{
    ¡@¡@j92083101 Form1=new j92083101();
    ¡@}
    }
    ¨Ï¥ÎWindowAdapter¥i¥H¤£¥Î¹ê°µ¨S¦³¥Î¨ìªº¤èªk
    import java.awt.*;
    import java.lang.*;
    import java.awt.event.*;

    public class j92083101 extends Frame
    {
    ¡@TextField custno;
    ¡@Button B1;

    ¡@public j92083101()
    ¡@{
    ¡@¡@this.setLayout(null);

    ¡@¡@B1=new Button("B1");
    ¡@¡@B1.setBounds(50,30,60,25);
    ¡@¡@this.add(B1);

    ¡@¡@this.addWindowListener(new myWindowListener());
    ¡@¡@this.setBackground(Color.red);

    ¡@¡@this.setBounds(100,100,300,300);
    ¡@¡@this.setVisible(true);
    ¡@}
    ¡@class myWindowListener extends WindowAdapter
    ¡@{
    ¡@¡@public void windowClosing(WindowEvent e)
    ¡@¡@{
    ¡@¡@¡@System.exit(0);
    ¡@¡@}
    ¡@ }
    ¡@public static void main(String[] args)
    ¡@{
    ¡@¡@j92083101 Form1=new j92083101();
    ¡@}
    }

ºô¸ô(Socket)

EchoServerªº½d¨Ò

import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class EchoServer extends Frame implements Runnable
{
¡@Label ipLabel,messLabel;
¡@TextField ip,mess;
¡@Button sndButton;
¡@List messList;
¡@static int portNum = 8888; //«ü©w¶Ç°e»P±µ¦¬ªºport number

¡@public EchoServer() //«Øºc¤l:²£¥Íµe­±
¡@{
¡@¡@this.setLayout( null ); //¤£¨Ï¥Î Layout Manager
¡@¡@ipLabel = new Label("¥ØªºIP");
¡@¡@ipLabel.setBounds(5,32,45,25);
¡@¡@this.add( ipLabel );
¡@¡@ip = new TextField("127.0.0.1");
¡@¡@ip.setBounds( 50,32,180,25);
¡@¡@this.add( ip );
¡@¡@messLabel = new Label("°T¡@®§");
¡@¡@messLabel.setBounds(5,60,45,25);
¡@¡@this.add( messLabel );
¡@¡@mess = new TextField("Echo test...");
¡@¡@mess.setBounds( 50,60,180,25);
¡@¡@this.add( mess );
¡@¡@sndButton = new Button("¶Ç°e");
¡@¡@sndButton.setBounds( 235,60,50,25);
¡@¡@sndButton.addMouseListener( new myMouseAdapter() );
¡@¡@this.add( sndButton );
¡@¡@messList = new List( 12 );
¡@¡@messList.setBounds( 10,90,280,200);
¡@¡@this.add( messList );
¡@¡@this.addWindowListener(
¡@¡@¡@new WindowAdapter()
¡@¡@¡@{
¡@¡@¡@¡@public void windowClosing(WindowEvent e)
¡@¡@¡@¡@{
¡@¡@¡@¡@¡@System.exit(0);
¡@¡@¡@¡@}
¡@¡@¡@}
¡@¡@);
¡@ setBackground(Color.lightGray);
¡@ this.setTitle("EchoServer ¶Ç°e»P±µ¦¬");
¡@ this.setBounds( 100,100,300,300);
¡@ this.setVisible( true );
}

class myMouseAdapter extends MouseAdapter // Mouseªº¨Æ¥ó³B²z, ¶È§@click
{
¡@public void mouseClicked(MouseEvent e) // «ö¤U sndButton «ö¶s
¡@{ // °e
¡@¡@try
¡@¡@{
¡@¡@¡@InetAddress lcIP = InetAddress.getLocalHost(); //¥D¾÷¦WºÙ/IP
¡@¡@¡@String sendStr = lcIP.getHostAddress()+"=>" + mess.getText().trim();
¡@¡@¡@DatagramPacket DP =
¡@¡@¡@¡@¡@¡@new DatagramPacket( sendStr.getBytes(),
¡@¡@¡@¡@¡@¡@sendStr.getBytes().length,
¡@¡@¡@¡@¡@¡@InetAddress.getByName( ip.getText().trim() ),
¡@¡@¡@¡@¡@¡@portNum );
¡@¡@¡@DatagramSocket DS = new DatagramSocket();
¡@¡@¡@DS.send( DP );
¡@¡@¡@DS.close();
¡@¡@¡@messList.add( "¤w°e¥X"+mess.getText().trim() );
¡@¡@}
¡@¡@catch(Exception re){}
¡@}
}

public void run() //¦h°õ¦æºüªºrun¤èªk
{
¡@try
¡@{
¡@¡@while( true )
¡@¡@{ // ¦¬
¡@¡@¡@byte[] buf = new byte[200]; //³]©w½w½Ä°Ï¤j¤p
¡@¡@¡@DatagramPacket DP = new DatagramPacket( buf , buf.length); //³]©w±µ¦¬ºÝªºUDP packet
¡@¡@¡@DatagramSocket DS = new DatagramSocket( portNum ); //«Ø¥ß¶Ç°eºÝªºUDP socket
¡@¡@¡@DS.receive( DP ); //±µ¦¬UDP«Ê¥]
¡@¡@¡@DS.close();
¡@¡@¡@messList.add( new String( buf ).trim() );
¡@¡@¡@Thread.sleep(100);