ï»??xml version="1.0" encoding="utf-8" standalone="yes"?> ServerSocket:侦嬿‰€æœ‰çš„å®¢æˆ·ç«¯å‘æœåŠ¡ç«¯å‘é€çš„建立套接å—请求,然厘q”回套接å—对象SocketåQŒå®¢æˆïL«¯å’ŒæœåŠ¡ç«¯çš„è¿žæŽ¥å¾ç«‹ã€?/p>
æž„å¾ä¸€ä¸ªServerSocket对象åQŒéœ€è¦æŒ‡å®šä¸€ä¸ªç«¯å£å·åQŒä¾¦å¬åˆ°˜qžæŽ¥è¯äh±‚åQŒèŽ·å¾—ä¸€ä¸ªSocket对象åQŒå¾ç«‹Socket---Socket的连æŽ?/p>
import java.io.*; import java.net.*; public class JabberServer{   public static fianl int port=8080;   public static void main(String[] args){     ServerSocket ss=new ServerSocket(port);     System.out.println(ss);     try{       Socket s=ss.accept();       System.out.println(s);       try{         BufferedReader br=new BufferedReader(                     new InputStreamReader(                       s.getInputStream()                     )                   );         //建立˜qžæŽ¥åŽï¼Œå‘æœåŠ¡å™¨å†™å…¥è¾“å‡ºå†…å®¹åQŒåªæœ‰å½“输入内容¾~“å˜æ¯æ¬¡è¢«åˆ·æ–ŽÍ¼Œæ‰èƒ½é€šè¿‡¾|‘络å‘é€ä¸‹ä¸€æ‰Ò޶ˆæ?/span>         PrintWriter pw=new PrintWriter(                   new BufferedWriter(                     new OutputStreamWriter(                       s.getOutputStream();                     )                   )                 ,true);         String str=new String();         int i=0;         while(true){           str=br.readLine();           System.out.println(str);           pw.println(++i+"content from server");           if(str.equals("END")             break;         }       }finally{         System.out.println("Socket close");         s.close();       }     }finally{       System.out.println("ServerSocket close");       ss.close();     }   } } import java.io.*; import java.net.*; public class JabberClient{   public static void main(String[] args) thrwos Exception{     InetAddress add=InetAddress.getByName(null);     //InetAddress add=InetAddress.getByName("localhost");     //InetAddress add=InetAddress.getByName("127.0.0.1");     System.out.println(add);     Socket s=new Socket(add,JabberServer.port);     System.out.println(s);     try{       //建立˜qžæŽ¥åŽï¼Œå‘æœåŠ¡å™¨å†™å…¥è¾“å‡ºå†…å®¹åQŒåªæœ‰å½“输入内容¾~“å˜æ¯æ¬¡è¢«åˆ·æ–ŽÍ¼Œæ‰èƒ½é€šè¿‡¾|‘络å‘é€ä¸‹ä¸€æ‰Ò޶ˆæ?/span>       PrintWriter pw=new PrintWriter(                 new BufferedWriter(                   new OutputStreamWriter(                     s.getOutputStream()                   )                 )               ,true);       //获得æœåŠ¡å™¨è¿”å›žçš„æ¶ˆæ¯ ã€€ã€€ã€€ã€€ã€€ã€€BufferedReader br=new BufferedReader(                   new InputStreamReader(                     s.getInputStream()                   )                 );       String str=new String();       for(int i=0;i<10;i++){         pw.println(i+"content from client");         str=br.readLine();         System.out.println(str);       }       //告诉æœåŠ¡ç«¯ï¼Œå®¢æˆ·ç«¯å†…å®¹å†™å…¥å®Œæ¯?/span>       pw.println("END");     }finally{       System.out.println("Socket close");       s.close();     }   } } /**--注æ„--**/ 以上代ç 都是在文本编辑器ä¸å†™çš„,å¯èƒ½ä¼šæœ‰äº›è®¸¾U°æ¼ import java.awt.*; import java.awt.event.*; import java.applet.*; class Ticker extends Thread{   private Button t=new Button("toggle");   private TextField tf=new TextField(10);   //å¼€å…ÏxŽ§åˆ¶countçš„å˜åŒ?/span>   private runFlag=true;   private int count=0;   class Stop implements ActionListener{     @Override     public void actionPerformed(ActionEvent e){       runFlag=!runFlag;     }   }   public Ticker(Container c){     t.addActionListener(new Stop());     //Panel容器     Panel p=new Panel();     p.add(t);     p.add(tf);     c.add(p);   }   @Override   public void run(){     while(true){       try(         Thread.currentThread().sleep(200);       }catch(InterruptedException e){         e.printStackTrace();       }       if(runFlag)         tf.setText(Integer.toString(++count));     }   } } public class Counter extends Applet{   private Button start=new Button("Start");   private boolean started=false;   private int size=0;   private Ticker[] ts;   @Override   public void init(){     start.addActionListener(new Start());     add(start);     ts=new Ticker[size];     for(int i=0;i<size;i++){       ts[i]=new Ticker(Counter.this);     }   }   class Start implements ActionListener{     @Override     public void actionPerformed(ActionEvent e){       if(!started){         started=true;         for(int i=0;i<size;i++){           ts[i].start();         }       }     }   }   public static void main(String[] args){     Counter c=new Counter();     Frame frame=new Frame("½E‹åºç‰?);     frame.addWindowListener(       new WindowAdapter(){         @Override         public void windowClosing(WindowEvent e){           System.exit(0);         }       }     );     frame.setSize(300,c.size*50);     frame.add(c,BorderLayout.CENTER);     c.init();     c.start();     frame.setVisible(true);   } }
/**--注æ„--**/ 以上代ç 都是在文本编辑器ä¸å†™çš„,å¯èƒ½ä¼šæœ‰äº›è®¸¾U°æ¼
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
class StaticTest{
  //陿€å…¨å±€å˜é‡
  static int count=0;
  public StaticTest(){
    ++count;
    System.out.println("count:"+count);
  }
}
public class Test extends Applet{
  private Button btn=new Button("创å¾");
  private TextField tf=new TextField(10);
  //匿å内部¾c…R€€ã€€
  class Create implements ActionListener{
    public void actionPerformed(ActionEvent e){
      //æ¯æ¬¡å®žä¾‹åŒ–对象时åQŒcountçš„å€ég¼šä¸€ç›´ç¯åŠ ï¼Œè€Œä¸æ˜¯é‡æ–îC»Ž0å¼€å§?/span>
      StaticTest st=new StaticTest();
    }  
  }
  @Override
  public void init(){
    add(btn);
    //æ·ÕdŠ ç‚¹å‡»äº‹äšg
    btn.addActionListener(new Create());
    add(tf);
  }
  public static void main(String[] args){
    Test t=new Test();
    Frame frame=new Frame();
    //¾l™çª—壿·»åŠ å…³é—事ä»?/span>
    frame.addWindowListener(
      new ActionAdapter(){
        public void windowClosing(WindowEvent e){
          System.exit(0);
        }
      }
    );
    frame.add(t,BoderLayout.CENTER);
    frame.setSize(300,200);
    //åˆå§‹åŒ–窗å£å†…控äšg
    t.init();
    t.start();
    //昄¡¤º½E‹åºç‰‡çª—å?/span>
    frame.setVisible(true);
  }
}
//多线½E?/p>
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Test extends Applet{
  private Button start=new Button("开�#8220;),
          stop=new Button("åœæ¢");
  private TextField tf=new TextField(10);
  private runFlag=true;
  private static int count=0;
  private ThreadTest tt=null;
  //ž®†ThreadTestä½œäØ“ä¸€ä¸ªåŒ¿å内部类
  private ThreadTest extends Thread{
    //åœ¨æž„é€ ThreadTest½CÞZ¾‹å¯¹è±¡çš„æ—¶å€™ï¼Œå¯åЍ¾U¿ç¨‹
    public ThreadTest(){
      start();
    }
    @Override
    public void run(){
      while(true){
        try{
          Thread.currentThread().sleep(200);
        }catch(InterruptedException e){
          e.printStackTrace();
        }
        if(runFlag){
          tf.setText(Integer.toString(++count));
        }
      }
    }
  }
  class Start implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e){
      if(tt==null)
        tt=new ThreadTest();
    }
  }
  class Stop implements ActionListener{
     @Override
     public void actionPerformed(ActionEvent e){
        if(tt!=null)
          runFlag=!runFlag;
     }
  }
  @Override
  public void init(){
    add(stop);
    stop.addActionListener(new Stop());
    add(start);
    start.addActionListener(new Start());
    add(tf);
  }
  public static void main(String[] args){
    Frame frame=new Frame("½E‹åºç‰?);
    Test t=new Test();
    frame.addWindowListener(
      new WindowAdapter(){
        @Override
        public void windowClosing(WindwoEvent e){
          System.exit(0);
        }
      }
    );
    frame.add(t,BorderLayout.CENTER);
    frame.setSize(300,200);
    t.init();
    t.start();
    frame.setVisible(true);
  }
}
//在主¾cÖM¸åˆåƈ¾U¿ç¨‹
è¦å°†¾U¿ç¨‹ä¸Žä¸»¾cÕdˆòqÓž¼Œå¿…须实现Runnable接å£åQŒé‡å†™run()æ–ÒŽ³•åQŒä½†˜q™ä¸Žä»ŽThread¾l§æ‰¿çš„ç±»˜q˜æ˜¯æœ‰å¾ˆå¤§çš„差别。若è¦å¼€å¯ä¸€ä¸ªæ–°çš„线½E‹ï¼Œåªéœ€ž®†ä¸»¾cÖM½œä¸ÞZ¸€ä¸ªå‚æ•îC¼ å…¥å³å¯ï¼ˆ¾cÕdž‹ä¸Šæº¯åQˆRunnableåQ‰ï¼‰
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
//实现Runnable接å£
public class Test extends Applet implements Runnable{
  private Button start=new Button("Start"),
          stop=new Button("Stop");
  private TextField tf=new TextField(10);
  private Thread th=null;
  private boolean runFlag=true;
  private static int count=0;
  //é‡å†™runæ–ÒŽ³•
  @Override
  public void run(){
    while(true){
      try{
        th.sleep(200);
      }catch(InterruptedException e){
        e.printStackTrace();
      }
      if(runFlag)
        tf.setText(Integer.toString(++count));
    }
  }
  class Start implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e){
      if(th==null){
        //ä¼ å…¥å½“å‰ä¸Šä¸‹æ–‡å¯¹è±¡ï¼Œå³ä¸Šæº¯ç±»åž‹Runnable(å› äØ“å®žçŽ°äº†æ¤æŽ¥å£)
        th=new Thread(Test.this);
        th.start();
      }
    }
  }
  class Stop implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e){
      runFlag=!runFlag;
    }
  }
  @Override
  public void init(){
    add(start);
    start.addActionListener(new Start());
    add(stop);
    stop.addActionListener(new Stop());
    add(tf);
  }
  public static void main(String[] args){
    Frame frame=new Frame("½E‹åºç‰?);
    Test t=new Test();
    frame.add(t,BorderLayout.CENTER);
    frame.addWindowListener(
       new WindowAdapter(){
         @Override
          public void windowClosing(WindwoEvent e){
            System.exit(0);
          }
        }
    );
    frame.setSize(300,200);
    t.init();
    t.start();
    frame.setVisible(true);
  }
}
//基础知识åQšåœ¨åŒ¿å内部¾cÖM¸ä¸èƒ½å£°æ˜Žé™æ€å˜é‡?/span>
/**--注æ„--**/
以上代ç 都是在文本编辑器ä¸å†™çš„,å¯èƒ½ä¼šæœ‰äº›è®¸¾U°æ¼
java䏿œ‰ä¸€ä¸ªFilenameFilter的接å£ï¼Œèƒ½å¤Ÿ˜q‡æ×o得到指定¾cÕdž‹çš„æ–‡ä»¶æˆ–者目录,其ä¸å¿…é¡»é‡å†™acceptåQˆFile file,String pathåQ‰æ–¹æ³?/p>
public class DirFilter implements FilenameFilter{
  private String type;
  public DirFilter(String tp){
    this.type=tp;
  }
  public boolean accept(File fl,String path) throws Exception{
     File file=new File(path);
     String filename=file.getName();
     return filename.indexOf(type)!=-1;
  }
}
具体应用æ–ÒŽ³•åQšFileå‡å¦‚是一个DirectoryåQŒå¯ä»¥é€šè¿‡list()æ–ÒŽ³•得到˜q™ä¸ªç›®å½•下所有的文äšg和目录的å称数组åQŒlist()æ–ÒŽ³•åQŒä¸€¿Uæ˜¯æ²¡æœ‰å‚æ•°åQŒä¸€¿U是实现FilenameFilter接å£çš„傿•ŽÍ¼Œä¾‹å¦‚è¦èŽ·å¾—ä¸€ä¸ªæŒ‡å®šç›®å½•ä¸‹çš„æ‰€æœ‰çš„javaæ–‡äšgåQŒå°±è¦ä‹É用第二ç§å¸¦å‚æ•°çš„list()æ–ÒŽ³•
public class Test{
  public static void main(String[] args){
    try{
      //指定目录(“.”表示当å‰ç›®å½•)
      File dir=new File(".");
      String[] names;
      //获得所有javaæ–‡äšg
      DirFilter filter=new DirFilter(".java");
      names=dir.list(filter);
      //æ‰“å°æ‰€æœ‰javaæ–‡äšgåç§°
      for(int i=0;i<names.length;i++){
        System.out.println("i:"+i+" name:"+names[i]);
      }
    }catch(Exception e){
      e.printStackTrace();
    }
  }
}
其丘q™é‡Œ˜q˜å¯ä»¥å°†DirFilter¾cÖM½œä¸ºTest的一个匿å内部类æ¥å®žçŽŽÍ¼Œä¾‹å¦‚åQ?/p>
public class Test{
  //typeåQšå¿…™åÕd£°æ˜ŽäØ“final¾cÕdž‹åQŒä½œä¸ÞZ¸€ä¸ªåŒ¿å内部类åQŒè®¿é—®çš„å˜é‡éƒ½å¿…™åÕd£°æ˜ŽäØ“final¾cÕdž‹
  public static FilenameFilter filter(final String type) throws Exception{
    return new FilenameFilter(){
      public boolean accept(File file,Stirng path){
        String filename=new File(path).getName();
        return filename.indexOf(type)!=-1;
        } 
      };   
  }
  public static void main(String[] args){
    try{    
      File file=new File(".");
      String names[];
      names=file.list(filter(".java");
      for(int i=0;i<names.length;i++){
        System.out.println("i:"+i+" filename:"+names[i]);
      }
    catch(Exception e){
      e.printStackTrace();
    }
  }  
}
//基础知识1åQšåœ¨ä¸€ä¸ªjavaæ–‡äšgä¸ï¼Œæœ‰ä¸”åªèƒ½æœ‰ä¸€ä¸ªå…¬å…Þq±»åQŒå³¾cÈš„修饰½W¦äØ“public
//基础知识2åQšæŽ¥å£ä¸æ‰€å®šä¹‰çš„ä“Qä½•å¯¹è±¡é»˜è®¤ä½œç”¨åŸŸéƒ½äØ“public
//基础知识3åQšException的命åç©ºé—´äØ“java.lang.Exception
/**--注æ„--**/
以上代ç 都是在文本编辑器ä¸å†™çš„,å¯èƒ½ä¼šæœ‰äº›è®¸¾U°æ¼
其实所有的java对象都å¯ä»¥å…·å¤‡å…‹éš†èƒ½åŠ›ï¼Œåªæ˜¯å› äØ“åœ¨åŸº¼‹€¾c»Objectä¸è¢«è®‘Ö®šæˆäº†ä¸€ä¸ªä¿ç•™æ–¹æ³•(protected),è¦æƒ³çœŸæ£æ‹¥æœ‰å…‹éš†çš„能力,ž®±éœ€è¦å®žçްCloneable接å£åQŒé‡å†™cloneæ–ÒŽ³•。通过克隆æ–ÒŽ³•得到的对象得到的是一个本地的副本ã€?/p>
ä»£ç ½CÞZ¾‹åQ?/p>
class User implements Cloneable{
  int age;
  public User(int age){
    //用this关键å—ä¸è‡³äºŽ¾cÀLˆå‘˜å˜é‡ä¸Žå½¢å‚æ·äh·†
    this.age=age;
  }
  //˜q™é‡Œå¯åŠ @Override也å¯ä¸åŠ åQŒåŠ äº†ä¼šè‡ªåŠ¨æç¤ºæ˜¯å¦æ£ç¡®
  @Override
  public Object clone{
    Object o=null;
    try{
      o=super.clone();
    }catch(CloneNotSupportedException e){
      e.printStackTrace();
    }
  }
  public String toString(){
    return Integer.toString(this.age);
  }
}
public class Test{
  //(1)mainä¸åªèƒ½è°ƒç”¨é™æ€æ–¹æ³•(2åQ‰ä¿®æ”¹çš„æ˜¯ä¼ 入的User对象
  static User g(User u){
    u.age++;
    return u;
  }
  //在本åœîCñ”生了一个User对象副本
  static User f(User u){
    u=(User)u.clone();
    u.age++;
    return u;
  }
  public static void main(String[] args){
    User u=new User(23);
    User u2=g(u);
    if(u==u2)
      System.out.println("u==u2");
    else
      System.out.println("u!=u2");
    //下é¢ä¼šè‡ªåŠ¨è°ƒç”¨User对象的toString()æ–ÒŽ³•
    System.out.println("u.age:"+u);
    System.out.println("u2.age:"+u2);
    User u3=new User(23);
    User u4=f(u3);
    if(u3==u4)
      System.out.println("u3==u4");
    else
      System.out.println("u3!=u4");
    System.out.println("u3.age:"+u3);
    System.out.println("u4.age:"+u4);
  }
}
//基本知识åQšè¦æƒŒ™®©å¯¹è±¡å…ähœ‰cloneæ–ÒŽ³•åQŒåªè¦å®žçްCloneable接å£åQŒé‡å†™cloneæ–ÒŽ³•å›_¯åQŒä½†æ˜¯æœ‰ä¸¤ä¸ªéœ€è¦æ³¨æ„的点:åQ?åQ‰è°ƒç”¨super.clone()æ–ÒŽ³•åQ?åQ‰å®šä¹‰äØ“public公共æ–ÒŽ³•
/**--注æ„--**/
以上代ç 都是在文本编辑器ä¸å†™çš„,å¯èƒ½ä¼šæœ‰äº›è®¸¾U°æ¼