锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产午夜电影在线入口,亚洲国产精品久久久久婷婷老年,91精品国产亚洲爽啪在线影院http://m.tkk7.com/onejavaer/category/46184.html璁╂垜鍦ㄧ儹琛娌歌吘涓害姝や竴鐢?璁╂垜鍦ㄩ唶閰掕埇鐨勫夠姊﹂噷閱夋矇錛佽帿浣挎垜鐪艱榪欐償濉戠殑鑲夎韓錛岀粓浠ョ┖铏氱殑韜3姣佷簬娉ュ皹zh-cnTue, 31 Aug 2010 16:11:32 GMTTue, 31 Aug 2010 16:11:32 GMT60鍏ㄩ潰鏂囦歡鎿嶄綔java浠g爜http://m.tkk7.com/onejavaer/articles/102307.html鏆楀綺劇伒鏆楀綺劇伒Wed, 07 Mar 2007 01:09:00 GMThttp://m.tkk7.com/onejavaer/articles/102307.htmlhttp://m.tkk7.com/onejavaer/comments/102307.htmlhttp://m.tkk7.com/onejavaer/articles/102307.html#Feedback0http://m.tkk7.com/onejavaer/comments/commentRss/102307.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/102307.htmlimport java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
public class FileOperate {
    private String message;
    public FileOperate() {
    }

    /**
     * 璇誨彇鏂囨湰鏂囦歡鍐呭
     * @param filePathAndName 甯︽湁瀹屾暣緇濆璺緞鐨勬枃浠跺悕
     * @param encoding 鏂囨湰鏂囦歡鎵撳紑鐨勭紪鐮佹柟寮?br />     * @return 榪斿洖鏂囨湰鏂囦歡鐨勫唴瀹?br />     */

    public String readTxt(String filePathAndName,String encoding) throws IOException{
     encoding = encoding.trim();
     StringBuffer str = new StringBuffer("");
     String st = "";
     try{
      FileInputStream fs = new FileInputStream(filePathAndName);
      InputStreamReader isr;
      if(encoding.equals("")){
       isr = new InputStreamReader(fs);
      }else{
       isr = new InputStreamReader(fs,encoding);
      }
      BufferedReader br = new BufferedReader(isr);
      try{
       String data = "";
       while((data = br.readLine())!=null){
         str.append(data+" ");
       }
      }catch(Exception e){
       str.append(e.toString());
      }
      st = str.toString();
     }catch(IOException es){
      st = "";
     }
     return st;     
    }

    /**
     * 鏂板緩鐩綍
     * @param folderPath 鐩綍
     * @return 榪斿洖鐩綍鍒涘緩鍚庣殑璺緞
     */

    public String createFolder(String folderPath) {
        String txt = folderPath;
        try {
            java.io.File myFilePath = new java.io.File(txt);
            txt = folderPath;
            if (!myFilePath.exists()) {
                myFilePath.mkdir();
            }
        }
        catch (Exception e) {
            message = "鍒涘緩鐩綍鎿嶄綔鍑洪敊";
        }
        return txt;
    }
   
    /**
     * 澶氱駭鐩綍鍒涘緩
     * @param folderPath 鍑嗗瑕佸湪鏈駭鐩綍涓嬪垱寤烘柊鐩綍鐨勭洰褰曡礬寰?渚嬪 c:myf
     * @param paths 鏃犻檺綰х洰褰曞弬鏁幫紝鍚勭駭鐩綍浠ュ崟鏁扮嚎鍖哄垎 渚嬪 a|b|c
     * @return 榪斿洖鍒涘緩鏂囦歡鍚庣殑璺緞 渚嬪 c:myfac
     */

    public String createFolders(String folderPath, String paths){
        String txts = folderPath;
        try{
            String txt;
            txts = folderPath;
            StringTokenizer st = new StringTokenizer(paths,"|");
            for(int i=0; st.hasMoreTokens(); i++){
                    txt = st.nextToken().trim();
                    if(txts.lastIndexOf("/")!=-1){
                        txts = createFolder(txts+txt);
                    }else{
                        txts = createFolder(txts+txt+"/");   
                    }
            }
       }catch(Exception e){
           message = "鍒涘緩鐩綍鎿嶄綔鍑洪敊錛?;
       }
        return txts;
    }

   
    /**
     * 鏂板緩鏂囦歡
     * @param filePathAndName 鏂囨湰鏂囦歡瀹屾暣緇濆璺緞鍙婃枃浠跺悕
     * @param fileContent 鏂囨湰鏂囦歡鍐呭
     * @return
     */

    public void createFile(String filePathAndName, String fileContent) {
     
        try {
            String filePath = filePathAndName;
            filePath = filePath.toString();
            File myFilePath = new File(filePath);
            if (!myFilePath.exists()) {
                myFilePath.createNewFile();
            }
            FileWriter resultFile = new FileWriter(myFilePath);
            PrintWriter myFile = new PrintWriter(resultFile);
            String strContent = fileContent;
            myFile.println(strContent);
            myFile.close();
            resultFile.close();
        }
        catch (Exception e) {
            message = "鍒涘緩鏂囦歡鎿嶄綔鍑洪敊";
        }
    }


    /**
     * 鏈夌紪鐮佹柟寮忕殑鏂囦歡鍒涘緩
     * @param filePathAndName 鏂囨湰鏂囦歡瀹屾暣緇濆璺緞鍙婃枃浠跺悕
     * @param fileContent 鏂囨湰鏂囦歡鍐呭
     * @param encoding 緙栫爜鏂瑰紡 渚嬪 GBK 鎴栬?UTF-8
     * @return
     */

    public void createFile(String filePathAndName, String fileContent, String encoding) {
     
        try {
            String filePath = filePathAndName;
            filePath = filePath.toString();
            File myFilePath = new File(filePath);
            if (!myFilePath.exists()) {
                myFilePath.createNewFile();
            }
            PrintWriter myFile = new PrintWriter(myFilePath,encoding);
            String strContent = fileContent;
            myFile.println(strContent);
            myFile.close();
        }
        catch (Exception e) {
            message = "鍒涘緩鏂囦歡鎿嶄綔鍑洪敊";
        }
    }


    /**
     * 鍒犻櫎鏂囦歡
     * @param filePathAndName 鏂囨湰鏂囦歡瀹屾暣緇濆璺緞鍙婃枃浠跺悕
     * @return Boolean 鎴愬姛鍒犻櫎榪斿洖true閬亣寮傚父榪斿洖false
     */

    public boolean delFile(String filePathAndName) {
     boolean bea = false;
        try {
            String filePath = filePathAndName;
            File myDelFile = new File(filePath);
            if(myDelFile.exists()){
             myDelFile.delete();
             bea = true;
            }else{
             bea = false;
             message = (filePathAndName+"
鍒犻櫎鏂囦歡鎿嶄綔鍑洪敊");
            }
        }
        catch (Exception e) {
            message = e.toString();
        }
        return bea;
    }
   


    /**
     * 鍒犻櫎鏂囦歡澶?br />     * @param folderPath 鏂囦歡澶瑰畬鏁寸粷瀵硅礬寰?br />     * @return
     */

    public void delFolder(String folderPath) {
        try {
            delAllFile(folderPath); //鍒犻櫎瀹岄噷闈㈡墍鏈夊唴瀹?br />            String filePath = folderPath;
            filePath = filePath.toString();
            java.io.File myFilePath = new java.io.File(filePath);
            myFilePath.delete(); //鍒犻櫎絀烘枃浠跺す
        }
        catch (Exception e) {
            message = ("鍒犻櫎鏂囦歡澶規搷浣滃嚭閿?);
        }
    }
   
   
    /**
     * 鍒犻櫎鎸囧畾鏂囦歡澶逛笅鎵鏈夋枃浠?br />     * @param path 鏂囦歡澶瑰畬鏁寸粷瀵硅礬寰?br />     * @return
     * @return
     */

    public boolean delAllFile(String path) {
     boolean bea = false;
        File file = new File(path);
        if (!file.exists()) {
            return bea;
        }
        if (!file.isDirectory()) {
            return bea;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {
            if (path.endsWith(File.separator)) {
                temp = new File(path + tempList[i]);
            }else{
                temp = new File(path + File.separator + tempList[i]);
            }
            if (temp.isFile()) {
                temp.delete();
            }
            if (temp.isDirectory()) {
                delAllFile(path+"/"+ tempList[i]);//鍏堝垹闄ゆ枃浠跺す閲岄潰鐨勬枃浠?br />                delFolder(path+"/"+ tempList[i]);//鍐嶅垹闄ょ┖鏂囦歡澶?br />                bea = true;
            }
        }
        return bea;
    }


    /**
     * 澶嶅埗鍗曚釜鏂囦歡
     * @param oldPathFile 鍑嗗澶嶅埗鐨勬枃浠舵簮
     * @param newPathFile 鎷瘋礉鍒版柊緇濆璺緞甯︽枃浠跺悕
     * @return
     */

    public void copyFile(String oldPathFile, String newPathFile) {
        try {
            int bytesum = 0;
            int byteread = 0;
            File oldfile = new File(oldPathFile);
            if (oldfile.exists()) { //鏂囦歡瀛樺湪鏃?br />                InputStream inStream = new FileInputStream(oldPathFile); //璇誨叆鍘熸枃浠?br />                FileOutputStream fs = new FileOutputStream(newPathFile);
                byte[] buffer = new byte[1444];
                while((byteread = inStream.read(buffer)) != -1){
                    bytesum += byteread; //瀛楄妭鏁?鏂囦歡澶у皬
                    System.out.println(bytesum);
                    fs.write(buffer, 0, byteread);
                }
                inStream.close();
            }
        }catch (Exception e) {
            message = ("澶嶅埗鍗曚釜鏂囦歡鎿嶄綔鍑洪敊");
        }
    }
   

    /**
     * 澶嶅埗鏁翠釜鏂囦歡澶圭殑鍐呭
     * @param oldPath 鍑嗗鎷瘋礉鐨勭洰褰?br />     * @param newPath 鎸囧畾緇濆璺緞鐨勬柊鐩綍
     * @return
     */

    public void copyFolder(String oldPath, String newPath) {
        try {
            new File(newPath).mkdirs(); //濡傛灉鏂囦歡澶逛笉瀛樺湪 鍒欏緩绔嬫柊鏂囦歡澶?br />            File a=new File(oldPath);
            String[] file=a.list();
            File temp=null;
            for (int i = 0; i < file.length; i++) {
                if(oldPath.endsWith(File.separator)){
                    temp=new File(oldPath+file[i]);
                }else{
                    temp=new File(oldPath+File.separator+file[i]);
                }
                if(temp.isFile()){
                    FileInputStream input = new FileInputStream(temp);
                    FileOutputStream output = new FileOutputStream(newPath + "/" +
                    (temp.getName()).toString());
                    byte[] b = new byte[1024 * 5];
                    int len;
                    while ((len = input.read(b)) != -1) {
                        output.write(b, 0, len);
                    }
                    output.flush();
                    output.close();
                    input.close();
                }
                if(temp.isDirectory()){//濡傛灉鏄瓙鏂囦歡澶?br />                    copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
                }
            }
        }catch (Exception e) {
            message = "澶嶅埗鏁翠釜鏂囦歡澶瑰唴瀹規搷浣滃嚭閿?;
        }
    }


    /**
     * 縐誨姩鏂囦歡
     * @param oldPath
     * @param newPath
     * @return
     */

    public void moveFile(String oldPath, String newPath) {
        copyFile(oldPath, newPath);
        delFile(oldPath);
    }
   

    /**
     * 縐誨姩鐩綍
     * @param oldPath
     * @param newPath
     * @return
     */

    public void moveFolder(String oldPath, String newPath) {
        copyFolder(oldPath, newPath);
        delFolder(oldPath);
    }
    public String getMessage(){
        return this.message;
    }
}



鏆楀綺劇伒 2007-03-07 09:09 鍙戣〃璇勮
]]>
JAVA璇█鐨勫弽灝勫拰鍐呯渷http://m.tkk7.com/onejavaer/articles/101998.html鏆楀綺劇伒鏆楀綺劇伒Mon, 05 Mar 2007 13:41:00 GMThttp://m.tkk7.com/onejavaer/articles/101998.htmlhttp://m.tkk7.com/onejavaer/comments/101998.htmlhttp://m.tkk7.com/onejavaer/articles/101998.html#Feedback0http://m.tkk7.com/onejavaer/comments/commentRss/101998.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/101998.html

寰堝鏈嬪弸鍦ㄦ繁鍏ョ殑鎺ヨЕ JAVA 璇█鍚庡氨浼氬彂鐜拌繖鏍蜂袱涓瘝錛氬弽灝?/span> (Reflection) 鍜屽唴鐪?/span> (Introspector) 錛岀粡甯告悶涓嶆竻妤氳繖鍒板簳鏄庝箞鍥炰簨錛屽湪浠涔堝満鍚堜笅搴旂敤浠ュ強濡備綍浣跨敤錛熶粖澶╂妸榪欎簩鑰呮斁鍦ㄤ竴璧蜂粙緇嶏紝鍥犱負瀹冧滑浜岃呮槸鐩歌緟鐩告垚鐨勩?/span>

鍙嶅皠

鐩稿鑰岃█錛屽弽灝勬瘮鍐呯渷鏇村鏄撶悊瑙d竴鐐廣傜敤涓鍙ユ瘮杈冪櫧鐨勮瘽鏉ユ鎷紝鍙嶅皠灝辨槸璁╀綘鍙互閫氳繃鍚嶇О鏉ュ緱鍒板璞?/span> ( 綾伙紝灞炴э紝鏂規硶 ) 鐨勬妧鏈備緥濡傛垜浠彲浠ラ氳繃綾誨悕鏉ョ敓鎴愪竴涓被鐨勫疄渚嬶紱鐭ラ亾浜嗘柟娉曞悕錛屽氨鍙互璋冪敤榪欎釜鏂規硶錛涚煡閬撲簡灞炴у悕灝卞彲浠ヨ闂繖涓睘鎬х殑鍊箋?/span>

榪樻槸鍐欎袱涓緥瀛愯澶у鏇寸洿瑙傜殑浜嗚В鍙嶅皠鐨勪嬌鐢ㄦ柟娉曪細

// 閫氳繃綾誨悕鏉ユ瀯閫犱竴涓被鐨勫疄渚?br /> Class cls_str = Class.forName( "java.lang.String" );
// 涓婇潰榪欏彞寰堢溂鐔燂紝鍥犱負浣跨敤榪?/span> JDBC 璁塊棶鏁版嵁搴撶殑浜洪兘鐢ㄨ繃 J
Object str = cls_str.newInstance();
// 鐩稿綋浜?/span> String str = new String();

// 閫氳繃鏂規硶鍚嶆潵璋冪敤涓涓柟娉?br /> String methodName = "length" ;
Method m = cls_str.getMethod(methodName, null );
System.out.println( "length is " + m.invoke(str, null ));
// 鐩稿綋浜?/span> System.out.println(str.length());

涓婇潰鐨勪袱涓緥瀛愭槸姣旇緝甯哥敤鏂規硶銆傜湅鍒頒笂闈㈢殑渚嬪瓙灝辨湁浜鴻鍙戦棶浜嗭細涓轟粈涔堣榪欎箞楹葷儲鍛紵鏈潵涓鏉¤鍙ュ氨瀹屾垚鐨勪簨鎯呭共鍚楄鏁磋繖涔堝鏉傦紵娌¢敊錛屽湪涓婇潰鐨勪緥瀛愪腑紜疄娌℃湁蹇呰榪欎箞楹葷儲銆備笉榪囦綘鎯沖儚榪欐牱涓涓簲鐢ㄧ▼搴忥紝瀹冩敮鎸佸姩鎬佺殑鍔熻兘鎵╁睍錛屼篃灝辨槸璇寸▼搴忎笉閲嶆柊鍚姩浣嗘槸鍙互鑷姩鍔犺澆鏂扮殑鍔熻兘錛岃繖涓姛鑳戒嬌鐢ㄤ竴涓叿浣撶被鏉ヨ〃紺恒傞鍏堟垜浠繀欏諱負榪欎簺鍔熻兘瀹氫箟涓涓帴鍙g被錛岀劧鍚庢垜浠姹傛墍鏈夋墿灞曠殑鍔熻兘綾誨繀欏誨疄鐜版垜鎸囧畾鐨勬帴鍙o紝榪欎釜瑙勫畾浜嗗簲鐢ㄧ▼搴忓拰鍙墿灞曞姛鑳戒箣闂寸殑鎺ュ彛瑙勫垯錛屼絾鏄庝箞鍔ㄦ佸姞杞藉憿錛熸垜浠繀欏昏搴旂敤紼嬪簭鐭ラ亾瑕佹墿灞曠殑鍔熻兘綾葷殑綾誨悕錛屾瘮濡傛槸 test.Func1 錛屽綋鎴戜滑鎶婅繖涓被鍚?/span> ( 瀛楃涓?/span> ) 鍛婅瘔搴旂敤紼嬪簭鍚庯紝瀹冨氨鍙互浣跨敤鎴戜滑絎竴涓緥瀛愮殑鏂規硶鏉ュ姞杞藉茍鍚敤鏂扮殑鍔熻兘銆傝繖灝辨槸綾葷殑鍙嶅皠錛岃闂綘鏈夊埆鐨勯夋嫨鍚楋紵

       鍏充簬鏂規硶鐨勫弽灝勫緩璁ぇ瀹剁湅鎴戠殑鍙﹀涓綃囨枃绔犮?/span> 鍒╃敤 Turbine 鐨勪簨浠舵槧灝勬潵鎵╁睍 Struts 鐨勫姛鑳?/span> 銆嬶紝鍦板潃鏄細 http://www.javayou.com/article/CSDN/extend_struts.html 銆傝繖綃囨枃绔犺緇嗕粙緇嶄簡濡傛灉閫氳繃鍙嶅皠鏉ユ墿灞?/span> Struts 妗嗘灦鐨勫姛鑳姐?/span>

鍐呯渷

鍐呯渷鏄?/span> Java 璇█瀵?/span> Bean 綾誨睘鎬с佷簨浠剁殑涓縐嶇己鐪佸鐞嗘柟娉曘備緥濡傜被 A 涓湁灞炴?/span> name, 閭f垜浠彲浠ラ氳繃 getName,setName 鏉ュ緱鍒板叾鍊兼垨鑰呰緗柊鐨勫箋傞氳繃 getName/setName 鏉ヨ闂?/span> name 灞炴э紝榪欏氨鏄粯璁ょ殑瑙勫垯銆?/span> Java 涓彁渚涗簡涓濂?/span> API 鐢ㄦ潵璁塊棶鏌愪釜灞炴х殑 getter/setter 鏂規硶錛岄氳繃榪欎簺 API 鍙互浣夸綘涓嶉渶瑕佷簡瑙h繖涓鍒欙紙浣嗕綘鏈濂借繕鏄鎼炴竻妤氾級錛岃繖浜?/span> API 瀛樻斁浜庡寘 java.beans 涓?/span>

涓鑸殑鍋氭硶鏄氳繃綾?/span> Introspector 鏉ヨ幏鍙栨煇涓璞$殑 BeanInfo 淇℃伅錛岀劧鍚庨氳繃 BeanInfo 鏉ヨ幏鍙栧睘鎬х殑鎻忚堪鍣紙 PropertyDescriptor 錛夛紝閫氳繃榪欎釜灞炴ф弿榪板櫒灝卞彲浠ヨ幏鍙栨煇涓睘鎬у搴旂殑 getter/setter 鏂規硶錛岀劧鍚庢垜浠氨鍙互閫氳繃鍙嶅皠鏈哄埗鏉ヨ皟鐢ㄨ繖浜涙柟娉曘備笅闈㈡垜浠潵鐪嬩竴涓緥瀛愶紝榪欎釜渚嬪瓙鎶婃煇涓璞$殑鎵鏈夊睘鎬у悕縐板拰鍊奸兘鎵撳嵃鍑烘潵錛?/span>

/* 
 * Created on 2004-6-29
 */

package demo;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

/**
  * 鍐呯渷婕旂ず渚嬪瓙
  * @author liudong
  */

public class IntrospectorDemo {
    String name;
    public static void main(String[] args) throws Exception{
        IntrospectorDemo demo = new IntrospectorDemo();
        demo.setName( "Winter Lau" );        

        // 濡傛灉涓嶆兂鎶婄埗綾葷殑灞炴т篃鍒楀嚭鏉ョ殑璇濓紝
        // 閭?/span> getBeanInfo 鐨勭浜屼釜鍙傛暟濉啓鐖剁被鐨勪俊鎭?br />         BeanInfo bi = Introspector.getBeanInfo(demo.getClass(), Object. class );
        PropertyDescriptor[] props = bi.getPropertyDescriptors();
        for ( int i=0;i<props.length;i++){
            System.out.println(props[i].getName()+ "=" +
                    props[i].getReadMethod().invoke(demo, null ));
        }

    }    

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this .name = name;
    }
}

Web 寮鍙戞鏋?/span> Struts 涓殑 FormBean 灝辨槸閫氳繃鍐呯渷鏈哄埗鏉ュ皢琛ㄥ崟涓殑鏁版嵁鏄犲皠鍒扮被鐨勫睘鎬т笂錛屽洜姝よ姹?/span> FormBean 鐨勬瘡涓睘鎬ц鏈?/span> getter/setter 鏂規硶銆備絾涔熷茍涓嶆繪槸榪欐牱錛屼粈涔堟剰鎬濆憿錛熷氨鏄瀵逛竴涓?/span> Bean 綾繪潵璁詫紝鎴戝彲浠ユ病鏈夊睘鎬э紝浣嗘槸鍙鏈?/span> getter/setter 鏂規硶涓殑鍏朵腑涓涓紝閭d箞 Java 鐨勫唴鐪佹満鍒跺氨浼氳涓哄瓨鍦ㄤ竴涓睘鎬э紝姣斿綾諱腑鏈夋柟娉?/span> setMobile 錛岄偅涔堝氨璁や負瀛樺湪涓涓?/span> mobile 鐨勫睘鎬э紝榪欐牱鍙互鏂逛究鎴戜滑鎶?/span> Bean 綾婚氳繃涓涓帴鍙f潵瀹氫箟鑰屼笉鐢ㄥ幓鍏沖績鍏蜂綋瀹炵幇錛屼笉鐢ㄥ幓鍏沖績 Bean 涓暟鎹殑瀛樺偍銆傛瘮濡傛垜浠彲浠ユ妸鎵鏈夌殑 getter/setter 鏂規硶鏀懼埌鎺ュ彛閲屽畾涔夛紝浣嗘槸鐪熸鏁版嵁鐨勫瓨鍙栧垯鏄湪鍏蜂綋綾諱腑鍘誨疄鐜幫紝榪欐牱鍙彁楂樼郴緇熺殑鎵╁睍鎬с?/span>

鎬葷粨

灝?/span> Java 鐨勫弽灝勪互鍙婂唴鐪佸簲鐢ㄥ埌紼嬪簭璁捐涓幓鍙互澶уぇ鐨勬彁渚涚▼搴忕殑鏅鴻兘鍖栧拰鍙墿灞曟с傛湁寰堝欏圭洰閮芥槸閲囧彇榪欎袱縐嶆妧鏈潵瀹炵幇鍏舵牳蹇冨姛鑳斤紝渚嬪鎴戜滑鍓嶉潰鎻愬埌鐨?/span> Struts 錛岃繕鏈夌敤浜庡鐞?/span> XML 鏂囦歡鐨?/span> Digester 欏圭洰錛屽叾瀹炲簲璇ヨ鍑犱箮鎵鏈夌殑欏圭洰閮芥垨澶氭垨灝戠殑閲囩敤榪欎袱縐嶆妧鏈傚湪瀹為檯搴旂敤榪囩▼涓簩鑰呰鐩鎬簰緇撳悎鏂硅兘鍙戞尌鐪熸鐨勬櫤鑳藉寲浠ュ強楂樺害鍙墿灞曟с?/span>



鏆楀綺劇伒 2007-03-05 21:41 鍙戣〃璇勮
]]>
瀛楃涓插尮閰?/title><link>http://m.tkk7.com/onejavaer/articles/101992.html</link><dc:creator>鏆楀綺劇伒</dc:creator><author>鏆楀綺劇伒</author><pubDate>Mon, 05 Mar 2007 13:25:00 GMT</pubDate><guid>http://m.tkk7.com/onejavaer/articles/101992.html</guid><wfw:comment>http://m.tkk7.com/onejavaer/comments/101992.html</wfw:comment><comments>http://m.tkk7.com/onejavaer/articles/101992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/onejavaer/comments/commentRss/101992.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/onejavaer/services/trackbacks/101992.html</trackback:ping><description><![CDATA[ <h1>1 鏈瀹氫箟</h1> <p>鍦ㄥ瓧絎︿覆鍖歸厤闂涓紝鎴戜滑鏈熷緟瀵熺湅涓睺涓槸鍚﹀惈鏈変覆P銆?br />鍏朵腑涓睺琚О涓虹洰鏍囦覆錛屼覆S琚О涓烘ā寮忎覆銆?/p> <h1>2 鏈寸礌鍖歸厤綆楁硶</h1> <p>榪涜瀛楃涓插尮閰嶏紝鏈綆鍗曠殑涓涓兂娉曟槸錛?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img id="Codehighlighter1_25_607_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_607_Open_Text.style.display='none'; Codehighlighter1_25_607_Closed_Image.style.display='inline'; Codehighlighter1_25_607_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_25_607_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_607_Closed_Text.style.display='none'; Codehighlighter1_25_607_Open_Image.style.display='inline'; Codehighlighter1_25_607_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000"> SimpleMatch </span> <span id="Codehighlighter1_25_607_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.tkk7.com/images/dot.gif" /> </span> <span id="Codehighlighter1_25_607_Open_Text"> <span style="COLOR: #000000">{<br /><img id="Codehighlighter1_81_424_Open_Image" onclick="this.style.display='none'; Codehighlighter1_81_424_Open_Text.style.display='none'; Codehighlighter1_81_424_Closed_Image.style.display='inline'; Codehighlighter1_81_424_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_81_424_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_81_424_Closed_Text.style.display='none'; Codehighlighter1_81_424_Open_Image.style.display='inline'; Codehighlighter1_81_424_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> StringMatch(String target,String patten) </span> <span id="Codehighlighter1_81_424_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.tkk7.com/images/dot.gif" /> </span> <span id="Codehighlighter1_81_424_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> tl </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> target.length();<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> pl </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> patten.length();<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> i </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> j </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">;<br /><img id="Codehighlighter1_216_365_Open_Image" onclick="this.style.display='none'; Codehighlighter1_216_365_Open_Text.style.display='none'; Codehighlighter1_216_365_Closed_Image.style.display='inline'; Codehighlighter1_216_365_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_216_365_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_216_365_Closed_Text.style.display='none'; Codehighlighter1_216_365_Open_Image.style.display='inline'; Codehighlighter1_216_365_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />      </span> <span style="COLOR: #0000ff">while</span> <span style="COLOR: #000000">(i </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000"> tl </span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000"> pl </span> <span style="COLOR: #000000">&&</span> <span style="COLOR: #000000"> j </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000"> pl) </span> <span id="Codehighlighter1_216_365_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.tkk7.com/images/dot.gif" /> </span> <span id="Codehighlighter1_216_365_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />          </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">(patten.charAt(j) </span> <span style="COLOR: #000000">==</span> <span style="COLOR: #000000"> target.charAt(i</span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000">j))<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />              j</span> <span style="COLOR: #000000">++</span> <span style="COLOR: #000000">;<br /><img id="Codehighlighter1_305_357_Open_Image" onclick="this.style.display='none'; Codehighlighter1_305_357_Open_Text.style.display='none'; Codehighlighter1_305_357_Closed_Image.style.display='inline'; Codehighlighter1_305_357_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_305_357_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_305_357_Closed_Text.style.display='none'; Codehighlighter1_305_357_Open_Image.style.display='inline'; Codehighlighter1_305_357_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />          </span> <span style="COLOR: #0000ff">else</span> <span style="COLOR: #000000"> </span> <span id="Codehighlighter1_305_357_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.tkk7.com/images/dot.gif" /> </span> <span id="Codehighlighter1_305_357_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />              j </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />              i</span> <span style="COLOR: #000000">++</span> <span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />          }</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />      }</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">(j </span> <span style="COLOR: #000000">==</span> <span style="COLOR: #000000"> pl)<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />          </span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000"> i;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      </span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />  <br /><img id="Codehighlighter1_469_605_Open_Image" onclick="this.style.display='none'; Codehighlighter1_469_605_Open_Text.style.display='none'; Codehighlighter1_469_605_Closed_Image.style.display='inline'; Codehighlighter1_469_605_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_469_605_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_469_605_Closed_Text.style.display='none'; Codehighlighter1_469_605_Open_Image.style.display='inline'; Codehighlighter1_469_605_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000"> main(String[] args)</span> <span id="Codehighlighter1_469_605_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.tkk7.com/images/dot.gif" /> </span> <span id="Codehighlighter1_469_605_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      String t </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">123456789</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      String p </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">456</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      SimpleMatch sm </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> SimpleMatch();<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />      System.out.println(sm.StringMatch(t, p));<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p>鍙互鐪嬭錛岃繖涓畻娉曪紙鍋囧畾m>>n錛夌殑澶嶆潅搴︽槸O(mn)錛屽叾涓璵鏄疶鐨勯暱搴︼紝n鏄疨鐨勯暱搴︺傝繖縐嶇畻娉曠殑緙洪櫡鏄尮閰嶈繃紼嬩腑甯︽湁鍥炴函鈥斺斿噯紜湴璇存槸T涓插瓨鍦ㄥ洖婧紝涔熷氨鏄綋鍖歸厤涓嶆垚鍔熺殑鏃跺欙紝涔嬪墠榪涜鐨勫尮閰嶅畬鍏ㄥ彉涓烘棤鐢ㄥ姛錛屾墍鏈夌殑姣旇緝闇瑕侀噸鏂板紑濮嬨?/p> <h1>3 KMP綆楁硶</h1> <p>KMP綆楁硶鏄疍.E.Knuth銆丣.H.Morris鍜孷.R.Pratt鎻愬嚭鐨勬棤鍥炴函鐨勫瓧絎︿覆鍖歸厤綆楁硶錛岀畻娉曠殑鏍稿績鎬濇兂灝辨槸璁炬硶鍦ㄥ尮閰嶅け璐ョ殑鏃跺欙紝灝介噺鍒╃敤涔嬪墠鐨勫尮閰嶇粨鏋滐紝娑堥櫎T涓茬殑鍥炴函闂銆傞偅涔堝浣曟秷闄ゅ洖婧憿錛熻鐪嬩笅闈㈢殑渚嬪瓙錛?/p> <p>鍋囪P=abacd錛屽鏋淭=abax...錛屽綋浠庡ご寮濮嬪尮閰嶅埌瀛楃c鏃訛紝鑻=x錛屾樉鐒訛紝鍖歸厤榪囩▼緇х畫錛涘綋c≠x鏃訛紝鎸夌収鏈寸礌鐨勫尮閰嶇畻娉曪紝T涓蹭細鍙戠敓鍥炴函錛屼箣鍚嶵涓蹭細浠庣2涓瓧絎寮濮嬮噸鏂板尮閰嶏紝鑰屼笉鏄粠鍖歸厤澶辮觸鐨勫瓧絎寮濮嬬戶緇備絾鏄樉鐒訛紝瀵逛簬涓婅堪鐨勫尮閰嶈繃紼嬶紝T涓蹭笉闇瑕佷粠b寮濮嬮噸鏂板尮閰嶏紝瀹冨彧闇瑕佷粠x寮濮嬪拰P鐨刡瀛楃緇х畫鍖歸厤鍗沖彲銆傚涓嬶細<br />鍖歸厤榪囩▼錛?br />P=abacd<br />T=abax....<br />     ^----姣旇緝鍒版澶勬椂鍙戠敓鍖歸厤澶辮觸<br />鏈寸礌鍖歸厤綆楁硶錛?br />P= abacd<br />T=abax...<br />   ^----鍥炴函鍒癰錛岄噸鏂板紑濮嬪拰P鐨勫尮閰?br />KMP綆楁硶錛?br />P=  abacd<br />T=abax...<br />     ^----T涓蹭笉鍥炴函錛屼粠x澶勭戶緇尮閰?/p> <p>鐜板湪鐨勯棶棰樻槸錛屾寜鐓MP綆楁硶錛屽尮閰嶅け璐ョ殑鏃跺欙紝P涓查渶瑕侀噸鏂拌皟鏁翠綅緗紝浣嗘槸璋冩暣鐨勪緷鎹槸浠涔堬紵Knuth絳変漢鍙戠幇錛孭璋冩暣浣嶇疆鐨勪緷鎹拰P鐨勬瀯閫犳湁鍏籌紝鍜孴鏃犲叧銆傚叿浣撴潵璇達紝瀹氫箟澶辨晥鍑芥暟錛歠(j)=k錛屽叾涓?<=k<=j錛屼笖k鏄嬌寰梡<sub>0</sub>p<sub>1</sub>...p<sub>k-1</sub> = p<sub>j-k+1</sub>p<sub>j-k+2</sub>...p<sub>j</sub>鎴愮珛鐨勬渶澶ф暣鏁般傚緩绔嬪け鏁堝嚱鏁扮殑綆楁硶濡備笅錛?br />public void Build() {<br /> if(pattern == null)<br />  throw new Exception("KMP Exception : null pattern");<br /> array = new int[pattern.Length];<br /> int i = 0, s = pattern.Length;<br /> if(s > 1)<br />  array[0] = 0;<br /> for(i = 1; i < s; i++) {<br />  if(pattern[i] == pattern[array[i - 1]])<br />   array[i] = array[i - 1] + 1;<br />  else<br />   array[i] = 0;<br /> }<br />}</p> <p>鍖歸厤榪囩▼濡備笅錛?br />public int Match(String target, int start) {<br /> if(array == null || pattern == null || target == null)<br />  return -1;<br /> int target_index = start;<br /> int pattern_index = 0;<br /> int token_length = target.Length;<br /> int pattern_length = pattern.Length;<br /> while(target_index < token_length && pattern_index < pattern_length) {<br />  if(target[target_index] == pattern[pattern_index]) {<br />   target_index++;<br />   pattern_index++;<br />  } else {<br />   if(pattern_index == begin)<br />    target_index++;<br />   else<br />    pattern_index = array[pattern_index - 1];<br />  }<br /> }<br /> if(pattern_index == pattern_length)<br />  return target_index - pattern_length;<br /> return -1;<br />}</p> <h1>4 鏀寔閫氶厤絎?鍜?鐨凨MP綆楁硶</h1> <p>KMP綆楁硶铏界劧鑳藉榪涜瀛楃涓插尮閰嶏紝浣嗘槸錛屽湪瀹炶返涓瓧絎︿覆鍖歸厤寰寰榪樿鏀寔閫氶厤絎︼紝MS緋葷粺涓渶甯歌鐨勯氶厤絎︽槸?鍜?銆傚叾涓紝?鍙互浠h〃涓涓瓧絎︼紙涓嶈兘娌℃湁錛夛紝*鍙互浠h〃浠繪剰澶氫釜瀛楃錛堝彲浠ヤ負絀猴級銆傜粡鍏哥殑KMP綆楁硶閽堝閫氶厤絎︽槸鏃犺兘涓哄姏鐨勶紝浣嗘槸緇忚繃綆鍗曠殑鏀歸狅紝KMP綆楁硶涔熷彲浠ヨ瘑鍒氶厤絎︺?/p> <p>棣栧厛鏄?錛屾牴鎹?鐨勫姛鑳斤紝?琛ㄧず浠繪剰瀛楃錛屼篃灝辨槸璇村湪鍖歸厤榪囩▼涓紝?姘歌繙鍖歸厤鎴愬姛銆傚洜姝ゅ鍖歸厤鍑芥暟鐨勪慨鏀瑰崄鍒嗙畝鍗曪細<br />...<br /> while(target_index < token_length && pattern_index < pattern_length) {<br />  if(target[target_index] == pattern[pattern_index]|| pattern[pattern_index] == '?') {<br />   target_index++;<br />   pattern_index++;<br />  } else {<br />...<br />寤虹珛澶辨晥鍑芥暟鐨勮繃紼嬪拰鍖歸厤榪囩▼綾諱技錛屼慨鏀瑰涓嬶細<br />...<br /> for(i = 1; i < s; i++) {<br />  if(pattern[i] == pattern[array[i - 1]]|| pattern[i] == '?' || pattern[array[i - 1]] == '?')<br />   array[i] = array[i - 1] + 1;<br />...</p> <p>鏈川涓婏紝?騫舵病鏈変慨鏀圭畻娉曪紝鑰屼粎浠呬慨鏀逛簡鍖歸厤瑙勫垯鈥斺旈亣鍒?鍒欎竴瀹氬尮閰嶃傜劧鑰?涓庢涓嶅悓錛?鐨勪綔鐢ㄦ槸鍖歸厤浠繪剰澶氫釜瀛楃錛屾樉鐒舵垜浠笉鑳界畝鍗曠殑淇敼鍖歸厤榪囩▼鑰屾弧瓚寵姹傘傚鏋滄垜浠噸鏂版濊?鐨勪綔鐢紝鎴戜滑浼氬彂鐜?鐨勫彟涓涓綔鐢ㄥ氨鏄垎鍓睵涓詫紝鍗沖鏋淧=P<sub>1</sub>*P<sub>2</sub>錛岄偅涔堜笌鍏惰*浠h〃鍖歸厤浠繪剰澶氫釜瀛楃錛屼笉濡傝P鐨勫尮閰嶆潯浠舵槸鍦ㄥ尮閰峆<sub>1</sub>瀛愪覆鍚庡啀鍖歸厤P<sub>2</sub>瀛愪覆銆?/p> <p>鐜板湪鍥為【澶辨晥鍑芥暟鐨勪綔鐢紝濡傛灉褰撳尮閰嶅埌P鐨刯+1浣嶆椂鍖歸厤澶辮觸錛岄偅涔堥噸鏂板紑濮嬪尮閰嶇殑鏃跺欙紝P涓茬殑浣嶇疆璋冩暣鍒癴(j)浣嶏紝鐩村埌P涓茬殑浣嶇疆璋冩暣鍒?錛屽垯鍖歸厤閲嶆柊寮濮嬨備絾褰揚=P<sub>1</sub>*P<sub>2</sub>錛屽亣濡侾<sub>1</sub>宸茬粡鍖歸厤鎴愬姛錛岃屽湪P<sub>2</sub>涓彂鐢熷尮閰嶅け璐ワ紝閭d箞P涓茶闇瑕佽皟鏁翠綅緗紝浣哖涓叉棤璁哄浣曡皟鏁達紝姝ゆ椂涔熶笉搴旇璋冩暣鍒?錛屾渶澶氳皟鏁村埌P<sub>2</sub>鐨勫紑濮嬪錛屽洜涓篜<sub>1</sub>宸茬粡鍖歸厤錛屽彧闇鍖歸厤P<sub>2</sub>鍗沖彲銆傚亣濡侾=abcab*abcab錛屽け鏁堝嚱鏁板簲璇ユ槸錛堟敞鎰忎箣鍓嶆彁鍒?鐨勪綔鐢級錛?br />a b c a b * a b c a b<br />0 0 0 1 2 - 6 6 6 7 8</p> <p>鍥犳錛岃鎯寵KMP鏀寔*錛岄偅涔堝叧閿槸瑕侀噸鏂拌璁″け鏁堝嚱鏁扮殑寤虹珛綆楁硶錛屽涓嬶細<br />public void Build() {<br /> if(pattern == null)<br />  throw new Exception("KMP Exception : null pattern");<br /> array = new int[pattern.Length];<br /> int i = 0, s = pattern.Length;<br /> if(s > 1)<br />  array[0] = 0;<br /> int begin = 0;<br /> for(i = 1; i < s; i++) {<br />  if(pattern[i] == '*') {<br />   array[i] = i;<br />   begin = i + 1;<br />  } else if(pattern[i] == pattern[array[i - 1]] || pattern[i] == '?' || pattern[array[i - 1]] == '?')<br />   array[i] = array[i - 1] + 1;<br />  else<br />   array[i] = begin;<br /> }<br />} </p> <p>綆楁硶涓璪egin琛ㄧず姣忔瀛楃涓茬殑寮濮嬩綅緗傛澶栵紝鍖歸厤榪囩▼涔熷簲璇ヨ繘琛岀浉搴旂殑淇敼錛屽洜涓哄瓧絎?瀵逛簬鍖歸厤娌℃湁浠諱綍甯姪錛屽畠灞炰簬鍗犱綅絎︼紝鍥犳闇瑕佽煩榪囷紝鍖歸厤綆楁硶濡備笅錛?br />public int Match(String target, int start) {<br /> if(array == null || pattern == null || target == null)<br />  return -1;<br /> int target_index = start;<br /> int pattern_index = 0;<br /> int token_length = target.Length;<br /> int pattern_length = pattern.Length;<br /> int begin = 0;<br /> while(target_index < token_length && pattern_index < pattern_length) {<br />  if(pattern[pattern_index] == '*') {<br />   begin = pattern_index + 1;<br />   pattern_index++;<br />  } else if(target[target_index] == pattern[pattern_index] || pattern[pattern_index] == '?') {<br />   target_index++;<br />   pattern_index++;<br />  } else {<br />   if(pattern_index == begin)<br />    target_index++;<br />   else<br />    pattern_index = array[pattern_index - 1];<br />  }<br /> }<br /> if(pattern_index == pattern_length)<br />  return target_index - pattern_length + begin;<br /> return -1;<br />}</p> <h1>5 姝e垯璇█鍜岀‘瀹氱姸鎬佽嚜鍔ㄦ満</h1> <p>涓涓暟瀛楅昏緫鐨勯棶棰橈細璁捐涓涓瘑鍒?1011鐨勭數璺紝瑙h繖涓棶棰樼殑鍏抽敭灝辨槸璁捐鍑鴻繖涓數璺殑DFA錛屽涓嬶細<br /><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.blog.edu.cn/UploadFiles/2006-8/823915044.png" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" /></p> <p>浠旂粏鐪嬬湅榪欎釜鐘舵佹満錛屾槸涓嶆槸鍜孠MP鐨勭畻娉曟湁鍑犲垎綾諱技鍛紵榪欏茍涓嶆槸宸у悎錛屽洜涓篕MP綆楁硶涓殑澶辨晥鍑芥暟鎬誨彲浠ョ瓑浠風殑杞寲涓轟竴涓狣FA銆傚綋鐒禟MP鐨凞FA榪滄瘮璇嗗埆11011鐨凞FA瑕佸鏉傦紝鍘熷洜鍦ㄤ簬KMP鎺ュ彈鐨勮緭鍏ユ槸鍏ㄤ綋瀛楃闆嗗悎錛岃瘑鍒?1011鐨凞FA鍙帴鍙?鍜?榪欎袱涓緭鍏ャ傛垜浠煡閬擄紝涓涓鍒欒璦鍜屼竴涓狣FA鏄瓑浠風殑錛岃孠MP璁$畻澶辨晥鍑芥暟鐨勭畻娉曪紝瀹為檯涓婄瓑浠蜂簬姹侱FA鐨勮繃紼嬶紝f(j)鐨勫煎疄闄呬笂琛ㄦ槑鐘舵乯+1鎺ュ彈鍒頒笉姝g‘鐨勫瓧絎︽椂搴旇鍥炴函鍒扮殑鐘舵侊紙娉ㄦ剰姝ゆ椂杈撳叆嫻佸茍娌℃湁鍓嶈繘錛夈傛櫘閫氱殑瀛楃涓查兘鑳界湅鎴愭槸涓涓鍒欒璦錛屽惈鏈夐氶厤絎?鍜?鐨勫瓧絎︿覆涔熷彲浠ョ瓑浠風殑杞崲涓轟竴涓鍒欒〃杈懼紡銆備絾鏄紝姝e垯璇█鐨勯泦鍚堣繙姣擪MP綆楁硶鎵鑳芥敮鎸佺殑妯″紡闆嗗悎鐨勬洿澶э紝鏈熼棿鍘熷洜榪樻槸鍒氭墠鎻愯繃鐨勮緭鍏ラ棶棰樸傝瘯鎯砅=p<sub>1</sub>p<sub>2</sub>...p<sub>n</sub>錛屽綋鍖歸厤鍒皃<sub>j</sub>鐨勬椂鍊欙紝濡傛灉涓嬩竴涓緭鍏ュ瓧絎︽鏄痯<sub>j</sub>錛岄偅涔堢姸鎬佹満榪涘叆涓嬩竴涓姸鎬侊紝濡傛灉涓嶆槸p<sub>j</sub>錛岄偅涔堢姸鎬佹満鎸夌収瀹炴晥鍑芥暟鐨勬寚紺鴻漿縐誨埌鐘舵乫(j-1)錛屼篃灝辨槸璇碖MP鐘舵佹満鐨勬瘡涓姸鎬佸彧鑳芥牴鎹緭鍏ユ槸鍚︿負p<sub>j</sub>鏉ヨ繘琛岃漿縐匯傝屾鍒欒〃杈懼紡鎵瀵瑰簲鐨勭姸鎬佹満鍒欐湁鎵涓嶅悓錛屽鏋滄鍒欒璦L=l<sub>1</sub>l<sub>2</sub>...l<sub>n</sub>錛屽亣璁捐繖浜涢兘鏄瓧姣嶏紝褰撳尮閰嶅埌l<sub>j</sub>浣嶇殑鏃跺欙紝濡傛灉涓嬩竴涓緭鍏ュ瓧絎︽鏄痩<sub>j</sub>錛岄偅涔堢姸鎬佹満榪涘叆涓嬩竴涓姸鎬侊紝鍚﹀垯瀹冭繕鍙互鏍規嵁杈撳叆鐨勫艱繘琛岃漿縐伙紝渚嬪l<sub>j</sub>=c<sub>1</sub>鏃惰漿鎹㈠埌鐘舵亁錛宭<sub>j</sub>=c<sub>2</sub>鏃剁姸鎬佽漿鎹㈠埌y絳夌瓑銆?/p> <h1>6 緇撹</h1> <p>瀛楃涓插尮閰嶉棶棰樻槸鑰侀棶棰樹簡錛屽茍娌℃湁澶鏂版剰鍙█錛屽彧涓嶈繃铏界劧KMP綆楁硶鍗佸垎綆鍗曪紝浣嗗畠鐨勫唴鍦ㄥ惈涔夎繕鏄崄鍒嗘繁鍒葷殑銆傛í鍚戞瘮杈僈MP銆丏FA鍜屾鍒欒璦銆佹鍒欒〃杈懼紡鎴戜滑浼氬彂鐜幫紝瀹冧滑涔嬮棿瀛樺湪寰堝鐨勫叧鑱旓紝鑰岃繖縐嶆瘮杈冧篃鏈夊埄浜庢垜浠洿濂界殑鐞嗚В榪欎簺綆楁硶錛屾垨鑰呮敼榪涜繖浜涚畻娉曘傛渶鍚庤涓鍙ワ紝璇曞浘鍒╃敤鐩墠鐨勬鏋朵嬌寰桲MP綆楁硶鏀寔鍏ㄩ儴縐嶇被鐨勯氶厤絎︼紙瀵瑰簲浜庢鍒欒〃杈懼紡灝辨槸x?銆亁*銆亁+銆亄m,n}絳夌瓑錛夋槸涓嶅彲鑳斤紝鑰屾垜浠篃涓嶉渶瑕佽繖涔堝仛錛屽洜涓烘垜浠繕鏈夋鍒欒〃杈懼紡鍢涖?/p> <img src ="http://m.tkk7.com/onejavaer/aggbug/101992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/onejavaer/" target="_blank">鏆楀綺劇伒</a> 2007-03-05 21:25 <a href="http://m.tkk7.com/onejavaer/articles/101992.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>NoClassDefDoundErr涓嶤lassNotFoundException鍖哄埆 http://m.tkk7.com/onejavaer/articles/101651.html鏆楀綺劇伒鏆楀綺劇伒Sat, 03 Mar 2007 10:23:00 GMThttp://m.tkk7.com/onejavaer/articles/101651.htmlhttp://m.tkk7.com/onejavaer/comments/101651.htmlhttp://m.tkk7.com/onejavaer/articles/101651.html#Feedback0http://m.tkk7.com/onejavaer/comments/commentRss/101651.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/101651.html浣滆?langm

鐗堟潈澹版槑錛氭湰鏂囧彲浠ヨ嚜鐢辮漿杞斤紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈0鏄?
浣滆?langm
鍘熸枃:http://www.matrix.org.cn/resource/article/44/44056_NoClassDefDoundErr.html
鍏抽敭瀛?NoClassDefDoundErr ClassNotFoundException

鍦ㄨ榪欑瘒鏂囩珷涔嬪墠錛屼綘鏈濂戒簡瑙d竴涓婮ava鐨凟xception鏈哄埗銆?/p>

涔熻浣犲湪寮鍙戠殑榪囩▼涓粡甯稿湴瑙佸埌ClassNotFoundException鍜孨oClassDefFoundErr榪欎袱涓紓甯革紝姣忔瘡鐪嬪埌涔嬪悗錛岄兘浼氫竴姒傝岃鐨勬槸綾繪病鏈夋壘鍒幫紝浣嗘湁浜涙椂鍊欒鍒頒粬浠殑鏃跺欏張鏈変簺鐤戞儜錛堣嚦灝戞垜鏄繖鏍鳳級錛屼負浠涔圝ava瑕佺敤涓や釜寮傚父鏉ヨ〃紺虹被瀹氫箟娌℃湁鎵懼埌閭o紵浠栦滑涔嬮棿鏈変粈涔堝尯鍒偅錛?/p>

姝e閥浠婂ぉ鎴戝張紕板埌浜嗚繖涓棶棰橈紝欏轟究鐨勪粩緇嗙爺絀朵簡涓涓嬭繖涓や釜寮傚父鐨勫尯鍒?
棣栧厛錛?
ClassNotFoundException鐩存帴緇ф壙涓嶦xception錛屽畠鏄竴涓猚hecked鐨勫紓甯搞?
NoClassDefFoundErr 緇ф壙鑷狤rror->LinkageError 錛屽畠鏄竴涓猽nchecked鐨勫紓甯搞?/p>

涓嬮潰璁╂垜浠湅涓涓嬩袱涓紓甯稿湪API鏂囨。涓殑璇存槑

ClassNotFoundException錛?
褰撳簲鐢ㄥ皾璇曠敤瀛楃涓插悕縐伴氳繃涓嬮潰鐨勬柟娉曡杞戒竴涓被鏃惰繖涓被鐨勫畾涔夊嵈娌℃湁鎵懼埌鏃朵細鎶涘嚭鐨勫紓甯搞?
Class.forName
ClassLoader.findSystemClass
ClassLoader.loadClass

NoClassDefFoundErr錛?
褰揓VM鎴栬匔lassLoader瀹炰緥灝濊瘯瑁呰澆涓涓被鐨勫畾涔夛紙榪欓氬父鏄竴涓柟娉曡皟鐢ㄦ垨鑰卬ew琛ㄨ揪寮忓垱寤轟竴涓疄渚嬭繃紼嬬殑涓閮ㄥ垎錛夎岃繖涓被瀹氫箟騫舵病鏈夋壘鏃舵墍鎶涘嚭鐨勯敊璇?
褰撶紪璇戠殑鏃跺欏彲浠ユ壘鍒拌繖涓被鐨勫畾涔夛紝浣嗘槸浠ュ悗榪欎釜綾諱笉鍐嶅瓨鍦ㄣ?/p>

榪欐瘮杈冩樉鑰屾槗瑙佷簡鍚э紝璇誨ソ鏂囨。鏄緢閲嶈鐨勪簨鎯呫傝繖閲屾垜灝辮涓涓嬫垜瀵硅繖涓や釜綾葷殑鍖哄埆鐨勭悊瑙c?/p>

ClassNotFoundException寮傚父鍙嚭鐜板湪浣犵殑搴旂敤紼嬪簭涓誨姩鐨勮杞界被鐨勮繃紼嬩腑錛岃繖涓紓甯稿緢澶氭椂鍊欏嚭鐜板湪鎴戜滑鐨勫簲鐢ㄦ鏋跺湪鍒濆鍖栨垨鑰呰繍琛屼腑鍔ㄦ佽杞藉凡閰嶇疆鐨勭被鐨勮繃紼嬩腑銆傝繖縐嶆儏鍐典笅鎴戜滑搴旇棣栧厛媯鏌ユ垜浠殑閰嶇疆鎴栬呭弬鏁版槸鍚﹂敊璇紝鏄惁浼佸浘瑁呰澆涓涓茍涓嶅瓨鍦ㄧ殑綾伙紝濡傛灉閰嶇疆娌℃湁閿欒錛屾垜浠氨搴旇鏌ョ湅Classpath鏄惁閰嶇疆閿欒鑰屽鑷碈lassLoader鏃犳硶鎵懼埌榪欎釜綾伙紝涔熷簲璇ユ鏌ヨ瑁呰澆鐨勭被鏄惁鍦ㄤ竴涓猨ar鍖呬腑鑰屾垜浠湪寮曞叆榪欎釜jar鍖呯殑榪囩▼涓槸鍚︽湁閬楁紡鎴栭敊璇紙榪欓噷jar鍖呯殑鐗堟湰涔熸槸涓涓渶瑕佹牸澶栨敞鎰忕殑闂錛屽緢澶氭椂鍊欐販涔辯殑jar鍖呯増鏈細閫犳垚澶鐨勯夯鐑︼級銆?

NoClassDefFoundErr寮傚父涓鑸嚭鐜板湪鎴戜滑緙栬瘧鐜鍜岃繍琛岀幆澧冧笉涓鑷寸殑鎯呭喌涓嬶紝灝辨槸璇存垜浠湁鍙兘鍦ㄧ紪璇戣繃鍚庢洿鏀逛簡Classpath鎴栬卝ar鍖呮墍浠ュ鑷村湪榪愯鐨勮繃紼嬩腑JVM鎴栬匔lassLoader鏃犳硶鎵懼埌榪欎釜綾葷殑瀹氫箟錛堟垜鏇劇粡鍦ㄧ紪璇戝悗浣滀簡涓嬈ar鍖呯殑娓呯悊錛岀劧鍚庡簲鐢ㄥ氨閫佺粰浜嗘垜涓涓繖鏍風殑紺肩墿錛夈?/p>

鎴戜滑緇忓父鐢⊿DK寮鍙戝簲鐢紝寮鍙戠殑榪囩▼涓寮曞叆寰堝jar鍖咃紝鏈変簺SDK涔熶細璁懼畾鑷繁鐨凜lasspath銆傜紪璇戣繃紼嬬粨鏉熷悗鍦ㄨ繍琛岀殑榪囩▼涓氨瑕佸皢宸插紑鍙戠殑搴旂敤鍜屾墍鏈夊紩鍏ョ殑jar鍖呮嫹璐濆埌搴旂敤鏈嶅姟鍣ㄧ殑鐩稿簲鐩綍涓嬫墠鍙互榪愯錛岃屽簲鐢ㄦ湇鍔″櫒浣跨敤鐨凜lasspath涔熷緢鏈夊彲鑳戒笌SDK鐨勪笉鍚岋紝鍦ㄨ繖涓繃紼嬩腑灝辨湁寰堝ぇ鐨勫嚑鐜囬犳垚鍙屾柟鐜涓嶄竴鑷淬傛墍浠ュ緢澶氬紑鍙戣呭氨浼氶亣鍒板湪SDK涓彲浠ョ紪璇戯紝榪愯涔熸病鏈夐棶棰橈紝浣嗘槸鍚屾牱鐨勭▼搴忔斁鍒板簲鐢ㄦ湇鍔″櫒涓婂氨鍑虹幇NoClassDefFoundErr榪欎釜寮傚父榪欑鎯呭喌錛岃繖鏄鍒濆鑰呭緢鎸犲ご鐨勪竴涓棶棰樸?/p>

浠ヤ笂灝辨槸鎴戝榪欎袱涓紓甯哥殑涓鐐逛釜浜虹悊瑙o紝甯屾湜瀵瑰悇浣嶅紑鍙戣呮湁鎵甯姪錛屽彲浠ヨ鍚勪綅寮鍙戣呭湪浠ュ悗鐨勫紑鍙戣繃紼嬩腑鑳藉鏇村揩鐨勬壘鍒伴棶棰樻墍鍦ㄣ傜寮鍙戦『鍒?/p>

鏆楀綺劇伒 2007-03-03 18:23 鍙戣〃璇勮
]]>
java寮傚父澶勭悊http://m.tkk7.com/onejavaer/articles/101649.html鏆楀綺劇伒鏆楀綺劇伒Sat, 03 Mar 2007 10:14:00 GMThttp://m.tkk7.com/onejavaer/articles/101649.htmlhttp://m.tkk7.com/onejavaer/comments/101649.htmlhttp://m.tkk7.com/onejavaer/articles/101649.html#Feedback0http://m.tkk7.com/onejavaer/comments/commentRss/101649.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/101649.html 1 Java鐨勫紓甯告帶鍒舵満鍒?/font>

鎹曡幏閿欒鏈鐞嗘兂鐨勬槸鍦ㄧ紪璇戞湡錛屾渶濂藉湪璇曞浘榪愯紼嬪簭浠ュ墠銆傜劧鑰岋紝騫墮潪鎵鏈夐敊璇兘鑳藉湪緙栬瘧鏈熼棿渚︽祴鍒般傛湁浜涢棶棰樺繀欏誨湪榪愯鏈熼棿瑙e喅銆傝閿欒鐨勭紨緇撹呴氳繃涓瀹氱殑鏂規硶棰勫厛鍚戞帴鏀惰呬紶閫掍竴浜涢傚綋鐨勪俊鎭紝浣垮叾鐭ラ亾鍙兘鍙戠敓浠涔堟牱鐨勯敊璇互鍙婅濡備綍澶勭悊閬囧埌鐨勯棶棰橈紝榪欏氨鏄疛ava鐨勫紓甯告帶鍒舵満鍒躲?br />“寮傚父”錛圗xception錛夎繖涓瘝琛ㄨ揪鐨勬槸涓縐嶆甯告儏鍐典箣澶栫殑“寮傚父”銆傚湪闂鍙戠敓鐨勬椂鍊欙紝鎴戜滑鍙兘涓嶇煡鍏蜂綋璇ュ浣曡В鍐籌紝浣嗚偗瀹氱煡閬撳凡涓嶈兘涓嶉【涓鍒囧湴緇х畫涓嬪幓銆傛鏃訛紝蹇呴』鍧氬喅鍦板仠涓嬫潵錛屽茍鐢辨煇浜恒佹煇鍦版寚鍑哄彂鐢熶簡浠涔堜簨鎯咃紝浠ュ強璇ラ噰鍙栦綍縐嶅絳栥傚紓甯告満鍒剁殑鍙︿竴欏瑰ソ澶勫氨鏄兘澶熺畝鍖栭敊璇帶鍒朵唬鐮併傛垜浠啀涔熶笉鐢ㄦ鏌ヤ竴涓壒瀹氱殑閿欒錛岀劧鍚庡湪紼嬪簭鐨勫澶勫湴鏂瑰鍏惰繘琛屾帶鍒躲傛澶栵紝涔熶笉闇瑕佸湪鏂規硶璋冪敤鐨勬椂鍊欐鏌ラ敊璇紙鍥犱負淇濊瘉鏈変漢鑳芥崟鑾瘋繖閲岀殑閿欒錛夈傛垜浠彧闇瑕佸湪涓涓湴鏂瑰鐞嗛棶棰橈細“寮傚父鎺у埗妯″潡”鎴栬?#8220;寮傚父鎺у埗鍣?#8221;銆傝繖鏍峰彲鏈夋晥鍑忓皯浠g爜閲忥紝騫跺皢閭d簺鐢ㄤ簬鎻忚堪鍏蜂綋鎿嶄綔鐨勪唬鐮佷笌涓撻棬綰犳閿欒鐨勪唬鐮佸垎闅斿紑銆備竴鑸儏鍐典笅錛岀敤浜庤鍙栥佸啓鍏ヤ互鍙婅皟璇曠殑浠g爜浼氬彉寰楁洿瀵屾湁鏉$悊銆?br />鑻ユ煇涓柟娉曚駭鐢熶竴涓紓甯革紝蹇呴』淇濊瘉璇ュ紓甯歌兘琚崟鑾鳳紝騫惰幏寰楁紜寰呫侸ava鐨勫紓甯告帶鍒舵満鍒剁殑涓涓ソ澶勫氨鏄厑璁告垜浠湪涓涓湴鏂瑰皢綺懼姏闆嗕腑鍦ㄨ瑙e喅鐨勯棶棰樹笂錛岀劧鍚庡湪鍙︿竴涓湴鏂瑰寰呮潵鑷偅涓唬鐮佸唴閮ㄧ殑閿欒銆傞偅涓彲鑳藉彂鐢熷紓甯哥殑鍦版柟鍙仛“璀︽垝鍖?#8221;錛屽畠鏄竴涓鍙ュ潡錛屾垜浠湁蹇呰媧鵑仯璀︽帰鏃ュ鐩戣鐫銆傜敓鎴愮殑寮傚父蹇呴』鍦ㄦ煇涓湴鏂硅鎹曡幏鍜岃繘琛屽鐞嗭紝灝辮薄璀﹀療鎶撳埌瀚岀枒鐘悗瑕佸甫鍒拌緗插幓璇㈤棶銆傝繖涓湴鏂逛究鏄紓甯告帶鍒舵ā鍧椼?br />“璀︽垝鍖?#8221;鏄竴涓猼ry鍏抽敭瀛楀紑澶村悗闈㈢敤鑺辨嫭鍙鋒嫭璧鋒潵鐨勮鍙ュ潡錛屾垜浠妸瀹冨彨浣?#8220;try鍧?#8221;銆傚綋try鍧椾腑鏈夎鍙ュ彂鐢熷紓甯告椂灝辨幏鍑烘煇縐嶅紓甯哥被鐨勪竴涓璞°傚紓甯歌寮傚父鎺у埗鍣ㄦ崟鑾峰拰澶勭悊錛屽紓甯告帶鍒跺櫒绱ф帴鍦╰ry鍧楀悗闈紝涓旂敤catch鍏抽敭瀛楁爣璁幫紝鍥犳鍙仛“catch鍧?#8221;銆俢atch鍧楀彲浠ユ湁澶氫釜錛屾瘡涓涓敤鏉ュ鐞嗕竴涓浉搴旂殑寮傚父錛屽洜涓哄湪“璀︽垝鍖?#8221;鍐呭彲鑳藉彂鐢熺殑寮傚父縐嶇被涓嶆涓涓傛墍浠ワ紝寮傚父澶勭悊璇彞鐨勪竴鑸牸寮忔槸錛?br />try {
  // 鍙兘浜х敓寮傚父鐨勪唬鐮?br />  }
 catch (寮傚父瀵硅薄 e) {
   //寮傚父 e鐨勫鐞嗚鍙?br /> }catch (寮傚父瀵硅薄 e1) {
   //寮傚父 e鐨勫鐞嗚鍙?br /> }catch (寮傚父瀵硅薄 e2) {
   //寮傚父 e鐨勫鐞嗚鍙?br /> }

鍗充嬌涓嶄嬌鐢╰ry-catch緇撴瀯錛屽彂鐢熷紓甯告椂Java鐨勫紓甯告帶鍒舵満鍒朵篃浼氭崟鑾瘋寮傚父錛岃緭鍑哄紓甯哥殑鍚嶇О騫朵粠寮傚父鍙戠敓鐨勪綅緗墦鍗頒竴涓爢鏍堣窡韙傜劧鍚庣珛鍗崇粓姝㈢▼搴忕殑榪愯銆備笅闈㈢殑渚嬪瓙鍙戠敓浜嗕竴涓?#8220;闆墮櫎”寮傚父錛屽悗闈㈢殑hello娌℃湁琚墦鍗般?/font>

渚? 娌℃湁浣滃紓甯告帶鍒剁殑紼嬪簭銆?/font>

///
public
class Exception1 {
   
public static void
main(String args[]) {
   
int
b = 0;
   
int
a = 3 / b;
   
System.out.println( "Hello!"
);
 
}
}
///

杈撳嚭緇撴灉錛?br />java.lang.ArithmeticException: / by zero
at Exception1.main(Exception1.java:5)
Exception in thread "main" Exit code: 1
There were errors

浣嗘槸濡傛灉浣跨敤浜唗ry-catch鏉ュ鐞嗗紓甯革紝閭d箞鍦ㄦ墦鍗板嚭寮傚父淇℃伅鍚庯紝紼嬪簭榪樺皢緇х畫榪愯涓嬪幓銆備笅闈㈡槸澶勭悊浜嗙殑浠g爜銆?/font>

///
// Exception2.java

public
class Exception2 {
 
public static void
main(String args[]) {
   try
 

   
int b = 0;  
    int
a = 3 / b;
    }
   catch(ArithmeticException e) {
     e.printStackTrace
    }

   
System.out.println( "Hello!" );
 
}
}
///

杈撳嚭緇撴灉錛?br />Exception:
java.lang.ArithmeticException: / by zero
   at Exception2.main(Exception1.java:5)
Hello!

涓庡墠渚嬩笉鍚岀殑鏄紝Hello!琚緭鍑轟簡銆傝繖灝辨槸try-catch緇撴瀯鐨勭敤澶勶紝瀹冧嬌寮傚父鍙戠敓鍜屽鐞嗗悗紼嬪簭寰椾互“鎭㈠”鑰屼笉鏄?#8220;涓柇”銆?/font>

2 寮傚父綾匯佸紓甯歌鑼冨拰throw璇彞

涓轟簡浣垮紓甯告帶鍒舵満鍒舵洿鍑鴻壊鍦板彂鎸ュ畠鐨勫姛鏁堬紝Java璁捐鑰呭嚑涔庢墍浠ュ彲鑳藉彂鐢熺殑寮傚父錛岄鍒朵簡鍚勮壊鍚勬牱鐨勫紓甯哥被鍜岄敊璇被銆傚畠浠兘鏄粠“鍙幏鍑?#8221;綾籘hrowable緇ф壙鑰屾潵鐨勶紝瀹冩淳鐢熷嚭涓や釜綾籈rror鍜孍xception銆傜敱Error媧劇敓鐨勫瓙綾誨懡鍚嶄負XXXError錛屽叾涓瘝XXX鏄弿榪伴敊璇被鍨嬬殑璇嶃傜敱Exception媧劇敓鐨勫瓙綾誨懡鍚嶄負XXXException錛屽叾涓瘝XXX鏄弿榪板紓甯哥被鍨嬬殑璇嶃侲rror綾誨鐞嗙殑鏄繍琛屼嬌緋葷粺鍙戠敓鐨勫唴閮ㄩ敊璇紝鏄笉鍙仮澶嶇殑錛屽敮涓鐨勫姙娉曞彧瑕佺粓姝㈣繍琛岃繍琛岀▼搴忋傚洜姝わ紝瀹㈡埛紼嬪簭鍛樺彧瑕佹帉鎻″拰澶勭悊濂紼xception綾誨氨鍙互浜嗐?br />Exception綾繪槸涓鍒囧紓甯哥殑鏍廣傜幇鎴愮殑寮傚父綾婚潪甯鎬箣澶氾紝鎴戜滑涓嶅彲鑳戒篃娌℃湁蹇呰鍏ㄩ儴鎺屾彙瀹冦傚ソ鍦ㄥ紓甯哥被鐨勫懡鍚嶈鍒欏ぇ鑷存弿榪板嚭浜嗚綾葷殑鐢ㄩ旓紝鑰屽紓甯哥被鐨勬柟娉曞熀鏈槸涓鏍風殑銆備笅闈㈢粰鍑簂ang鍖呬腑澹版槑鐨勯儴鍒嗗紓甯哥被銆?/font>

RuntimeException            榪愯鏃跺紓甯?br />NullPointerException        鏁版嵁娌℃湁鍒濆鍖栧氨浣跨敤
IndexOutOfBoundsException   鏁扮粍鎴栧瓧絎︿覆绱㈠紩瓚婄晫
NoSuchFieldException        鏂囦歡鎵句笉鍒?br />NoSuchMethodException       鏂規硶娌℃湁瀹氫箟
ArithmeticException         闈炴硶綆楁湳榪愯

鍦ㄥ叾浠栧寘涓篃鏈夌浉鍏崇殑寮傚父綾伙紝渚嬪io鍖呬腑鏈塈OEception綾匯傚埄鐢ㄥ紓甯哥殑鍛藉悕瑙勫垯錛屼綘鍙互浣跨敤涓嬮潰鐨凞OS鍛戒護鍦ㄥ寘鎵鍦ㄧ殑鐩綍鏌ョ湅鏈変粈涔堝紓甯哥被鍙敤錛?br />    DIR *Eception.class 
瀵逛簬榪愯鏃跺紓甯窻untimeException錛屾垜浠病蹇呰涓撻棬涓哄畠鍐欎竴涓紓甯告帶鍒跺櫒錛屽洜涓哄畠浠槸鐢變簬緙栫▼涓嶄弗璋ㄨ岄犳垚鐨勯昏緫閿欒銆傚彧瑕佽鍑虹幇緇堟錛屽畠浼氳嚜鍔ㄥ緱鍒板鐞嗐傞渶瑕佺▼搴忓憳榪涜寮傚父澶勭悊鐨勬槸閭d簺闈炶繍琛屾湡寮傚父銆?br />Throwable鏈変笁涓熀鏈柟娉曪細

  • String getMessage()   鑾峰緱璇︾粏鐨勬秷鎭?

  • String toString()     榪斿洖瀵規湰綾葷殑涓孌電畝瑕佽鏄庯紝鍏朵腑鍖呮嫭璇︾粏鐨勬秷鎭紙濡傛灉鏈夌殑璇濓級銆?

  • void printStackTrace()  鎴?#160; void printStackTrace(PrintStream)
    鎵撳嵃鍑鴻皟鐢ㄥ爢鏍堣礬寰勩傝皟鐢ㄥ爢鏍堟樉紺哄嚭灝嗘垜浠甫鍒板紓甯稿彂鐢熷湴鐐圭殑鏂規硶璋冪敤鐨勯『搴忋?

鍥犱負Exception綾繪槸涓鍒囧紓甯哥殑鏍癸紝鎵浠ュ浠諱綍涓涓幇鏈夌殑寮傚父綾婚兘鍙互浣跨敤涓婅堪鏂規硶銆?

寮傚父瑙勮寖 鍜?/strong> throws

java搴撶▼搴忓憳涓轟簡浣垮鎴風▼搴忓憳鍑嗙‘鍦扮煡閬撹緙栧啓浠涔堜唬鐮佹潵鎹曡幏鎵鏈夋綔鍦ㄧ殑寮傚父錛岄噰鐢ㄤ竴縐嶅彨鍋歵hrows鐨勮娉曠粨鏋勩傚畠鐢ㄦ潵閫氱煡閭d簺瑕佽皟鐢ㄦ柟娉曠殑瀹㈡埛紼嬪簭鍛橈紝浠栦滑鍙兘浠庤嚜宸辯殑鏂規硶閲?#8220;鎺?#8221;鍑轟粈涔堟牱鐨勫紓甯搞傝繖渚挎槸鎵璋撶殑“寮傚父瑙勮寖”錛屽畠灞炰簬鏂規硶澹版槑鐨勪竴閮ㄥ垎錛屽嵆鍦ㄨ嚜鍙橀噺錛堝弬鏁幫級鍒楄〃鐨勫悗闈㈠姞涓妕hrows 寮傚父綾誨垪琛ㄣ備緥濡?br />    void f() throws tooBig, tooSmall, divZero { 鏂規硶浣搣
鑻ヤ嬌鐢ㄤ笅榪頒唬鐮侊細
    void f() [ // ...
瀹冩剰鍛崇潃涓嶄細浠庢柟娉曢噷“鎺?#8221;鍑哄紓甯革紙闄ょ被鍨嬩負RuntimeException鐨勫紓甯鎬互澶栵紝瀹冨彲鑳戒粠浠諱綍鍦版柟鎺峰嚭錛夈?br />濡傛灉涓涓柟娉曚嬌鐢ㄤ簡寮傚父瑙勮寖錛屾垜浠湪璋冪敤瀹冩椂蹇呴』浣跨敤try-catch緇撴瀯鏉ユ崟鑾峰拰澶勭悊寮傚父瑙勮寖鎵鎸囩ず鐨勫紓甯革紝鍚﹀垯緙栬瘧紼嬪簭浼氭姤閿欒屼笉鑳介氳繃緙栬瘧銆傝繖姝f槸Java鐨勫紓甯告帶鍒舵満鍒剁殑鏉板嚭璐$尞錛屽畠瀵瑰彲鑳藉彂鐢熺殑鎰忓鍙婃棭棰勯槻浠庤屽姞寮轟簡浠g爜鐨勫仴澹с?br />鍦ㄤ嬌鐢ㄤ簡寮傚父瑙勮寖鐨勬柟娉曞0鏄庝腑錛屽簱紼嬪簭鍛樹嬌鐢╰hrow璇彞鏉ユ幏鍑轟竴涓紓甯搞倀hrow璇彞鐨勬牸寮忎負錛?br />    thrownew XXXException();
鐢辨鍙錛宼hrow璇彞鎺峰嚭鐨勬槸XXX綾誨瀷鐨勫紓甯哥殑瀵硅薄錛堥殣寮忕殑鍙ユ焺錛夈傝宑atch鎺у埗鍣ㄦ崟鑾峰璞℃椂瑕佺粰鍑轟竴涓彞鏌?catch(XXXException e)銆?br />鎴戜滑涔熷彲浠ラ噰鍙?#8220;嬈洪獥鎵嬫”錛岀敤throw璇彞“鎺?#8221;鍑轟竴涓茍娌℃湁鍙戠敓鐨勫紓甯搞傜紪璇戝櫒鑳界悊瑙f垜浠殑瑕佹眰錛屽茍寮鴻揩浣跨敤榪欎釜鏂規硶鐨勭敤鎴峰綋浣滅湡鐨勪駭鐢熶簡閭d釜寮傚父澶勭悊銆傚湪瀹為檯搴旂敤涓紝鍙皢鍏朵綔涓洪偅涓紓甯哥殑涓涓?#8220;鍗犱綅絎?#8221;浣跨敤銆傝繖鏍蜂竴鏉ワ紝浠ュ悗鍙互鏂逛究鍦頒駭鐢熷疄闄呯殑寮傚父錛屾瘚闇淇敼鐜版湁鐨勪唬鐮併備笅闈㈡垜浠敤“嬈洪獥鎵嬫”緇欏嚭涓涓崟鑾峰紓甯哥殑紺轟緥紼嬪簭銆?/font>

渚? 鏈緥紼嬫紨紺哄紓甯哥被鐨勫父鐢ㄦ柟娉曘?/font>

///
public
class ExceptionMethods {
  publicstaticvoid main(String[] args) {
    try {
      thrownew Exception("Here's my Exception");
    } catch(Exception e) {
      System.out.println("Caught Exception");
      System.out.println(
        "e.getMessage(): " + e.getMessage());
      System.out.println(
        "e.toString(): " + e.toString());
      System.out.println("e.printStackTrace():");
      e.printStackTrace();
    }
  }
}
///

璇ョ▼搴忚緭鍑哄涓嬶細
Caught Exception
e.getMessage(): Here's my Exception
e.toString(): java.lang.Exception: Here's my Exception
e.printStackTrace():
java.lang.Exception: Here's my Exception
        at ExceptionMethods.main

鍦ㄤ竴涓猼ry鍖轟腑娼滃湪鐨勫紓甯稿彲鑳芥槸澶氱綾誨瀷鐨勶紝閭f椂鎴戜滑闇瑕佺敤澶氫釜catch鍧楁潵鎹曡幏鍜屽鐞嗚繖浜涘紓甯搞備絾寮傚父鍙戠敓鏃舵幏鍑轟簡鏌愮被寮傚父瀵硅薄錛孞ava渚濇閫愪釜媯鏌ヨ繖浜涘紓甯告帶鍒跺櫒錛屽彂鐜頒笌鎺峰嚭鐨勫紓甯哥被鍨嬪尮閰嶆椂灝辨墽琛岄偅浠ユ澶勭悊浠g爜錛岃屽叾浣欑殑涓嶄細琚墽琛屻備負浜嗛槻姝㈠彲鑳介仐婕忎簡鏌愪竴綾誨紓甯告帶鍒跺櫒錛屽彲浠ユ斁緗竴涓崟鑾稥xception綾葷殑鎺у埗鍣ㄣ侲xception鏄彲浠ヤ粠浠諱綍綾繪柟娉曚腑“鎺?#8221;鍑虹殑鍩烘湰綾誨瀷銆備絾鏄畠蹇呴』鏀懼湪鏈鍚庝竴涓綅緗紝鍥犱負瀹冭兘澶熸埅鑾蜂換浣曞紓甯革紝浠庤屼嬌鍚庨潰鍏蜂綋鐨勫紓甯告帶鍒跺櫒涓嶈搗浣滅敤銆備笅闈㈢殑紺轟緥璇存槑浜嗚繖涓鐐廣?/font>

渚? 鏈緥紼嬫紨紺哄涓紓甯告帶鍒跺櫒鐨勬帓鍒楁搴忕殑浣滅敤銆?/font>

///
public
class MutilCatch {
  private staticvoid test(int
i) {
    try
{
   
int
x = i;
   
if
(x>0)
     
throw new ArithmeticException ( "this is a Arithmetic Exception!"
);
   
else if
(x<0)
     
throw new NullPointerException ( "this is a NullPointer Exception!"
);
   
else
   
   throw new Exception( "this is a Exception!" );

   
} catch (ArithmeticException e) {
   
    
System.out.println(e.toString());
   
} catch
(NullPointerException e) {
   
    
System.out.println(e.toString());
   
} catch
(Exception e) {
   
    
System.out.println(e.toString());
   
}

  
}
  public
static void main(String[] args) {
   
test(-1); test(0); test(1);
 
}
 
}
///

榪愯緇撴灉錛?br />java.lang.NullPointerException: this is a NullPointer Exception!
java.lang.Exception: this is a Exception!
java.lang.ArithmeticException: this is a Arithmetic Exception!
濡傛灉浣犳妸鎹曡幏Exception鐨刢atch鏀懼湪鍓嶉潰錛岀紪璇戝氨閫氫笉榪囥?/font>


3 鐢╢inally娓呯悊

鎴戜滑緇忓父浼氶亣鍒拌繖鏍風殑鎯呭喌錛屾棤璁轟竴涓紓甯告槸鍚﹀彂鐢燂紝蹇呴』鎵ц鏌愪簺鐗瑰畾鐨勪唬鐮併傛瘮濡傛枃浠跺凡緇忔墦寮錛屽叧闂枃浠舵槸蹇呴』鐨勩備絾鏄紝鍦╰ry鍖哄唴浣嶄簬寮傚父鍙戠敓鐐逛互鍚庣殑浠g爜錛屽湪鍙戠敓寮傚父鍚庝笉浼氳鎵ц銆傚湪catch鍖轟腑鐨勪唬鐮佸湪寮傚父娌℃湁鍙戠敓鐨勬儏鍐典笅涓嶄細琚墽琛屻備負浜嗘棤璁哄紓甯告槸鍚﹀彂鐢熼兘瑕佹墽琛岀殑浠g爜錛屽彲鍦ㄦ墍鏈夊紓甯告帶鍒跺櫒鐨勬湯灝句嬌鐢ㄤ竴涓猣inally浠庡彞錛屽湪finally鍧椾腑鏀劇疆榪欎簺浠g爜銆傦紙浣嗗湪鎭㈠鍐呭瓨鏃朵竴鑸兘涓嶉渶瑕侊紝鍥犱負鍨冨溇鏀墮泦鍣ㄤ細鑷姩鐓ф枡涓鍒囥傦級鎵浠ュ畬鏁寸殑寮傚父鎺у埗緇撴瀯璞′笅闈㈣繖涓牱瀛愶細

try { 璀︽垝鍖哄煙 }
catch (A a1) { 鎺у埗鍣?A }
catch (B b1) { 鎺у埗鍣?B }
catch (C c1) { 鎺у埗鍣?C }
finally { 蹇呴』鎵ц鐨勪唬鐮亇

渚? 婕旂ずfinally浠庡彞鐨勭▼搴忋?

///
// FinallyWorks.java

// The finally clause is always executed
public class FinallyWorks {
  staticint count = 0;
  publicstaticvoid main(String[] args) {
    while(true) {
      try {
        // post-increment is zero first time:
        if(count++ == 0)
          thrownew Exception();
        System.out.println("No exception");
      } catch(Exception e) {
        System.out.println("Exception thrown");
      } finally {
        System.out.println("in finally clause");
        if(count == 2) break; // out of "while"
      }
    }
  }
}
///

榪愯緇撴灉錛?br />Exception thrown
in finally clause
No exception
in finally clause
涓寮濮媍ount=0鍙戠敓寮傚父錛岀劧鍚庤繘鍏inally鍧楋紱榪涘叆寰幆絎簩杞病鏈夊紓甯革紝浣嗗張鎵ц涓嬈inally鍧楋紝騫跺湪鍏朵腑璺沖嚭寰幆銆?br />涓嬮潰鎴戜滑緇欏嚭涓涓湁鐨勫疄鐢ㄤ絾杈冧負澶嶆潅涓鐐圭殑紼嬪簭銆傛垜浠垱寤轟簡涓涓狪nputFile鐨勭被銆傚畠鐨勪綔鐢ㄦ槸鎵撳紑涓涓枃浠訛紝鐒跺悗姣忔璇誨彇瀹冪殑涓琛屽唴瀹廣?/font>

渚? 璇繪枃鏈枃浠跺茍鏄劇ず鍒板睆騫曚笂銆?/font>

///
//: Cleanup.java

// Paying attention to exceptions in constructors
import java.io.*;

class InputFile {
  private BufferedReader in;
  InputFile(String fname) throws Exception {
    try {
      in = new BufferedReader(new FileReader(fname));
      // Other code that might throw exceptions
    } catch(FileNotFoundException e) {
      System.out.println("Could not open " + fname);
      // Wasn't open, so don't close it
      throw e;
    } catch(Exception e) {
      // All other exceptions must close it
      try {
        in.close();
      } catch(IOException e2) {
        System.out.println("in.close() unsuccessful");
      }
      throw e;
    } finally {
      // Don't close it here!!!
    }
  }
  String getLine() {
    String s;
    try {
      s = in.readLine();
    } catch(IOException e) {
      System.out.println("readLine() unsuccessful");
      s = "failed";
    }
    return s;
  }
  void cleanup() {
    try {
      in.close();
    } catch(IOException e2) {
      System.out.println("in.close() unsuccessful");
    }
  }
}
publicclass Cleanup {
  publicstaticvoid main(String[] args) {
    try {
      InputFile in = new InputFile("Cleanup.java");
      String s;
      int i = 1;
      while((s = in.getLine()) != null)
        System.out.println(""+ i++ + ": " + s);
      in.cleanup();
    } catch(Exception e) {
      System.out.println( "Caught in main, e.printStackTrace()");
      e.printStackTrace();
    }
  }
}
///

榪愯鍚庤緭鍑虹殑鍓?琛屾槸錛?br />1: //: Cleanup.java
2: // Paying attention to exceptions in constructors
3: import java.io.*;

綆瑕佽鏄?InputFile鐨勭被鍖呭惈涓涓瀯寤哄櫒鍜屼袱涓柟娉昪leanup鍜実etLine銆傛瀯寤哄櫒瑕佹墦寮涓涓枃浠秄name錛岄鍏堣鎹曡幏FileNotFoundException綾誨紓甯搞傚湪瀹冪殑澶勭悊浠g爜涓啀鎺峰嚭榪欎釜寮傚父(throw e;)銆傚湪鏇撮珮鐨勬帶鍒跺櫒涓瘯鍥懼叧闂枃浠訛紝騫舵崟鎹夊叧闂け璐ョ殑寮傚父IOException銆俢leanup()鍏抽棴鏂囦歡錛実etLine()璇繪枃浠剁殑涓琛屽埌瀛楃涓詫紝瀹冧滑閮界敤浜嗗紓甯稿鐞嗘満鍒躲侰leanup鏄富綾伙紝鍦╩ain()涓鍏堝垱寤轟竴涓狪nputFile綾誨璞★紝鍥犱負瀹冪殑鏋勫緩鍣ㄥ0鏄庢椂鐢ㄤ簡寮傚父瑙勮寖錛屾墍浠ュ繀欏葷敤try-catch緇撴瀯鏉ユ崟鑾峰紓甯搞?/font>

4 鍒涘緩鑷繁鐨勫紓甯哥被

铏界劧Java綾誨簱鎻愪緵浜嗗崄鍒嗕赴瀵岀殑寮傚父綾誨瀷錛岃兘澶熸弧瓚崇粷澶у鏁扮紪紼嬮渶瑕併備絾鏄紝鍦ㄥ紑鍙戣緝澶х殑紼嬪簭鏃訛紝涔熸湁鍙兘闇瑕佸緩绔嬭嚜宸辯殑寮傚父綾匯傝鍒涘緩鑷繁鐨勫紓甯哥被錛屽繀欏諱粠涓涓幇鏈夌殑寮傚父綾誨瀷緇ф壙鈥斺旀渶濂藉湪鍚箟涓婁笌鏂板紓甯歌繎浼箋傚垱寤轟竴涓紓甯哥浉褰撶畝鍗曪紝鍙鎸夊涓嬫牸寮忓啓涓や釜鏋勫緩鍣ㄥ氨琛岋細

class MyException extends Exception {
    public MyException() {}
    public MyException(String msg) {
    super(msg);
  }
}
榪欓噷鐨勫叧閿槸“extends Exception”錛屽畠鐨勬剰鎬濇槸錛氶櫎鍖呮嫭涓涓狤xception鐨勫叏閮ㄥ惈涔変互澶栵紝榪樻湁鏇村鐨勫惈涔夈傚鍔犵殑浠g爜鏁伴噺闈炲父灝戔斺斿疄闄呭彧娣誨姞浜嗕袱涓瀯寤哄櫒錛屽MyException鐨勫垱寤烘柟寮忚繘琛屼簡瀹氫箟銆傝璁頒綇錛屽亣濡傛垜浠笉鏄庣‘璋冪敤涓涓熀紜綾繪瀯寤哄櫒錛岀紪璇戝櫒浼氳嚜鍔ㄨ皟鐢ㄥ熀紜綾婚粯璁ゆ瀯寤哄櫒銆傚湪絎簩涓瀯寤哄櫒涓紝閫氳繃浣跨敤super鍏抽敭瀛楋紝鏄庣‘璋冪敤浜嗗甫鏈変竴涓猄tring鍙傛暟鐨勫熀紜綾繪瀯寤哄櫒銆?/font>

渚? 鏈緥紼嬫紨紺哄緩绔嬪拰搴旂敤鑷繁鐨勫紓甯哥被銆?/font>

///
//: Inheriting.java

// Inheriting your own exceptions
class MyException extends Exception {
  public MyException() {}
  public MyException(String msg) {
    super(msg);
  }
}
publicclass Inheriting {
  publicstaticvoid f() throws MyException {
    System.out.println(
      "Throwing MyException from f()");
    thrownew MyException();
  }
  publicstaticvoid g() throws MyException {
    System.out.println(
      "Throwing MyException from g()");
    thrownew MyException("Originated in g()");
  }
  publicstaticvoid main(String[] args) {
    try {
      f();
    } catch(MyException e) {
      e.printStackTrace();
    }
    try {
      g();
    } catch(MyException e) {
      e.printStackTrace();
    }
  }
}
/// 

杈撳嚭緇撴灉錛?br />Throwing MyException from f()
MyException
at Inheriting.f(Inheriting.java:14)
at Inheriting.main(Inheriting.java:22)
Throwing MyException from g()
MyException: Originated in g()
at Inheriting.g(Inheriting.java:18)
at Inheriting.main(Inheriting.java:27)

鍒涘緩鑷繁鐨勫紓甯告椂錛岃繕鍙互閲囧彇鏇村鐨勬搷浣溿傛垜浠彲娣誨姞棰濆鐨勬瀯寤哄櫒鍙婃垚鍛橈細

class MyException2 extends Exception {
  public MyException2() {}
  public MyException2(String msg) {
    super(msg);
  }
  public MyException2(String msg, int x) {
    super(msg);
    i = x;
  }
  public int val() { return i; }
  private int i;
}

鏈珷灝忕粨錛?/font>

  1. 搴旂敤寮傚父鎺у埗鏈哄埗榪涜寮傚父澶勭悊鐨勬牸寮忔槸
    try{瑕佺洃鎺х殑浠g爜} 
    catch(XXXException e) {寮傚父澶勭悊浠g爜} 
    finally {蹇呴』鎵ц鐨勪唬鐮亇 
  2. 涓嶇煡閬撴湁浠涔堝紓甯哥被濂界敤鏃跺彲鏌ラ槄鐩稿叧鍖呬腑鏈夊摢浜沊XXException.class鏂囦歡銆傝岀敤Exception鍙崟鑾蜂換浣曞紓甯搞?#160;
  3. 鍦ㄦ柟娉曞0鏄庝腑浣跨敤浜唗hrows鍏抽敭瀛楃殑蹇呴』榪涜寮傚父鎺у埗錛屽惁鍒欎細鎶ョ紪璇戦敊璇?#160;
  4. 涔熷彲浠ュ垱寤鴻嚜宸辯殑寮傚父綾匯?/font>


]]>
java.util.Properties綾?/title><link>http://m.tkk7.com/onejavaer/articles/101628.html</link><dc:creator>鏆楀綺劇伒</dc:creator><author>鏆楀綺劇伒</author><pubDate>Sat, 03 Mar 2007 08:18:00 GMT</pubDate><guid>http://m.tkk7.com/onejavaer/articles/101628.html</guid><wfw:comment>http://m.tkk7.com/onejavaer/comments/101628.html</wfw:comment><comments>http://m.tkk7.com/onejavaer/articles/101628.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/onejavaer/comments/commentRss/101628.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/onejavaer/services/trackbacks/101628.html</trackback:ping><description><![CDATA[ <p>Properties 綾誨凡涓嶆槸鏂頒笢瑗夸簡錛屽畠鍦?Java 緙栫▼鐨勬棭鏈熷氨鏈変簡錛屽茍涓斿嚑涔庢病鏈変粈涔堝彉鍖栥侸2SE 鐨?Tiger 鐗堟湰澧炲己浜嗚繖涓被錛屼笉浠呭彲浠ョ敤瀹冨湪鍗曠嫭涓琛屼腑鎸囧畾鐢ㄧ瓑鍙峰垎闅旂殑澶氫釜閿?鍊煎錛岃繕鍙互鐢╔ML 鏂囦歡瑁呰澆鍜屼繚瀛樿繖浜涢敭-鍊煎銆傚湪 椹湇 Tiger鐨勮繖涓鏈熸枃绔犱腑錛孞ohn Zukowski 灞曠ず浜嗗浣曢┚椹繖鍖規柊涓浠g殑“褰歸┈”銆傝鍦ㄦ湰鏂囧搴旂殑璁ㄨ璁哄潧涓婁笌浣滆呭強鍏朵粬璇昏呭垎浜偍瀵規湰鏂囩殑鎯蟲硶錛堟偍涔熷彲浠ュ崟鍑繪枃绔犻《閮ㄦ垨搴曢儴鐨?璁ㄨ鏉ヨ闂璁哄潧錛夈?</p> <p>      J2SE 1.5 浠ュ墠鐨勭増鏈姹傜洿鎺ヤ嬌鐢?XML 瑙f瀽鍣ㄦ潵瑁呰澆閰嶇疆鏂囦歡騫跺瓨鍌ㄨ緗傝櫧鐒惰繖騫墮潪鏄竴浠跺洶闅劇殑浜嬫儏錛屽茍涓旇В鏋愬櫒鏄鉤鍙扮殑鏍囧噯閮ㄥ垎錛屼絾鏄澶栫殑宸ヤ綔鎬繪槸鏈夌偣璁╀漢鐑︺傛渶榪戞洿鏂扮殑 java.util.Properties 綾葷幇鍦ㄦ彁渚涗簡涓縐嶄負紼嬪簭瑁呰澆鍜屽瓨鍌ㄨ緗殑鏇村鏄撶殑鏂規硶錛?loadFromXML(InputStream is) 鍜?storeToXML(OutputStream os, String comment) 鏂規硶銆?</p> <p>Properties 鍩烘湰鐭ヨ瘑<br />濡傛灉涓嶇啛鎮?java.util.Properties 綾伙紝閭d箞鐜板湪鍛婅瘔鎮ㄥ畠鏄敤鏉ュ湪涓涓枃浠朵腑瀛樺偍閿?鍊煎鐨勶紝鍏朵腑閿拰鍊兼槸鐢ㄧ瓑鍙峰垎闅旂殑錛屽娓呭崟 1 鎵紺恒?</p> <p>娓呭崟 1. 涓緇勫睘鎬хず渚?/p> <p>foo=bar<br />fu=baz</p> <p> </p> <p> <br />灝嗘竻鍗?1 瑁呰澆鍒?Properties 瀵硅薄涓悗錛屾偍灝卞彲浠ユ壘鍒頒袱涓敭錛?foo 鍜?fu 錛夊拰涓や釜鍊鹼紙 foo 鐨?bar 鍜?fu 鐨?baz 錛変簡銆傝繖涓被鏀寔甯?\u 鐨勫祵鍏?Unicode 瀛楃涓詫紝浣嗘槸榪欓噷閲嶈鐨勬槸姣忎竴欏瑰唴瀹歸兘褰撲綔 String 銆?</p> <p>娓呭崟 2 鏄劇ず浜嗗浣曡杞藉睘鎬ф枃浠跺茍鍒楀嚭瀹冨綋鍓嶇殑涓緇勯敭鍜屽箋傚彧闇浼犻掕繖涓枃浠剁殑 InputStream 緇?load() 鏂規硶錛屽氨浼氬皢姣忎竴涓敭-鍊煎娣誨姞鍒?Properties 瀹炰緥涓傜劧鍚庣敤 list() 鍒楀嚭鎵鏈夊睘鎬ф垨鑰呯敤 getProperty() 鑾峰彇鍗曠嫭鐨勫睘鎬с?</p> <p>娓呭崟 2. 瑁呰澆灞炴?/p> <p>import java.util.*;<br />import java.io.*;</p> <p>public class LoadSample {<br />  public static void main(String args[]) throws Exception {<br />    Properties prop = new Properties();<br />    FileInputStream fis = <br />      new FileInputStream("sample.properties");<br />    prop.load(fis);<br />    prop.list(System.out);<br />    System.out.println("\nThe foo property: " +<br />        prop.getProperty("foo"));<br />  }<br />}</p> <p> </p> <p> <br />榪愯 LoadSample 紼嬪簭鐢熸垚濡傛竻鍗?3 鎵紺虹殑杈撳嚭銆傛敞鎰?list() 鏂規硶鐨勮緭鍑轟腑閿?鍊煎鐨勯『搴忎笌瀹冧滑鍦ㄨ緭鍏ユ枃浠朵腑鐨勯『搴忎笉涓鏍楓?Properties 綾誨湪涓涓暎鍒楄〃錛坔ashtable錛屼簨瀹炰笂鏄竴涓?Hashtable 瀛愮被錛変腑鍌ㄥ瓨涓緇勯敭-鍊煎錛屾墍浠ヤ笉鑳戒繚璇侀『搴忋?</p> <p>娓呭崟 3. LoadSample 鐨勮緭鍑?/p> <p>-- listing properties --<br />fu=baz<br />foo=bar</p> <p>The foo property: bar</p> <p> </p> <p> <br />XML 灞炴ф枃浠?br />榪欓噷娌℃湁浠涔堟柊鍐呭銆?Properties 綾繪繪槸榪欐牱宸ヤ綔鐨勩備笉榪囷紝鏂扮殑鍦版柟鏄粠涓涓?XML 鏂囦歡涓杞戒竴緇勫睘鎬с傚畠鐨?DTD 濡傛竻鍗?4 鎵紺恒?</p> <p>娓呭崟 4. 灞炴?DTD</p> <p><?xml version="1.0" encoding="UTF-8"?><br /><!-- DTD for properties --><br /><!ELEMENT properties ( comment?, entry* ) ><br /><!ATTLIST properties version CDATA #FIXED "1.0"><br /><!ELEMENT comment (#PCDATA) ><br /><!ELEMENT entry (#PCDATA) ><br /><!ATTLIST entry key CDATA #REQUIRED></p> <p> </p> <p> <br />濡傛灉涓嶆兂緇嗚 XML DTD錛岄偅涔堝彲浠ュ憡璇夋偍瀹冨叾瀹炲氨鏄鍦ㄥ鍥?<properties> 鏍囩涓寘瑁呯殑鏄竴涓?<comment> 鏍囩錛屽悗闈㈡槸浠繪剰鏁伴噺鐨?<entry> 鏍囩銆傚姣忎竴涓?<entry> 鏍囩錛屾湁涓涓敭灞炴э紝杈撳叆鐨勫唴瀹瑰氨鏄畠鐨勫箋傛竻鍗?5 鏄劇ず浜?娓呭崟 1涓殑灞炴ф枃浠剁殑 XML 鐗堟湰鏄粈涔堟牱瀛愮殑銆?</p> <p>娓呭崟 5. XML 鐗堟湰鐨勫睘鎬ф枃浠?/p> <p><?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE properties SYSTEM "<a ><br /><properties><br /><comment>Hi</comment><br /><entry key="foo">bar</entry><br /><entry key="fu">baz</entry><br /></properties></p> <p> </p> <p> <br />濡傛灉娓呭崟 6 鎵紺猴紝璇誨彇 XML 鐗堟湰鐨?Properties 鏂囦歡涓庤鍙栬佹牸寮忕殑鏂囦歡娌′粈涔堜笉鍚屻?</p> <p>娓呭崟 6. 璇誨彇 XML Properties 鏂囦歡</p> <p>import java.util.*;<br />import java.io.*;</p> <p>public class LoadSampleXML {<br />  public static void main(String args[]) throws Exception {<br />    Properties prop = new Properties();<br />    FileInputStream fis =<br />      new FileInputStream("sampleprops.xml");<br />    prop.loadFromXML(fis);<br />    prop.list(System.out);<br />    System.out.println("\nThe foo property: " +<br />        prop.getProperty("foo"));<br />  }<br />}</p> <p> </p> <p> <br />鍏充簬璧勬簮緇戝畾鐨勮鏄?br />铏界劧 java.util.Properties 綾葷幇鍦ㄩ櫎浜嗘敮鎸侀敭-鍊煎錛岃繕鏀寔灞炴ф枃浠朵綔涓?XML 鏂囦歡錛屼笉騫哥殑鏄紝娌℃湁鍐呯疆鐨勯夐」鍙互灝?ResourceBundle 浣滀負涓涓?XML 鏂囦歡澶勭悊銆傛槸鐨勶紝 PropertyResourceBundle 涓嶄嬌鐢?Properties 瀵硅薄鏉ヨ杞界粦瀹氾紝涓嶈繃瑁呰澆鏂規硶鐨勪嬌鐢ㄦ槸紜紪鐮佸埌綾諱腑鐨勶紝鑰屼笉浣跨敤杈冩柊鐨?loadFromXML() 鏂規硶銆?</p> <p> <br />榪愯娓呭崟 6 涓殑紼嬪簭浜х敓涓庡師鏉ョ殑紼嬪簭鐩稿悓鐨勮緭鍑猴紝濡?娓呭崟 2鎵紺恒?</p> <p>淇濆瓨 XML 灞炴?br />鏂扮殑 Properties 榪樻湁涓涓姛鑳芥槸灝嗗睘鎬у瓨鍌ㄥ埌 XML 鏍煎紡鐨勬枃浠朵腑銆傝櫧鐒?store() 鏂規硶浠嶇劧浼氬垱寤轟竴涓被浼?娓呭崟 1 鎵紺虹殑鏂囦歡錛屼絾鏄幇鍦ㄥ彲浠ョ敤鏂扮殑 storeToXML() 鏂規硶鍒涘緩濡?娓呭崟 5 鎵紺虹殑鏂囦歡銆傚彧瑕佷紶閫掍竴涓?OutputStream 鍜屼竴涓敤浜庢敞閲婄殑 String 灝卞彲浠ヤ簡銆傛竻鍗?7 灞曠ず浜嗘柊鐨?storeToXML() 鏂規硶銆?</p> <p>娓呭崟 7. 灝?Properties 瀛樺偍涓?XML 鏂囦歡</p> <p>import java.util.*;<br />import java.io.*;</p> <p>public class StoreXML {<br />  public static void main(String args[]) throws Exception {<br />    Properties prop = new Properties();<br />    prop.setProperty("one-two", "buckle my shoe");<br />    prop.setProperty("three-four", "shut the door");<br />    prop.setProperty("five-six", "pick up sticks");<br />    prop.setProperty("seven-eight", "lay them straight");<br />    prop.setProperty("nine-ten", "a big, fat hen");<br />    FileOutputStream fos =<br />      new FileOutputStream("rhyme.xml");<br />    prop.storeToXML(fos, "Rhyme");<br />    fos.close();<br />  }<br />}</p> <p> </p> <p> <br />榪愯娓呭崟 7 涓殑紼嬪簭浜х敓鐨勮緭鍑哄娓呭崟 8 鎵紺恒?/p> <p>娓呭崟 8. 瀛樺偍鐨?XML 鏂囦歡</p> <p><?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE properties SYSTEM "<a ><br /><properties><br /><comment>Rhyme</comment><br /><entry key="seven-eight">lay them straight</entry><br /><entry key="five-six">pick up sticks</entry><br /><entry key="nine-ten">a big, fat hen</entry><br /><entry key="three-four">shut the door</entry><br /><entry key="one-two">buckle my shoe</entry><br /></properties></p> <p> </p> <p> <br />緇撴潫璇?br />浣跨敤 XML 鏂囦歡榪樻槸浣跨敤鑰佸紡鐨?a=b 綾誨瀷鐨勬枃浠跺畬鍏ㄥ彇鍐充簬鎮ㄨ嚜宸便傝佸紡鏂囦歡浠庡唴瀛樼殑瑙掑害鐪嬭偗瀹氭槸杞婚噺綰х殑銆備笉榪囷紝鐢變簬 XML 鐨勬櫘閬嶄嬌鐢紝浜轟滑浼氭湡鏈?XML 鏍煎紡嫻佽璧鋒潵錛屽洜涓哄畠宸茬粡琚箍娉涗嬌鐢ㄤ簡錛屽彧涓嶈繃娌℃湁鐢ㄥ埌 Properties 瀵硅薄銆傞夋嫨瀹屽叏鍦ㄦ偍銆傚垎鏋愯蔣浠跺寘 private XMLUtils 綾葷殑婧愪唬鐮佷互鑾峰緱鍏充簬鎵浣跨敤鐨?XML 瑙f瀽鐨勬洿澶氫俊鎭?/p> <p> </p> <p> </p> <p> </p> <p>PTest.java<br />import java.io.FileInputStream;<br />import java.io.IOException;<br />import java.io.InputStream;<br />import java.util.Properties;<br />/**<br /> * 瀹炵幇properties鏂囦歡鐨勮鍙?br /> * @author bbflyerwww<br /> * @date 2006-08-02<br /> */<br />public class PTest {<br />    public static void main(String[] args) {<br />        try {<br />            long start = System.currentTimeMillis();<br />            InputStream is = new FileInputStream("conf.properties");<br />            Properties p = new Properties();<br />            p.load(is);<br />            is.close();<br />            System.out.println("SIZE : " + p.size());<br />            System.out.println("homepage : " + p.getProperty("homepage"));<br />            System.out.println("author : " + p.getProperty("author"));<br />            System.out.println("school : " + p.getProperty("school"));<br />            System.out.println("date : " + p.getProperty("date"));<br />            long end = System.currentTimeMillis(); <br />            System.out.println("Cost : " + (end - start));<br />        } catch (IOException ioe) {<br />            ioe.printStackTrace();<br />        }<br />    }<br />}</p> <img src ="http://m.tkk7.com/onejavaer/aggbug/101628.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/onejavaer/" target="_blank">鏆楀綺劇伒</a> 2007-03-03 16:18 <a href="http://m.tkk7.com/onejavaer/articles/101628.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hibernate浜岀駭緙撳瓨http://m.tkk7.com/onejavaer/articles/101587.html鏆楀綺劇伒鏆楀綺劇伒Sat, 03 Mar 2007 02:16:00 GMThttp://m.tkk7.com/onejavaer/articles/101587.htmlhttp://m.tkk7.com/onejavaer/comments/101587.htmlhttp://m.tkk7.com/onejavaer/articles/101587.html#Feedback0http://m.tkk7.com/onejavaer/comments/commentRss/101587.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/101587.html2銆備竴綰х紦瀛樻寔涔呭寲鐨勬槸OID鍞竴鐨勫璞★紝鎵浠ヤ笉浼氬瓨鍦ㄥ茍鍙戣闂殑闂銆備簩綰х紦瀛樺瓨鍦ㄥ茍鍙戣闂棶棰樸傛墍浠ヤ簩綰х紦瀛樻牴鎹闂拰淇敼鐨勯鐜囦互鍙婃槸鍚﹂泦緹ゅ垎涓?涓瓑綰с傛諱綋涓婅錛屼竴綰х紦瀛樹繚瀛樺湪鍐呭瓨涓紝浜岀駭鍙互淇濆瓨鍦ㄥ唴瀛樻垨紜洏涓紝涓烘暎鍒椾繚瀛樸?br />3銆備竴綰х紦瀛樹負蹇呴』鐨勶紝浜岀駭涓哄彲鎻掑叆鐨勭紦瀛橈紝鍏跺姛鑳戒負絎笁鏂規彁渚涖?br />4銆備簩綰х紦瀛樹繚瀛樼殑涓哄緢灝戜慨鏀圭殑瀵硅薄錛屽洜涓轟細瀛樺湪騫跺彂璁塊棶闂錛屾墍浠ュ敖閲忓噺灝戝鍏戠幇鐨勪慨鏀規搷浣滐紝鍑忓皯鍐欏叆鐨勮剰鏁版嵁銆?br />5銆備竴綰х紦瀛樹負session鍏ㄧ▼瀛樺湪錛屼簩綰х紦瀛樺彲浠ヨ瀹氳繃鏈熸椂闂淬?br />6銆傞渶瑕佸湪hibernate.cfg.xml涓瀹氫嬌鐢ㄤ簩綰х紦瀛樸傝繕闇瑕佸湪鎸囧畾鐨勬槧灝勬枃浠朵腑錛岃瀹氶渶瑕佽緙撳瓨鐨勫疄浣撳璞°?br />7銆傚亣濡傛槧灝勬枃浠跺璞℃墍瀵瑰簲鐨勫睘鎬т負set綾誨瀷錛岃繕闇瑕佸啀嬈℃寚鏄庤緙撳瓨錛岃繖鏍峰彧浼氫嬌set綾誨瀷鐨勫睘鎬т篃灝辨槸getItems()鍙栧嚭鐨勮緙撳瓨銆傝屽叾鎵瀵瑰簲鐨勫疄浣撳茍鏈緙撳瓨錛屽闇瑕侊紝闇瑕佸湪xml涓寚鏄庛?

]]>
Java鎬ц兘鐨勪紭鍖?/title><link>http://m.tkk7.com/onejavaer/articles/101545.html</link><dc:creator>鏆楀綺劇伒</dc:creator><author>鏆楀綺劇伒</author><pubDate>Fri, 02 Mar 2007 13:46:00 GMT</pubDate><guid>http://m.tkk7.com/onejavaer/articles/101545.html</guid><wfw:comment>http://m.tkk7.com/onejavaer/comments/101545.html</wfw:comment><comments>http://m.tkk7.com/onejavaer/articles/101545.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/onejavaer/comments/commentRss/101545.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/onejavaer/services/trackbacks/101545.html</trackback:ping><description><![CDATA[ <p style="FONT-WEIGHT: bold; FONT-SIZE: 26px">Java鎬ц兘鐨勪紭鍖栵紙涓婏級</p> <hr style="COLOR: #000000; HEIGHT: 1px" /> <p> </p> <div style="FONT-SIZE: 12px">榛勪紵宄?<br /><br /><br /><br /><br />Java鍦ㄤ節鍗佸勾浠d腑鏈熷嚭鐜頒互鍚庯紝鍦ㄨ耽寰楄禐鍙圭殑鍚屾椂錛屼篃寮曟潵浜嗕竴浜涙壒璇勩傝耽寰楃殑璧炲徆涓昏鏄疛ava鐨勮法騫沖彴鐨勬搷浣滄э紝鍗蟲墍璋撶殑”Write Once,Run Anywhere”.浣嗙敱浜嶫ava鐨勬ц兘鍜岃繍琛屾晥鐜囧悓C鐩告瘮錛屼粛鐒舵湁寰堝ぇ鐨勫樊璺濓紝浠庤屽紩鏉ヤ簡寰堝鐨勬壒璇勩?<br />瀵逛簬鏈嶅姟鍣ㄧ鐨勫簲鐢ㄧ▼搴忥紝鐢變簬涓嶅ぇ娑夊強鍒扮晫闈㈣璁″拰紼嬪簭鐨勯綣侀噸鍚紝Java鐨勬ц兘闂鐪嬩技涓嶅ぇ鏄庢樉錛屼粠鑰屼竴浜汮ava鐨勬妧鏈紝濡侸SP,Se rvlet,EJB絳夊湪鏈嶅姟鍣ㄧ緙栫▼鏂歸潰寰楀埌浜嗗緢澶х殑搴旂敤錛屼絾瀹為檯涓婏紝Java鐨勬ц兘闂鍦ㄦ湇鍔″櫒绔緷鐒跺瓨鍦ㄣ備笅闈㈡垜灝嗗垎鍥涗釜鏂歸潰鏉ヨ璁篔ava鐨勬ц兘鍜屾墽琛屾晥鐜囦互鍙婃彁楂楯 ava鎬ц兘鐨勪竴浜涙柟娉曘?<br />涓錛庡叧浜庢ц兘鐨勫熀鏈煡璇?<br />1錛庢ц兘鐨勫畾涔?<br />鍦ㄦ垜浠璁烘庢牱鎻愰珮Java鐨勬ц兘涔嬪墠錛屾垜浠渶瑕佹槑鐧?#8220;鎬ц兘“鐨勭湡姝e惈涔夈傛垜浠竴鑸畾涔夊涓嬩簲涓柟闈綔涓鴻瘎鍒ゆц兘鐨勬爣鍑嗐?<br />1錛?榪愮畻鐨勬ц兘----鍝竴涓畻娉曠殑鎵ц鎬ц兘鏈濂?<br />2錛?鍐呭瓨鐨勫垎閰?---紼嬪簭闇瑕佸垎閰嶅灝戝唴瀛橈紝榪愯鏃剁殑鏁堢巼鍜屾ц兘鏈楂樸?<br />3錛?鍚姩鐨勬椂闂?---紼嬪簭鍚姩闇瑕佸灝戞椂闂淬?<br />4錛?紼嬪簭鐨勫彲浼哥緝鎬?----紼嬪簭鍦ㄧ敤鎴瘋礋杞借繃閲嶇殑鎯呭喌涓嬬殑琛ㄧ幇銆?<br />5錛?鎬ц兘鐨勮璇?-----鐢ㄦ埛鎬庢牱鎵嶈兘璁よ瘑鍒扮▼搴忕殑鎬ц兘銆?<br />瀵逛簬涓嶅悓鐨勫簲鐢ㄧ▼搴忥紝瀵規ц兘鐨勮姹備篃涓嶅悓銆備緥濡傦紝澶ч儴鍒嗙殑搴旂敤紼嬪簭鍦ㄥ惎鍔ㄦ椂闇瑕佽緝闀跨殑鏃墮棿錛屼粠鑰屽鍚姩鏃墮棿鐨勮姹傛湁鎵闄嶄綆錛涙湇鍔″櫒绔殑搴旂敤紼嬪簭閫氬父閮藉垎閰嶆湁杈冨ぇ鐨勫唴瀛樼┖闂達紝鎵浠ュ鍐呭瓨鐨勮姹備篃鏈夋墍闄嶄綆銆備絾鏄紝榪欏茍涓嶆槸鎵榪欎袱鏂歸潰鐨勬ц兘鍙互琚拷鐣ャ傚叾嬈★紝綆楁硶鐨勬ц兘瀵逛簬閭d簺鎶婂晢鍔¢昏緫榪愮敤鍒頒簨鍔℃ф搷浣滅殑搴旂敤紼嬪簭鏉ヨ闈炲父閲嶈銆傛葷殑鏉ヨ錛屽搴旂敤紼嬪簭鐨勮姹傚皢鍐沖畾瀵瑰悇涓ц兘鐨勪紭鍏堢駭銆?<br />2錛庢庢牱鎵嶈兘鎻愰珮JAVA鐨勬ц兘 <br />鎻愰珮JAVA鐨勬ц兘錛屼竴鑸冭檻濡備笅鐨勫洓涓富瑕佹柟闈細 <br />錛?錛?紼嬪簭璁捐鐨勬柟娉曞拰妯″紡 <br />涓涓壇濂界殑璁捐鑳芥彁楂樼▼搴忕殑鎬ц兘錛岃繖涓鐐逛笉浠呴傜敤浜嶫AVA錛屼篃閫傜敤涔熶換浣曠殑緙栫▼璇█銆傚洜涓哄畠鍏呭垎鍒╃敤浜嗗悇縐嶈祫婧愶紝濡傚唴瀛橈紝CPU,楂橀熺紦瀛橈紝瀵硅薄緙撳啿姹犲強澶氱嚎紼嬶紝浠庤岃璁″嚭楂樻ц兘鍜屽彲浼哥緝鎬у己鐨勭郴緇熴?<br />褰撶劧錛屼負浜嗘彁楂樼▼搴忕殑鎬ц兘鑰屾敼鍙樺師鏉ョ殑璁捐鏄瘮杈冨洶闅劇殑錛屼絾鏄紝紼嬪簭鎬ц兘鐨勯噸瑕佹у父甯歌楂樹簬璁捐涓婂甫鏉ョ殑鍙樺寲銆傚洜姝わ紝鍦ㄧ紪紼嬪紑濮嬩箣鍓嶅氨搴旇鏈変竴涓ソ鐨勮璁℃ā鍨嬪拰鏂規硶銆?<br />錛?錛?JAVA甯冪講鐨勭幆澧冦?<br />JAVA甯冪講鐨勭幆澧冨氨鏄寚鐢ㄦ潵瑙i噴鍜屾墽琛孞AVA瀛楄妭鐮佺殑鎶鏈紝涓鑸湁濡備笅浜旂銆傚嵆瑙i噴鎸囦護鎶鏈?Interpreter Technology)錛屽強鏃剁紪璇戠殑鎶鏈?Just In Time Compilier Technology), 閫傚簲鎬т紭鍖栨妧鏈紙Adaptive Optimization Technology錛? 鍔ㄦ佷紭鍖栵紝鎻愬墠緙栬瘧涓烘満鍣ㄧ爜鐨勬妧鏈紙Dynamic Optimization,Ahead Of Time Technology錛夊拰緙栬瘧涓烘満鍣ㄧ爜鐨勬妧鏈紙Translator Technology錛? <br />榪欎簺鎶鏈竴鑸兘閫氳繃浼樺寲綰跨▼妯″瀷錛岃皟鏁村爢鍜屾爤鐨勫ぇ灝忔潵浼樺寲JAVA鐨勬ц兘銆傚湪鑰冭檻鎻愰珮JAVA鐨勬ц兘鏃訛紝棣栧厛瑕佹壘鍒板獎鍝岼AVA鎬ц兘鐨勭摱棰堬紙B ottleNecks錛夛紝鍦ㄧ‘璁や簡璁捐鐨勫悎鐞嗘у悗錛屽簲璇ヨ皟鏁碕AVA甯冪講鐨勭幆澧冿紝閫氳繃鏀瑰彉涓浜涘弬鏁版潵鎻愰珮JAVA搴旂敤紼嬪簭鐨勬ц兘銆傚叿浣撳唴瀹硅絎簩鑺傘?<br />錛?錛?JAVA搴旂敤紼嬪簭鐨勫疄鐜?<br />褰撹璁哄簲鐢ㄧ▼搴忕殑鎬ц兘闂鏃訛紝澶у鏁扮殑紼嬪簭鍛橀兘浼氳冭檻紼嬪簭鐨勪唬鐮侊紝榪欏綋鐒舵槸瀵圭殑錛屽綋鏇撮噸瑕佺殑鏄鎵懼埌褰卞搷紼嬪簭鎬ц兘鐨勭摱棰堜唬鐮併備負浜嗘壘鍒拌繖浜涚摱棰堜唬鐮侊紝鎴戜滑涓鑸細浣跨敤涓浜涜緟鍔╃殑宸ュ叿錛屽J probe,Optimizit,Vtune浠ュ強涓浜涘垎鏋愮殑宸ュ叿濡俆owerJ Performance絳夈傝繖浜涜緟鍔╃殑宸ュ叿鑳借窡韙簲鐢ㄧ▼搴忎腑鎵ц姣忎釜鍑芥暟鎴栨柟娉曟墍娑堣楁帀鐨勬椂闂達紝浠庤屾敼鍠勭▼搴忕殑鎬ц兘銆?<br />(4) 紜歡鍜屾搷浣滅郴緇?<br />涓轟簡鎻愰珮JAVA搴旂敤紼嬪簭鐨勬ц兘錛岃岄噰鐢ㄨ窡蹇殑CPU鍜屾洿澶氱殑鍐呭瓨錛屽茍璁や負榪欐槸鎻愰珮紼嬪簭鎬ц兘鐨勫敮涓鏂規硶錛屼絾浜嬪疄騫墮潪濡傛銆傚疄璺電粡楠屽拰浜嬪疄璇佹槑錛屽彧鏈夐伃鍒頒簡搴旂敤紼嬪簭鎬ц兘鐨勭摱棰堬紝浠庤岄噰鍙栭傚綋寰楁柟娉曪紝濡傝璁℃ā寮忥紝甯冪講鐨勭幆澧冿紝鎿嶄綔緋葷粺鐨勮皟鏁達紝鎵嶆槸鏈鏈夋晥鐨勩?<br />3錛庣▼搴忎腑閫氬父鐨勬ц兘鐡墮銆?<br />鎵鏈夌殑搴旂敤紼嬪簭閮藉瓨鍦ㄦц兘鐡墮錛屼負浜嗘彁楂樺簲鐢ㄧ▼搴忕殑鎬ц兘錛屽氨瑕佸敖鍙兘鐨勫噺灝戠▼搴忕殑鐡墮銆備互涓嬫槸鍦↗AVA紼嬪簭涓粡甯稿瓨鍦ㄧ殑鎬ц兘鐡墮銆?<br /><br /><br />浜嗚В浜嗚繖浜涚摱棰堝悗錛屽氨鍙互鏈夐拡瀵規х殑鍑忓皯榪欎簺鐡墮錛屼粠鑰屾彁楂楯AVA搴旂敤紼嬪簭鐨勬ц兘 <br />4. 鎻愰珮JAVA紼嬪簭鎬ц兘鐨勬楠?<br />涓轟簡鎻愰珮JAVA紼嬪簭鐨勬ц兘錛岄渶瑕侀伒寰涓嬬殑鍏釜姝ラ銆?<br />a) 鏄庣‘瀵規ц兘鐨勫叿浣撹姹?<br />鍦ㄥ疄鏂戒竴涓」鐩箣鍓嶏紝蹇呴』瑕佹槑紜欏圭洰瀵逛簬紼嬪簭鎬ц兘鐨勫叿浣撹姹傦紝濡傦細榪欎釜搴旂敤紼嬪簭瑕佹敮鎸?000涓茍鍙戠殑鐢ㄦ埛錛屽茍涓斿搷搴旀椂闂磋鍦?縐掗挓涔嬪唴銆備絾鍚屾椂涔熻鏄庣櫧瀵逛簬鎬ц兘鐨勮姹備笉搴旇鍚屽紼嬪簭鐨勫叾浠栬姹傚啿紿併?<br />b) 浜嗚В褰撳墠紼嬪簭鐨勬ц兘 <br />浣犲簲璇ヤ簡瑙d綘鐨勫簲鐢ㄧ▼搴忕殑鎬ц兘鍚岄」鐩墍瑕佹眰鎬ц兘涔嬮棿鐨勫樊璺濄傞氬父鐨勬寚鏍囨槸鍗曚綅鏃墮棿鍐呯殑澶勭悊鏁板拰鍝嶅簲鏃墮棿錛屾湁鏃惰繕浼氭瘮杈僀PU鍜屽唴瀛樼殑鍒╃敤鐜囥?<br />c) 鎵懼埌紼嬪簭鐨勬ц兘鐡墮 <br />涓轟簡鍙戠幇紼嬪簭涓殑鎬ц兘鐡墮錛岄氬父浼氫嬌鐢ㄤ竴浜涘垎鏋愬伐鍏鳳紝濡傦細TowerJ Application Performance Analyzer鎴朧Tune鏉ュ療鐪嬪拰鍒嗘瀽紼嬪簭鍫嗘爤涓悇涓厓绱犵殑娑堣楁椂闂達紝浠庤屾紜殑鎵懼埌騫舵敼姝e紩璧鋒ц兘闄嶄綆鐨勭摱棰堜唬鐮侊紝浠庤屾彁楂樼▼搴忕殑鎬ц兘銆傝繖浜涘伐鍏瘋繕鑳藉彂鐜拌濡傝繃澶氱殑寮傚父澶勭悊錛屽瀮鍦懼洖鏀剁瓑娼滃湪鐨勯棶棰樸?<br />d) 閲囧彇閫傚綋鐨勬帾鏂芥潵鎻愰珮鎬ц兘 <br />鎵懼埌浜嗗紩璧風▼搴忔ц兘闄嶄綆鐨勭摱棰堜唬鐮佸悗錛屾垜浠氨鍙互鐢ㄥ墠闈粙緇嶈繃鐨勬彁楂樻ц兘鐨勫洓涓柟闈紝鍗寵璁℃ā寮忥紝JAVA浠g爜鐨勫疄鐜幫紝甯冪講JAVA鐨勭幆澧冨拰鎿嶄綔緋葷粺鏉ユ彁楂樺簲鐢ㄧ▼搴忕殑鎬ц兘銆傚叿浣撳唴瀹瑰皢鍦ㄤ笅闈㈢殑鍐呭涓綔璇︾粏璇存槑銆?<br />e) 鍙繘琛屾煇涓鏂歸潰鐨勪慨鏀規潵鎻愰珮鎬ц兘 <br />涓嬈″彧鏀瑰彉鍙兘寮曡搗鎬ц兘闄嶄綆鐨勬煇涓鏂歸潰錛岀劧鍚庤瀵熺▼搴忕殑鎬ц兘鏄惁鏈夋墍鎻愰珮錛岃屼笉搴旇涓嬈℃敼鍙樺涓柟闈紝鍥犱負榪欐牱浣犲皢涓嶇煡閬撳埌搴曞摢涓柟闈㈢殑鏀瑰彉鎻愰珮浜嗙▼搴忕殑鎬ц兘錛屽摢涓柟闈㈡病鏈夛紝鍗充笉鑳界煡閬撶▼搴忕摱棰堝湪鍝?<br />f) 榪斿洖鍒版楠,緇х畫浣滅被浼肩殑宸ヤ綔錛屼竴鐩磋揪鍒拌姹傜殑鎬ц兘涓烘銆?<br /><br />浜岋紟 JAVA甯冪講鐨勭幆澧冨拰緙栬瘧鎶鏈?<br />銆寮鍙慗AVA搴旂敤紼嬪簭鏃訛紝棣栧厛鎶奐AVA鐨勬簮紼嬪簭緙栬瘧涓轟笌騫沖彴鏃犲叧鐨勫瓧鑺傜爜銆傝繖浜涘瓧鑺傜爜灝卞彲浠ヨ鍚勭鍩轟簬JVM鐨勬妧鏈墍鎵ц銆傝繖浜涙妧鏈富瑕佸垎涓轟袱涓ぇ綾匯傚嵆鍩轟簬瑙i噴鐨勬妧鏈拰鍩轟簬鎻愬墠緙栬瘧涓烘湰鍦扮爜鐨勬妧鏈傚叾紺烘剰鍥懼涓嬶細 <br /><br /><br />鍏蜂綋鍙垎涓哄涓嬬殑浜旂被錛氥銆 <br />a) 瑙i噴鎸囦護鎶鏈?<br />鍏剁粨鏋勫浘鍜屾墽琛岃繃紼嬪涓嬶細 <br /><br /><br />銆JAVA鐨勭紪璇戝櫒棣栧厛鎶奐AVA婧愭枃浠剁紪璇戜負瀛楄妭鐮併傝繖浜涘瓧鑺傜爜瀵逛簬JAVA铏氭嫙鏈?JVM)鏉ヨ灝辨槸鏈哄櫒鐨勬寚浠ょ爜銆傜劧鍚庯紝JAVA鐨勮В閲婂櫒涓嶆柇鐨勫驚鐜彇鍑哄瓧鑺傜爜榪涜瑙i噴騫舵墽琛屻?<br />銆榪欐牱鍋氱殑浼樼偣鏄彲浠ュ疄鐜癑AVA璇█鐨勮法騫沖彴錛屽悓鏃剁敓鎴愮殑瀛楄妭鐮佷篃姣旇緝绱у噾銆侸AVA鐨勪竴浜涗紭鐐癸紝濡傚畨鍏ㄦэ紝鍔ㄦ佹ч兘寰椾繚鎸侊紱浣嗙己鐐規槸鐪佺敓鎴愮殑瀛楄妭鐮佹病鏈夌粡榪囦粈涔堜紭鍖栵紝鍚屽叏閮ㄧ紪璇戝ソ鐨勬湰鍦扮爜鐩告瘮錛岄熷害姣旇緝鎱€?<br />b) 鍙婃椂緙栬瘧鎶鏈紙Just In Time錛?<br />銆銆鍙婃椂緙栬瘧鎶鏈槸涓轟簡瑙e喅鎸囦護瑙i噴鎶鏈晥鐜囨瘮杈冧綆錛岄熷害姣旇緝鎱㈢殑鎯呭喌涓嬫彁鍑虹殑錛屽叾緇撴瀯鍥懼涓嬫墍紺恒?<br /><br /><br />鍏朵富瑕佸彉鍖栨槸鍦↗AVA紼嬪簭鎵ц涔嬪墠錛屽張JIT緙栬瘧鍣ㄦ妸JAVA鐨勫瓧鑺傜爜緙栬瘧涓烘満鍣ㄧ爜銆備粠鑰屽湪紼嬪簭榪愯鏃剁洿鎺ユ墽琛屾満鍣ㄧ爜錛岃屼笉鐢ㄥ瀛楄妭鐮佽繘琛岃В閲娿傚悓鏃跺浠g爜涔熻繘琛屼簡閮ㄥ垎鐨勪紭鍖栥?<br />榪欐牱鍋氱殑浼樼偣鏄ぇ澶ф彁楂樹簡JAVA紼嬪簭鐨勬ц兘銆傚悓鏃訛紝鐢變簬緙栬瘧鐨勭粨鏋滃茍涓嶅湪紼嬪簭榪愯闂翠繚瀛橈紝鍥犳涔熻妭綰︿簡瀛樺偍絀洪棿浜嗗姞杞界▼搴忕殑鏃墮棿錛涚己鐐規槸鐢變簬J IT緙栬瘧鍣ㄥ鎵鏈夌殑浠g爜閮芥兂浼樺寲錛屽洜姝や篃嫻垂浜嗗緢澶氱殑鏃墮棿銆?<br />IBM鍜孲UN鍏徃閮芥彁渚涗簡鐩稿叧鐨凧IT浜у搧銆?<br />c) 閫傚簲鎬т紭鍖栨妧鏈紙Adaptive Optimization Technology錛?<br />鍚孞IT鎶鏈浉姣旓紝閫傚簲鎬т紭鍖栨妧鏈茍涓嶅鎵鏈夌殑瀛楄妭鐮佽繘琛屼紭鍖栥傚畠浼氳窡韙▼搴忚繍琛岀殑鎴愪釜榪囩▼錛屼粠鑰屽彂鐜伴渶瑕佷紭鍖栫殑浠g爜錛屽浠g爜榪涜鍔ㄦ佺殑浼樺寲銆傚浼樺寲鐨勪唬鐮侊紝閲囧彇8 0/20鐨勭瓥鐣ャ備粠鐞嗚涓婅錛岀▼搴忚繍琛岀殑鏃墮棿瓚婇暱錛屼唬鐮佸氨瓚婁紭鍖栥傚叾緇撴瀯鍥懼涓嬶細 <br /><br /><br />鍏朵紭鐐規槸閫傚簲鎬т紭鍖栨妧鏈厖鍒嗗埄鐢ㄤ簡紼嬪簭鎵ц鏃剁殑淇℃伅錛屽彂琛岀▼搴忕殑鎬ц兘鐡墮錛屼粠鑰屾彁楂樼▼搴忕殑鎬ц兘錛涘叾緙虹偣鏄湪榪涜浼樺寲鏃跺彲鑳戒細閫夋嫨涓嶅綋錛屽彂鑰岄檷浣庝簡紼嬪簭鐨勬ц兘銆?<br />鍏朵富瑕佷駭鍝佸張IBM,SUN鐨凥otSpot. <br />d) 鍔ㄦ佷紭鍖栵紝鎻愬墠緙栬瘧涓烘満鍣ㄧ爜鐨勬妧鏈紙Dynamic Optimization,Ahead Of Time錛?<br />鍔ㄦ佷紭鍖栨妧鏈厖鍒嗗埄鐢ㄤ簡JAVA婧愮爜緙栬瘧錛屽瓧鑺傜爜緙栬瘧錛屽姩鎬佺紪璇戝拰闈欐佺紪璇戠殑鎶鏈傚叾杈撳叆鏃禞AVA鐨勫師鐮佹垨瀛楄妭鐮侊紝鑰岃緭鍑烘槸緇忚繃楂樺害浼樺寲鐨勫彲鎵ц浠g爜鍜屼釜鏉ュ姩鎬佸簱鐨勬販鍚? Window涓槸DLL鏂囦歡錛孶NIX涓槸鍏變韓搴?a .so鏂囦歡)銆傚叾緇撴瀯濡備笅錛?<br /><br /><br />鍏朵紭鐐規槸鑳藉ぇ澶ф彁楂樼▼搴忕殑鎬ц兘錛涚己鐐規槸鐮村潖浜咼AVA鐨勫彲縐繪鎬э紝涔熷JAVA鐨勫畨鍏ㄥ甫鏉ヤ簡涓瀹氱殑闅愭偅銆?<br /></div> <div style="FONT-SIZE: 12px"> <p style="FONT-WEIGHT: bold; FONT-SIZE: 26px">Java鎬ц兘鐨勪紭鍖栵紙涓嬶級  </p> <hr style="COLOR: #000000; HEIGHT: 1px" /> <p> </p> <div style="FONT-SIZE: 12px">榛勪紵宄?<br /> <br /><br /><br /><br />涓夛紟浼樺寲JAVA紼嬪簭璁捐鍜岀紪鐮侊紝鎻愰珮JAVA紼嬪簭鎬ц兘鐨勪竴浜涙柟娉曘?<br />閫氳繃浣跨敤涓浜涘墠闈粙緇嶈繃鐨勮緟鍔╂у伐鍏鋒潵鎵懼埌紼嬪簭涓殑鐡墮錛岀劧鍚庡氨鍙互瀵圭摱棰堥儴鍒嗙殑浠g爜榪涜浼樺寲銆備竴鑸湁涓ょ鏂規錛氬嵆浼樺寲浠g爜鎴栨洿鏀硅璁℃柟娉曘傛垜浠竴鑸細閫夋嫨鍚庤咃紝鍥犱負涓嶅幓璋冪敤浠ヤ笅浠g爜瑕佹瘮璋冪敤涓浜涗紭鍖栫殑浠g爜鏇磋兘鎻愰珮紼嬪簭鐨勬ц兘銆傝屼竴涓璁¤壇濂界殑紼嬪簭鑳藉綺劇畝浠g爜錛屼粠鑰屾彁楂樻ц兘銆?<br />涓嬮潰灝嗘彁渚涗竴浜涘湪JAVA紼嬪簭鐨勮璁″拰緙栫爜涓紝涓轟簡鑳藉鎻愰珮JAVA紼嬪簭鐨勬ц兘錛岃岀粡甯擱噰鐢ㄧ殑涓浜涙柟娉曞拰鎶宸с?<br />1錛庡璞$殑鐢熸垚鍜屽ぇ灝忕殑璋冩暣銆?<br />JAVA紼嬪簭璁捐涓竴涓櫘閬嶇殑闂灝辨槸娌℃湁濂藉ソ鐨勫埄鐢↗AVA璇█鏈韓鎻愪緵鐨勫嚱鏁幫紝浠庤屽父甯鎬細鐢熸垚澶ч噺鐨勫璞★紙鎴栧疄渚嬶級銆傜敱浜庣郴緇熶笉浠呰鑺辨椂闂寸敓鎴愬璞★紝浠ュ悗鍙兘榪橀渶鑺辨椂闂村榪欎簺瀵硅薄榪涜鍨冨溇鍥炴敹鍜屽鐞嗐傚洜姝わ紝鐢熸垚榪囧鐨勫璞″皢浼氱粰紼嬪簭鐨勬ц兘甯︽潵寰堝ぇ鐨勫獎鍝嶃?<br />渚?錛氬叧浜嶴tring ,StringBuffer錛?鍜宎ppend <br />JAVA璇█鎻愪緵浜嗗浜嶴tring綾誨瀷鍙橀噺鐨勬搷浣溿備絾濡傛灉浣跨敤涓嶅綋錛屼細緇欑▼搴忕殑鎬ц兘甯︽潵褰卞搷銆傚涓嬮潰鐨勮鍙ワ細 <br />String name=new String(“HuangWeiFeng”); <br />System.out.println(name+”is my name”); <br />鐪嬩技宸茬粡寰堢簿綆浜嗭紝鍏跺疄騫墮潪濡傛銆備負浜嗙敓鎴愪簩榪涘埗鐨勪唬鐮侊紝瑕佽繘琛屽涓嬬殑姝ラ鍜屾搷浣溿?<br />錛?錛?鐢熸垚鏂扮殑瀛楃涓?new String(STR_1); <br />錛?錛?澶嶅埗璇ュ瓧絎︿覆銆?<br />錛?錛?鍔犺澆瀛楃涓插父閲?#8221;HuangWeiFeng”(STR_2); <br />錛?錛?璋冪敤瀛楃涓茬殑鏋勬灦鍣紙Constructor錛? <br />錛?錛?淇濆瓨璇ュ瓧絎︿覆鍒版暟緇勪腑錛堜粠浣嶇疆0寮濮嬶級 <br />錛?錛?浠巎ava.io.PrintStream綾諱腑寰楀埌闈欐佺殑out鍙橀噺 <br />錛?錛?鐢熸垚鏂扮殑瀛楃涓茬紦鍐插彉閲弉ew StringBuffer(STR_BUF_1); <br />錛?錛?澶嶅埗璇ュ瓧絎︿覆緙撳啿鍙橀噺 <br />錛?錛?璋冪敤瀛楃涓茬紦鍐茬殑鏋勬灦鍣紙Constructor錛? <br />錛?0錛?淇濆瓨璇ュ瓧絎︿覆緙撳啿鍒版暟緇勪腑錛堜粠浣嶇疆1寮濮嬶級 <br />錛?1錛?浠TR_1涓哄弬鏁幫紝璋冪敤瀛楃涓茬紦鍐?StringBuffer)綾諱腑鐨刟ppend鏂規硶銆?<br />錛?2錛?鍔犺澆瀛楃涓插父閲?#8221;is my name”(STR_3); <br />錛?3錛?浠TR_3涓哄弬鏁幫紝璋冪敤瀛楃涓茬紦鍐?StringBuffer)綾諱腑鐨刟ppend鏂規硶銆?<br />錛?4錛?瀵逛簬STR_BUF_1鎵цtoString鍛戒護銆?<br />錛?5錛?璋冪敤out鍙橀噺涓殑println鏂規硶錛岃緭鍑虹粨鏋溿?<br />鐢辨鍙互鐪嬪嚭錛岃繖涓よ綆鍗曠殑浠g爜錛屽氨鐢熸垚浜哠TR_1,STR_2,STR_3,STR_4鍜孲TR_BUF_1浜斾釜瀵硅薄鍙橀噺銆傝繖浜涚敓鎴愮殑綾葷殑瀹炰緥涓鑸兘瀛樻斁鍦ㄥ爢涓傚爢瑕佸鎵鏈夌被鐨勮秴綾伙紝綾葷殑瀹炰緥榪涜鍒濆鍖栵紝鍚屾椂榪樿璋冪敤綾繪瀬鍏舵瘡涓秴綾葷殑鏋勬灦鍣ㄣ傝岃繖浜涙搷浣滈兘鏄潪甯告秷鑰楃郴緇熻祫婧愮殑銆傚洜姝わ紝瀵瑰璞$殑鐢熸垚榪涜闄愬埗錛屾槸瀹屽叏鏈夊繀瑕佺殑銆?<br />緇忎慨鏀癸紝涓婇潰鐨勪唬鐮佸彲浠ョ敤濡備笅鐨勪唬鐮佹潵鏇挎崲銆?<br />StringBuffer name=new StringBuffer(“HuangWeiFeng”); <br />System.out.println(name.append(“is my name.”).toString()); <br />緋葷粺灝嗚繘琛屽涓嬬殑鎿嶄綔銆?<br />(1) 鐢熸垚鏂扮殑瀛楃涓茬紦鍐插彉閲弉ew StringBuffer(STR_BUF_1); <br />(2) 澶嶅埗璇ュ瓧絎︿覆緙撳啿鍙橀噺 <br />(3) 鍔犺澆瀛楃涓插父閲?#8221;HuangWeiFeng”(STR_1); <br />(4) 璋冪敤瀛楃涓茬紦鍐茬殑鏋勬灦鍣紙Constructor錛? <br />(5) 淇濆瓨璇ュ瓧絎︿覆緙撳啿鍒版暟緇勪腑錛堜粠浣嶇疆1寮濮嬶級 <br />(6) 浠巎ava.io.PrintStream綾諱腑寰楀埌闈欐佺殑out鍙橀噺 <br />(7) 鍔犺澆STR_BUF_1; <br />(8) 鍔犺澆瀛楃涓插父閲?#8221;is my name”(STR_2); <br />(9) 浠TR_2涓哄弬鏁幫紝璋冪敤瀛楃涓茬紦鍐?StringBuffer)瀹炰緥涓殑append鏂規硶銆?<br />(10) 瀵逛簬STR_BUF_1鎵цtoString鍛戒護銆?STR_3) <br />(11)璋冪敤out鍙橀噺涓殑println鏂規硶錛岃緭鍑虹粨鏋溿?<br />鐢辨鍙互鐪嬪嚭錛岀粡榪囨敼榪涘悗鐨勪唬鐮佸彧鐢熸垚浜嗗洓涓璞″彉閲忥細STR_1,STR_2,STR_3鍜孲TR_BUF_1.浣犲彲鑳借寰楀皯鐢熸垚涓涓璞′笉浼氬紼嬪簭鐨勬ц兘鏈夊緢澶х殑鎻愰珮銆備絾涓嬮潰鐨勪唬鐮佹2 鐨勬墽琛岄熷害灝嗘槸浠g爜孌?鐨?鍊嶃傚洜涓轟唬鐮佹1鐢熸垚浜嗗叓涓璞★紝鑰屼唬鐮佹2鍙敓鎴愪簡鍥涗釜瀵硅薄銆?<br />浠g爜孌?錛?<br />String name= new StringBuffer(“HuangWeiFeng”); <br />name+=”is my”; <br />name+=”name”; <br />浠g爜孌?錛?<br />StringBuffer name=new StringBuffer(“HuangWeiFeng”); <br />name.append(“is my”); <br />name.append(“name.”).toString(); <br />鍥犳錛屽厖鍒嗙殑鍒╃敤JAVA鎻愪緵鐨勫簱鍑芥暟鏉ヤ紭鍖栫▼搴忥紝瀵規彁楂楯AVA紼嬪簭鐨勬ц兘鏃墮潪甯擱噸瑕佺殑.鍏舵敞鎰忕偣涓昏鏈夊涓嬪嚑鏂歸潰錛?<br />錛?錛?灝藉彲鑳界殑浣跨敤闈欐佸彉閲忥紙Static Class Variables錛?<br />濡傛灉綾諱腑鐨勫彉閲忎笉浼氶殢浠栫殑瀹炰緥鑰屽彉鍖栵紝灝卞彲浠ュ畾涔変負闈欐佸彉閲忥紝浠庤屼嬌浠栨墍鏈夌殑瀹炰緥閮藉叡浜繖涓彉閲忋?<br />渚嬶細 <br />public class foo <br />{ <br />SomeObject so=new SomeObject(); <br />} <br />灝卞彲浠ュ畾涔変負錛?<br />public class foo <br />{ <br />static SomeObject so=new SomeObject(); <br />} <br />錛?錛?涓嶈瀵瑰凡鐢熸垚鐨勫璞′綔榪囧鐨勬敼鍙樸?<br />瀵逛簬涓浜涚被(濡傦細String綾?鏉ヨ錛屽畞鎰垮湪閲嶆柊鐢熸垚涓涓柊鐨勫璞″疄渚嬶紝鑰屼笉搴旇淇敼宸茬粡鐢熸垚鐨勫璞″疄渚嬨?<br />渚嬶細 <br />String name=”Huang”; <br />name=”Wei”; <br />name=”Feng”; <br />涓婅堪浠g爜鐢熸垚浜嗕笁涓猄tring綾誨瀷鐨勫璞″疄渚嬨傝屽墠涓や釜椹笂灝遍渶瑕佺郴緇熻繘琛屽瀮鍦懼洖鏀跺鐞嗐傚鏋滆瀵瑰瓧絎︿覆榪涜榪炴帴鐨勬搷浣滐紝鎬ц兘灝嗗緱鏇村樊銆傚洜涓虹郴緇熷皢涓嶅緱涓烘鐢熸垚鏇村寰椾復鏃跺彉閲忋傚涓婁緥1 鎵紺恒?<br />錛?錛?鐢熸垚瀵硅薄鏃訛紝瑕佸垎閰嶇粰瀹冨悎鐞嗙殑絀洪棿鍜屽ぇ灝?<br />JAVA涓殑寰堝綾婚兘鏈夊畠鐨勯粯璁ょ殑絀洪棿鍒嗛厤澶у皬銆傚浜嶴tringBuffer綾繪潵璁詫紝榛樿鐨勫垎閰嶇┖闂村ぇ灝忔槸16涓瓧絎︺傚鏋滃湪紼嬪簭涓嬌鐢⊿tringBu ffer鐨勭┖闂村ぇ灝忎笉鏄?6涓瓧絎︼紝閭d箞灝卞繀欏昏繘琛屾紜殑鍒濆鍖栥?<br />錛?錛?閬垮厤鐢熸垚涓嶅お浣跨敤鎴栫敓鍛藉懆鏈熺煭鐨勫璞℃垨鍙橀噺銆?<br />瀵逛簬榪欑鎯呭喌錛屽洜璇ュ畾涔変竴涓璞$紦鍐叉睜銆備互涓虹鐞嗕竴涓璞$紦鍐叉睜鐨勫紑閿瑕佹瘮棰戠箒鐨勭敓鎴愬拰鍥炴敹瀵硅薄鐨勫紑閿灝忕殑澶氥?<br />錛?錛?鍙湪瀵硅薄浣滅敤鑼冨洿鍐呰繘琛屽垵濮嬪寲銆?<br />JAVA鍏佽鍦ㄤ唬鐮佺殑浠諱綍鍦版柟瀹氫箟鍜屽垵濮嬪寲瀵硅薄銆傝繖鏍鳳紝灝卞彲浠ュ彧鍦ㄥ璞′綔鐢ㄧ殑鑼冨洿鍐呰繘琛屽垵濮嬪寲銆備粠鑰岃妭綰︾郴緇熺殑寮閿銆?<br />渚嬶細 <br />SomeObject so=new SomeObject(); <br />If(x==1) then <br />{ <br />Foo=so.getXX(); <br />} <br />鍙互淇敼涓猴細 <br />if(x==1) then <br />{ <br />SomeObject so=new SomeObject(); <br />Foo=so.getXX(); <br />} <br />2錛庡紓甯?Exceptions) <br />JAVA璇█涓彁渚涗簡try/catch鏉ュ彂鏂逛究鐢ㄦ埛鎹曟崏寮傚父錛岃繘琛屽紓甯哥殑澶勭悊銆備絾鏄鏋滀嬌鐢ㄤ笉褰擄紝涔熶細緇橨AVA紼嬪簭鐨勬ц兘甯︽潵褰卞搷銆傚洜姝わ紝瑕佹敞鎰忎互涓嬩袱鐐廣?<br />(1) 閬垮厤瀵瑰簲鐢ㄧ▼搴忕殑閫昏緫浣跨敤try/catch <br />濡傛灉鍙互鐢╥f,while絳夐昏緫璇彞鏉ュ鐞嗭紝閭d箞灝卞敖鍙兘鐨勪笉鐢╰ry/catch璇彞 <br />(2) 閲嶇敤寮傚父 <br />鍦ㄥ繀欏昏榪涜寮傚父鐨勫鐞嗘椂錛岃灝藉彲鑳界殑閲嶇敤宸茬粡瀛樺湪鐨勫紓甯稿璞°備互涓哄湪寮傚父鐨勫鐞嗕腑錛岀敓鎴愪竴涓紓甯稿璞¤娑堣楁帀澶ч儴鍒嗙殑鏃墮棿銆?<br />3. 綰跨▼(Threading) <br />涓涓珮鎬ц兘鐨勫簲鐢ㄧ▼搴忎腑涓鑸兘浼氱敤鍒扮嚎紼嬨傚洜涓虹嚎紼嬭兘鍏呭垎鍒╃敤緋葷粺鐨勮祫婧愩傚湪鍏朵粬綰跨▼鍥犱負絳夊緟紜洏鎴栫綉緇滆鍐欒?鏃訛紝紼嬪簭鑳界戶緇鐞嗗拰榪愯銆備絾鏄綰跨▼榪愮敤涓嶅綋錛屼篃浼氬獎鍝嶇▼搴忕殑鎬ц兘銆?<br />渚?錛氭紜嬌鐢╒ector綾?<br />Vector涓昏鐢ㄦ潵淇濆瓨鍚勭綾誨瀷鐨勫璞★紙鍖呮嫭鐩稿悓綾誨瀷鍜屼笉鍚岀被鍨嬬殑瀵硅薄錛夈備絾鏄湪涓浜涙儏鍐典笅浣跨敤浼氱粰紼嬪簭甯︽潵鎬ц兘涓婄殑褰卞搷銆傝繖涓昏鏄敱V ector綾葷殑涓や釜鐗圭偣鎵鍐沖畾鐨勩傜涓錛孷ector鎻愪緵浜嗙嚎紼嬬殑瀹夊叏淇濇姢鍔熻兘銆傚嵆浣縑ector綾諱腑鐨勮澶氭柟娉曞悓姝ャ備絾鏄鏋滀綘宸茬粡紜浣犵殑搴旂敤紼嬪簭鏄崟綰跨▼錛岃繖浜涙柟娉曠殑鍚屾灝卞畬鍏ㄤ笉蹇呰浜嗐傜浜岋紝鍦╒ ector鏌ユ壘瀛樺偍鐨勫悇縐嶅璞℃椂錛屽父甯歌鑺卞緢澶氱殑鏃墮棿榪涜綾誨瀷鐨勫尮閰嶃傝屽綋榪欎簺瀵硅薄閮芥槸鍚屼竴綾誨瀷鏃訛紝榪欎簺鍖歸厤灝卞畬鍏ㄤ笉蹇呰浜嗐傚洜姝わ紝鏈夊繀瑕佽璁′竴涓崟綰跨▼鐨勶紝淇濆瓨鐗瑰畾綾誨瀷瀵硅薄鐨勭被鎴栭泦鍚堟潵鏇夸唬V ector綾?鐢ㄦ潵鏇挎崲鐨勭▼搴忓涓嬶紙StringVector.java錛夛細 <br />public class StringVector <br />{ <br />private String [] data; <br />private int count; <br />public StringVector() { this(10); // default size is 10 } <br />public StringVector(int initialSize) <br />{ <br />data = new String[initialSize]; <br />} <br />public void add(String str) <br />{ <br />// ignore null strings <br />if(str == null) { return; } <br />ensureCapacity(count + 1); <br />data[count++] = str; <br />} <br /><br />private void ensureCapacity(int minCapacity) <br />{ <br />int oldCapacity = data.length; <br />if (minCapacity > oldCapacity) <br />{ <br />String oldData[] = data; <br />int newCapacity = oldCapacity * 2; <br />data = new String[newCapacity]; <br />System.arraycopy(oldData, 0, data, 0, count); <br />} <br />} <br />public void remove(String str) <br />{ <br />if(str == null) { return // ignore null str } <br />for(int i = 0; i < count; i++) <br />{ <br />// check for a match <br />if(data[i].equals(str)) <br />{ <br />System.arraycopy(data,i+1,data,i,count-1); // copy data <br />// allow previously valid array element be gc'd <br />data[--count] = null; <br />return; <br />} <br />} <br />} <br />public final String getStringAt(int index) { <br />if(index < 0) { return null; } <br />else if(index > count) <br />{ <br />return null; // index is > # strings <br />} <br />else { return data[index]; // index is good } <br />} <br />/* * * * * * * * * * * * * * * *StringVector.java * * * * * * * * * * * * * * * * */ <br />鍥犳錛屼唬鐮侊細 <br />Vector Strings=new Vector(); <br />Strings.add(“One”); <br />Strings.add(“Two”); <br />String Second=(String)Strings.elementAt(1); <br />鍙互鐢ㄥ涓嬬殑浠g爜鏇挎崲錛?<br />StringVector Strings=new StringVector(); <br />Strings.add(“One”); <br />Strings.add(“Two”); <br />String Second=Strings.getStringAt(1); <br />榪欐牱灝卞彲浠ラ氳繃浼樺寲綰跨▼鏉ユ彁楂楯AVA紼嬪簭鐨勬ц兘銆傜敤浜庢祴璇曠殑紼嬪簭濡備笅錛圱estCollection.java錛? <br />import java.util.Vector; <br />public class TestCollection <br />{ <br />public static void main(String args []) <br />{ <br />TestCollection collect = new TestCollection(); <br />if(args.length == 0) <br />{ <br />System.out.println( <br />"Usage: java TestCollection [ vector | stringvector ]"); <br />System.exit(1); <br />} <br />if(args[0].equals("vector")) <br />{ <br />Vector store = new Vector(); <br />long start = System.currentTimeMillis(); <br />for(int i = 0; i < 1000000; i++) <br />{ <br />store.addElement("string"); <br />} <br />long finish = System.currentTimeMillis(); <br />System.out.println((finish-start)); <br />start = System.currentTimeMillis(); <br />for(int i = 0; i < 1000000; i++) <br />{ <br />String result = (String)store.elementAt(i); <br />} <br />finish = System.currentTimeMillis(); <br />System.out.println((finish-start)); <br />} <br />else if(args[0].equals("stringvector")) <br />{ <br />StringVector store = new StringVector(); <br />long start = System.currentTimeMillis(); <br />for(int i = 0; i < 1000000; i++) { store.add("string"); } <br />long finish = System.currentTimeMillis(); <br />System.out.println((finish-start)); <br />start = System.currentTimeMillis(); <br />for(int i = 0; i < 1000000; i++) { <br />String result = store.getStringAt(i); <br />} <br />finish = System.currentTimeMillis(); <br />System.out.println((finish-start)); <br />} <br />} <br />} <br />/* * * * * * * * * * * * * * * *TestCollection.java * * * * * * * * * * * * * * * * */ <br />嫻嬭瘯鐨勭粨鏋滃涓嬶紙鍋囪鏍囧噯鐨勬椂闂翠負錛戯紝瓚婂皬鎬ц兘瓚婂ソ錛夛細 <br /><br /><br />鍏充簬綰跨▼鐨勬搷浣滐紝瑕佹敞鎰忓涓嬪嚑涓柟闈€?<br />(1) 闃叉榪囧鐨勫悓姝?<br />濡備笂鎵紺猴紝涓嶅繀瑕佺殑鍚屾甯稿父浼氶犳垚紼嬪簭鎬ц兘鐨勪笅闄嶃傚洜姝わ紝濡傛灉紼嬪簭鏄崟綰跨▼錛屽垯涓瀹氫笉瑕佷嬌鐢ㄥ悓姝ャ?<br />(2) 鍚屾鏂規硶鑰屼笉瑕佸悓姝ユ暣涓唬鐮佹 <br />銆銆銆瀵規煇涓柟娉曟垨鍑芥暟榪涜鍚屾姣斿鏁翠釜浠g爜孌佃繘琛屽悓姝ョ殑鎬ц兘瑕佸ソ銆?<br />(3) 瀵規瘡涓璞′嬌鐢ㄥ”閿?#8221;鐨勬満鍒舵潵澧炲ぇ騫跺彂銆?<br />涓鑸瘡涓璞¢兘鍙湁涓涓?#8221;閿?#8221;錛岃繖灝辮〃鏄庡鏋滀袱涓嚎紼嬫墽琛屼竴涓璞$殑涓や釜涓嶅悓鐨勫悓姝ユ柟娉曟椂錛屼細鍙戠敓”姝婚攣”銆傚嵆浣胯繖涓や釜鏂規硶騫朵笉鍏變韓浠諱綍璧勬簮銆備負浜嗛伩鍏嶈繖涓棶棰橈紝鍙互瀵逛竴涓璞″疄琛?#8221;澶氶攣”鐨勬満鍒躲傚涓嬫墍紺猴細 <br />class foo <br />{ <br />private static int var1; <br />private static Object lock1=new Object(); <br />private static int var2; <br />private static Object lock2=new Object(); <br />public static void increment1() <br />{ <br />synchronized(lock1) <br />{ <br />var1++; <br />} <br />} <br />public static void increment2() <br />{ <br />synchronized(lock2) <br />{ <br />var2++; <br />} <br />} <br />} <br />4錛庤緭鍏ュ拰杈撳嚭(I/O) <br />杈撳叆鍜岃緭鍑哄寘鎷緢澶氭柟闈紝浣嗘秹鍙婃渶澶氱殑鏄紜洏錛岀綉緇滄垨鏁版嵁搴撶殑璇誨啓鎿嶄綔銆傚浜庤鍐欐搷浣滐紝鍙堝垎涓烘湁緙撳瓨鍜屾病鏈夌紦瀛樼殑錛涘浜庢暟鎹簱鐨勬搷浣滐紝鍙堝彲浠ユ湁澶氱綾誨瀷鐨凧 DBC椹卞姩鍣ㄥ彲浠ラ夋嫨銆備絾鏃犺鎬庢牱錛岄兘浼氱粰紼嬪簭鐨勬ц兘甯︽潵褰卞搷銆傚洜姝わ紝闇瑕佹敞鎰忓涓嬪嚑鐐癸細 <br />(1) 浣跨敤杈撳叆杈撳嚭緙撳啿 <br />銆銆銆灝藉彲鑳界殑澶氫嬌鐢ㄧ紦瀛樸備絾濡傛灉瑕佺粡甯稿緙撳瓨榪涜鍒鋒柊錛坒lush錛?鍒欏緩璁笉瑕佷嬌鐢ㄧ紦瀛樸?<br />(2) 杈撳嚭嫻?Output Stream)鍜孶nicode瀛楃涓?<br />銆銆銆褰撴椂鐢∣utput Stream鍜孶nicode瀛楃涓叉椂錛學rite綾葷殑寮閿姣旇緝澶с傚洜涓哄畠瑕佸疄鐜癠nicode鍒板瓧鑺?byte)鐨勮漿鎹?鍥犳錛屽鏋滃彲鑳界殑璇?鍦ㄤ嬌鐢╓rite綾諱箣鍓嶅氨瀹炵幇杞崲鎴栫敤O utputStream綾諱唬鏇縒riter綾繪潵浣跨敤銆?<br />(3) 褰撻渶搴忓垪鍖栨椂浣跨敤transient <br />銆銆銆褰撳簭鍒楀寲涓涓被鎴栧璞℃椂錛屽浜庨偅浜涘師瀛愮被鍨嬶紙atomic錛夋垨鍙互閲嶅緩鐨勫師绱犺琛ㄨ瘑涓簍ransient綾誨瀷銆傝繖鏍峰氨涓嶇敤姣忎竴嬈¢兘榪涜搴忓垪鍖栥傚鏋滆繖浜涘簭鍒楀寲鐨勫璞¤鍦ㄧ綉緇滀笂浼犺緭錛岃繖涓灝忓皬鐨勬敼鍙樺鎬ц兘浼氭湁寰堝ぇ鐨勬彁楂樸傘銆 <br />(4) 浣跨敤楂橀熺紦瀛橈紙Cache錛?<br />銆銆銆瀵逛簬閭d簺緇忓父瑕佷嬌鐢ㄨ屽張涓嶅ぇ鍙樺寲鐨勫璞℃垨鏁版嵁錛屽彲浠ユ妸瀹冨瓨鍌ㄥ湪楂橀熺紦瀛樹腑銆傝繖鏍峰氨鍙互鎻愰珮璁塊棶鐨勯熷害銆傝繖涓鐐瑰浜庝粠鏁版嵁搴撲腑榪斿洖鐨勭粨鏋滈泦灝ゅ叾閲嶈銆?<br />(5) 浣跨敤閫熷害蹇殑JDBC椹卞姩鍣紙Driver錛?<br />銆銆銆JAVA瀵硅闂暟鎹簱鎻愪緵浜嗗洓縐嶆柟娉曘傝繖鍏朵腑鏈変袱縐嶆槸JDBC椹卞姩鍣ㄣ備竴縐嶆槸鐢↗AVA澶栧寘鐨勬湰鍦伴┍鍔ㄥ櫒錛涘彟涓縐嶆槸瀹屽叏鐨凧AVA椹卞姩鍣ㄣ傚叿浣撹浣跨敤鍝竴縐嶅緱鏍規嵁J AVA甯冪講鐨勭幆澧冨拰搴旂敤紼嬪簭鏈韓鏉ュ畾銆?<br />5.涓浜涘叾浠栫殑緇忛獙鍜屾妧宸?<br />(1) 浣跨敤灞閮ㄥ彉閲?<br />(2) 閬垮厤鍦ㄥ悓涓涓被涓姩榪囪皟鐢ㄥ嚱鏁版垨鏂規硶(get鎴杝et)鏉ヨ緗垨璋冪敤鍙橀噺銆?<br />(3) 閬垮厤鍦ㄥ驚鐜腑鐢熸垚鍚屼竴涓彉閲忔垨璋冪敤鍚屼竴涓嚱鏁幫紙鍙傛暟鍙橀噺涔熶竴鏍鳳級 <br />(4) 灝藉彲鑳界殑浣跨敤static,final,private絳夊叧閿瓧 <br />(5) 褰撳鍒跺ぇ閲忔暟鎹椂錛屼嬌鐢⊿ystem.arraycopy()鍛戒護銆?<br /><br /></div> <p> </p> <hr style="COLOR: #000000; HEIGHT: 1px" /> </div> <img src ="http://m.tkk7.com/onejavaer/aggbug/101545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/onejavaer/" target="_blank">鏆楀綺劇伒</a> 2007-03-02 21:46 <a href="http://m.tkk7.com/onejavaer/articles/101545.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>equals() 鍜?hashCode() http://m.tkk7.com/onejavaer/articles/101536.html鏆楀綺劇伒鏆楀綺劇伒Fri, 02 Mar 2007 11:41:00 GMThttp://m.tkk7.com/onejavaer/articles/101536.htmlhttp://m.tkk7.com/onejavaer/comments/101536.htmlhttp://m.tkk7.com/onejavaer/articles/101536.html#Feedback2http://m.tkk7.com/onejavaer/comments/commentRss/101536.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/101536.html 鎴戜滑鐭ラ亾錛宔quals()鍑芥暟鏄敤鏉ュ仛姣旇緝鐨勩俲ava涓殑姣旇緝鏈変袱縐嶏細涓縐嶆槸鍐呭瓨鍦板潃鐨勬瘮杈冿紝涓縐嶆槸鍐呭鐨勬瘮杈冦傝屾瘮杈冧釜浣撲篃鏈変袱縐嶏細涓縐嶆槸綆鍗曠被鍨嬶紙榪欑被綆鍗曡鏉ユ棤鎵璋撳唴瀛樺湴鍧鐨勬瘮杈冩垨鑰呭唴瀹規瘮杈冪殑鍖哄埆錛夛紱榪樻湁涓縐嶆槸瀵硅薄鐨勬瘮杈冿紝鏈枃涓鐨勪富瑕佹槸鍚庤?/p>

鍦╦ava涓紝錛堝璞★級鍐呭瓨鍦板潃鐨勬瘮杈冿紝鏄氳繃==瀹屾垚鐨勩傛瘮濡?#160;

if (obj1  ==  obj2) {
    ...
}

榪欐牱鐨勮鍙ヤ腑錛屾垜浠涓猴紝濡傛灉obj1鍜宱bj2鐨勫唴瀛樺湴鍧鐩稿悓錛屽垯榪斿洖true

鑰宔quals()閫氬父鏄瘮杈冨唴瀹圭殑銆傝繖閲岃“閫氬父” 錛屾槸鍥犱負鍦ㄦ渶鏍規湰鐨凮bject綾諱腑錛宔qual()鍑芥暟鍋氱殑鏄湴鍧鐨勬瘮杈冦傝屽湪鍏朵粬鍑犱箮鎵鏈夌殑綾諱腑錛宔quals()閮界粡榪囬噸杞斤紝榪涜鍐呭鐨勬瘮杈冦?/p>

鑰屽湪璇磂quals()鐨勬椂鍊欐垜浠繕娑夊強hashCode()鏄洜涓哄湪鏈変簺搴旂敤涓紙姣斿錛孒ashMap鐨刱ey鏄璞★級錛屽繀欏誨湪閲嶈澆equals()鐨勫悓鏃墮噸杞絟ashCode()銆?strong>鍥犱負java涓粯璁?Object)鐨刪ashCode鏄牴鎹璞$殑鍦板潃璁$畻寰楀埌鐨勩?/strong>

鎴戜滑閫氬父涓嶄細娉ㄦ剰鍒拌繖涓棶棰橈紝鍥犱負鎴戜滑閫氬父鎵浣跨敤鐨?em>key閮芥槸綆鍗曠被鍨嬶紝鎴栬呮槸String, Long絳変竴浜涚壒孌婄殑瀵硅薄錛堝叾鐗規畩鎬ц鍙傜湅絎旇呭湪鍐檍ava 嫻呮嫹璐濆拰娣辨嫹璐濇椂鐨勮璁猴級錛岃繖鏃跺欙紝榪欎釜闂琚垜浠棤鎰忛棿緇曡繃浜?/p>

鏈変漢宸茬粡姒傛嫭浜嗚繖縐嶆垜浠拷鐣ヤ簡鐨勬儏鍐碉細“濡傛灉浣犳兂灝嗕竴涓璞鏀懼叆鍙︿竴涓敹闆嗭紙闆嗗悎錛夊璞閲岋紝鎴栬呬嬌鐢ㄨ繖涓璞涓烘煡鎵句竴涓厓瀵硅薄鍦ㄦ敹闆嗗 璞閲屼綅緗殑閽ュ寵錛坘ey錛夛紝騫舵敮鎸佹槸鍚﹀綰籌紙isContains()錛夛紝鍒犻櫎鏀墮泦瀵硅薄B閲岀殑鍏冨璞★紙remove()?錛夎繖鏍風殑鎿嶄綔錛岄偅涔堬紝equals()鍜宧ashCode()鍑芥暟蹇呴』寮鍙戣呰嚜宸卞畾涔夈?#8221; 錛堟嫭鍙蜂負絎旇呮坊鍔狅級

涓轟簡渚夸簬鐞嗚В錛屼婦涓孌電▼搴忎負渚嬶細

import  java.util. * ;
public   class  Person {

int  id;
String name;

// define getter and setter here, omited

public  Person( int  id, String name) {
     
this .id  =  id;
     
this .name  =  name;
     
}


public   boolean  equals(Object o) {
       
if ( this == o)  return   true ;
    
if (o  instanceof  Person)
    
return  ( this .id  ==  ((Person)o).id)  &&  ( this .name.equals(((Person)o).name));
    }


/*          
public int hashCode(){
    return id*37;
}
*/


public   static   void  main(String args[])  {
    Person p1 
=   new  Person( 1 , " aaa " );
    Person p2 
=   new  Person( 1 , " aaa " );
    Map map 
=   new  HashMap();

    map.put(p2,p1);
    Person value 
=  (Person)map.get(p1);
    System.out.println(value.name);
  }

}

榪欐浠g爜鐨勭粨鏋滄槸浠涔堬紵絳旀鏄痭ullPointerExcetpion.

鑰屾妸hashCode()鐨勬敞閲婂幓闄わ紝紼嬪簭灝卞彲浠ヨ繑鍥炴紜殑緇撴灉浜嗐備負浠涔堝憿錛熷洜涓猴細

Map.put(key,value)鏃舵牴鎹甼ey.hashCode鐢熸垚涓涓唴閮╤ash鍊鹼紝鏍規嵁榪欎釜hash鍊煎皢瀵硅薄瀛樻斁鍦ㄤ竴涓猼able涓?/p>

Map.get(key)浼氭瘮杈僰ey.hashCode鍜宔quals鏂規硶錛屽綋涓斾粎褰撹繖涓よ呯浉絳夋椂錛屾墠鑳芥紜畾浣嶅埌table銆傝屾垜浠榪囷紝榛樿鐨刯ava鏄鍦板潃榪涜姣旇緝鐨勩?/p>

]]>
JAVA姝e垯琛ㄨ揪寮?-Pattern鍜孧atcherhttp://m.tkk7.com/onejavaer/articles/101126.html鏆楀綺劇伒鏆楀綺劇伒Wed, 28 Feb 2007 05:47:00 GMThttp://m.tkk7.com/onejavaer/articles/101126.htmlhttp://m.tkk7.com/onejavaer/comments/101126.htmlhttp://m.tkk7.com/onejavaer/articles/101126.html#Feedback0http://m.tkk7.com/onejavaer/comments/commentRss/101126.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/101126.html鐜板湪JDK1.4閲岀粓浜庢湁浜嗚嚜宸辯殑姝e垯琛ㄨ揪寮廇PI鍖咃紝JAVA紼嬪簭鍛樺彲浠ュ厤鍘繪壘絎笁鏂規彁渚涚殑姝e垯琛ㄨ揪寮忓簱鐨勫懆鎶樹簡錛屾垜浠幇鍦ㄥ氨椹笂鏉ヤ簡瑙d竴涓嬭繖涓猄UN鎻愪緵鐨?#173;榪熸潵鎭╃墿-
-瀵規垜鏉ヨ紜疄濡傛銆?
1.綆浠嬶細
java.util.regex鏄竴涓?b style="COLOR: black; BACKGROUND-COLOR: #99ff99">鐢?/b>姝e垯琛ㄨ揪寮忔墍璁㈠埗鐨勬ā寮忔潵瀵瑰瓧絎︿覆榪涜鍖歸厤宸ヤ綔鐨勭被搴撳寘銆?

瀹冨寘鎷袱涓被錛歅attern鍜孧atcher Pattern
涓涓狿attern鏄竴涓鍒欒〃杈懼紡緇忕紪璇戝悗鐨勮〃鐜版ā寮忋?
Matcher
涓涓狹atcher瀵硅薄鏄竴涓姸鎬佹満鍣紝瀹冧緷鎹甈attern瀵硅薄鍋氫負鍖歸厤妯″紡瀵瑰瓧絎︿覆灞曞紑鍖歸厤媯鏌ャ?

棣栧厛涓涓狿attern瀹炰緥璁㈠埗浜嗕竴涓墍鐢ㄨ娉曚笌PERL鐨勭被浼肩殑姝e垯琛ㄨ揪寮忕粡緙栬瘧鍚庣殑妯″紡錛岀劧鍚庝竴涓狹atcher瀹炰緥鍦ㄨ繖涓粰瀹氱殑Pattern瀹炰緥鐨勬ā寮?#173;鎺у埗涓嬭繘琛屽瓧絎︿覆鐨勫尮閰嶅伐浣溿?

浠ヤ笅鎴戜滑灝卞垎鍒潵鐪嬬湅榪欎袱涓被錛?

2.Pattern綾?
Pattern鐨勬柟娉曞涓嬶細 static Pattern compile(String regex)
灝嗙粰瀹氱殑姝e垯琛ㄨ揪寮忕紪璇戝茍璧嬩簣緇橮attern綾?
static Pattern compile(String regex, int flags)
鍚屼笂錛屼絾澧炲姞flag鍙傛暟鐨勬寚瀹氾紝鍙夌殑flag鍙傛暟鍖呮嫭錛欳ASE
INSENSITIVE,MULTILINE,DOTALL,UNICODE CASE錛?CANON EQ
int flags()
榪斿洖褰撳墠Pattern鐨勫尮閰峟lag鍙傛暟.
Matcher matcher(CharSequence input)
鐢熸垚涓涓粰瀹氬懡鍚嶇殑Matcher瀵硅薄
static boolean matches(String regex, CharSequence input)
緙栬瘧緇欏畾鐨勬鍒欒〃杈懼紡騫朵笖瀵硅緭鍏ョ殑瀛椾覆浠ヨ姝e垯琛ㄨ揪寮忎負妯″紑灞曞尮閰?璇ユ柟娉曢傚悎浜庤姝e垯琛ㄨ揪寮忓彧浼氫嬌鐢ㄤ竴嬈$殑鎯呭喌錛屼篃灝辨槸鍙繘琛屼竴嬈″尮閰嶅伐浣滐紝鍥犱負榪欑鎯呭喌涓嬪茍­涓嶉渶瑕佺敓鎴愪竴涓狹atcher瀹炰緥銆?

String pattern()
榪斿洖璇atter瀵硅薄鎵緙栬瘧鐨勬鍒欒〃杈懼紡銆?
String[] split(CharSequence input)
灝嗙洰鏍囧瓧絎︿覆鎸夌収Pattern閲屾墍鍖呭惈鐨勬鍒欒〃杈懼紡涓烘ā榪涜鍒嗗壊銆?

String[] split(CharSequence input, int limit)
浣滅敤鍚屼笂錛屽鍔犲弬鏁發imit鐩殑鍦ㄤ簬瑕佹寚瀹氬垎鍓茬殑孌墊暟錛屽灝唋imi璁句負2錛岄偅涔堢洰鏍囧瓧絎︿覆灝嗘牴鎹鍒欒〃杈懼紡鍒嗕負鍓蹭負涓ゆ銆?

涓涓鍒欒〃杈懼紡錛屼篃灝辨槸涓涓叉湁鐗瑰畾鎰忎箟鐨勫瓧絎︼紝蹇呴』棣栧厛瑕佺紪璇戞垚涓轟竴涓狿attern綾葷殑瀹炰緥錛岃繖涓狿attern瀵硅薄灝嗕細浣跨敤matcher()鏂規硶鏉ョ敓鎴愪竴­涓狹atcher瀹炰緥錛屾帴鐫渚垮彲浠ヤ嬌鐢ㄨ
Matcher瀹炰緥浠ョ紪璇戠殑姝e垯琛ㄨ揪寮忎負鍩虹瀵圭洰鏍囧瓧絎︿覆榪涜鍖歸厤宸ヤ綔錛屽涓狹atcher鏄彲浠ュ叡鐢ㄤ竴涓狿attern瀵硅薄鐨勩?

鐜板湪鎴戜滑鍏堟潵鐪嬩竴涓畝鍗曠殑渚嬪瓙錛屽啀閫氳繃鍒嗘瀽瀹冩潵浜嗚В鎬庢牱鐢熸垚涓涓狿attern瀵硅薄騫朵笖緙栬瘧涓涓鍒欒〃杈懼紡錛屾渶鍚庢牴鎹繖涓鍒欒〃杈懼紡灝嗙洰鏍囧瓧絎︿覆榪涜鍒嗗壊錛?

import java.util.regex.*;
public class Replacement{
public static void main(String[] args) throws Exception {
// 鐢熸垚涓涓狿attern,鍚屾椂緙栬瘧涓涓鍒欒〃杈懼紡
Pattern p = Pattern.compile("[/]+");
//鐢?/b>Pattern鐨剆plit()鏂規硶鎶婂瓧絎︿覆鎸?/"鍒嗗壊
String[] result = p.split(
"Kevin has seen銆奓EON銆媠eveal times,because it is a good film."
+"/
鍑枃宸茬粡鐪嬭繃銆婅繖涓潃鎵嬩笉澶喎銆嬪嚑嬈′簡錛屽洜涓哄畠鏄竴閮?
+"濂界數褰便?鍚嶈瘝:鍑枃銆?);
for (int i=0; i<result.length; i++)
System.out.println(result[i]);

}
}

杈撳嚭緇撴灉涓猴細

Kevin has seen銆奓EON銆媠eveal times,because it is a good film.
鍑枃宸茬粡鐪嬭繃銆婅繖涓潃鎵嬩笉澶喎銆嬪嚑嬈′簡錛屽洜涓哄畠鏄竴閮ㄥソ鐢靛獎銆?
鍚嶈瘝:鍑枃銆?

寰堟槑鏄撅紝璇ョ▼搴忓皢瀛楃涓叉寜"/"榪涜浜嗗垎孌碉紝鎴戜滑浠ヤ笅鍐嶄嬌鐢?
split(CharSequence input, int
limit)鏂規硶鏉ユ寚瀹氬垎孌電殑孌墊暟錛岀▼搴忔敼鍔ㄤ負錛?
tring[] result = p.split("Kevin has seen銆奓EON銆媠eveal times,because
it is a good film./
鍑枃宸茬粡鐪嬭繃銆婅繖涓潃鎵嬩笉澶喎銆嬪嚑嬈′簡錛屽洜涓哄畠鏄竴閮ㄥソ鐢靛獎銆?鍚嶈瘝:鍑枃銆?錛?);

榪欓噷闈㈢殑鍙傛暟"2"琛ㄦ槑灝嗙洰鏍囪鍙ュ垎涓轟袱孌點?

杈撳嚭緇撴灉鍒欎負錛?

Kevin has seen銆奓EON銆媠eveal times,because it is a good film.
鍑枃宸茬粡鐪嬭繃銆婅繖涓潃鎵嬩笉澶喎銆嬪嚑嬈′簡錛屽洜涓哄畠鏄竴閮ㄥソ鐢靛獎銆?鍚嶈瘝:鍑枃銆?

鐢變笂闈㈢殑渚嬪瓙錛屾垜浠彲浠ユ瘮杈冨嚭java.util.regex鍖呭湪鏋勯燩attern瀵硅薄浠ュ強緙栬瘧鎸囧畾鐨勬鍒欒〃杈懼紡鐨勫疄鐜版墜娉曚笌鎴戜滑鍦ㄤ笂涓綃囦腑鎵浠嬬粛鐨凧aka­rta-ORO
鍖呭湪瀹屾垚鍚屾牱宸ヤ綔鏃剁殑宸埆錛?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Jakarta
-ORO
鍖呰鍏堟瀯閫犱竴涓狿atternCompiler綾誨璞℃帴鐫鐢熸垚涓涓狿attern瀵硅薄錛屽啀灝嗘鍒欒〃杈懼紡鐢?/b>璇atternCompiler綾葷殑compile(­)鏂規硶鏉ュ皢鎵闇鐨勬鍒欒〃杈懼紡緙栬瘧璧嬩簣Pattern綾伙細

PatternCompiler orocom=new Perl5Compiler();

Pattern pattern=orocom.compile("REGULAR EXPRESSIONS");

PatternMatcher matcher=new Perl5Matcher();

浣嗘槸鍦╦ava.util.regex鍖呴噷錛屾垜浠粎闇鐢熸垚涓涓狿attern綾伙紝鐩存帴浣跨敤瀹冪殑compile()鏂規硶灝卞彲浠ヨ揪鍒板悓鏍風殑鏁堟灉:
Pattern p = Pattern.compile("[/]+");

鍥犳浼間箮java.util.regex鐨勬瀯閫犳硶姣?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Jakarta-ORO鏇翠負綆媧佸茍瀹規槗鐞嗚В銆?

3.Matcher綾?
Matcher鏂規硶濡備笅錛?Matcher appendReplacement(StringBuffer sb,
String replacement)
灝嗗綋鍓嶅尮閰嶅瓙涓叉浛鎹負鎸囧畾瀛楃涓詫紝騫朵笖灝嗘浛鎹㈠悗鐨勫瓙涓蹭互鍙婂叾涔嬪墠鍒頒笂嬈″尮閰嶅瓙涓蹭箣鍚庣殑瀛楃涓叉娣誨姞鍒頒竴涓猄tringBuffer瀵硅薄閲屻?

StringBuffer appendTail(StringBuffer sb)
灝嗘渶鍚庝竴嬈″尮閰嶅伐浣滃悗鍓╀綑鐨勫瓧絎︿覆娣誨姞鍒頒竴涓猄tringBuffer瀵硅薄閲屻?

int end()
榪斿洖褰撳墠鍖歸厤鐨勫瓙涓茬殑鏈鍚庝竴涓瓧絎﹀湪鍘熺洰鏍囧瓧絎︿覆涓殑绱㈠紩浣嶇疆
銆?
int end(int group)
榪斿洖涓庡尮閰嶆ā寮忛噷鎸囧畾鐨勭粍鐩稿尮閰嶇殑瀛愪覆鏈鍚庝竴涓瓧絎︾殑浣嶇疆銆?

boolean find()
灝濊瘯鍦ㄧ洰鏍囧瓧絎︿覆閲屾煡鎵句笅涓涓尮閰嶅瓙涓層?
boolean find(int start)
閲嶈Matcher瀵硅薄錛屽茍涓斿皾璇曞湪鐩爣瀛楃涓查噷浠庢寚瀹氱殑浣嶇疆寮濮嬫煡鎵句笅涓涓尮閰嶇殑瀛愪覆銆?

String group()
榪斿洖褰撳墠鏌ユ壘鑰岃幏寰楃殑涓庣粍鍖歸厤鐨勬墍鏈夊瓙涓插唴瀹?
String group(int group)
榪斿洖褰撳墠鏌ユ壘鑰岃幏寰楃殑涓庢寚瀹氱殑緇勫尮閰嶇殑瀛愪覆鍐呭
int groupCount()
榪斿洖褰撳墠鏌ユ壘鎵鑾峰緱鐨勫尮閰嶇粍鐨勬暟閲忋?
boolean lookingAt()
媯嫻嬬洰鏍囧瓧絎︿覆鏄惁浠ュ尮閰嶇殑瀛愪覆璧峰銆?
boolean matches()
灝濊瘯瀵規暣涓洰鏍囧瓧絎﹀睍寮鍖歸厤媯嫻嬶紝涔熷氨鏄彧鏈夋暣涓洰鏍囧瓧絎︿覆瀹屽叏鍖歸厤鏃舵墠榪斿洖鐪熷箋?

Pattern pattern()
榪斿洖璇atcher瀵硅薄鐨勭幇鏈夊尮閰嶆ā寮忥紝涔熷氨鏄搴旂殑Pattern
瀵硅薄銆?
String replaceAll(String replacement)
灝嗙洰鏍囧瓧絎︿覆閲屼笌鏃㈡湁妯″紡鐩稿尮閰嶇殑瀛愪覆鍏ㄩ儴鏇挎崲涓烘寚瀹氱殑瀛楃涓層?

String replaceFirst(String replacement)
灝嗙洰鏍囧瓧絎︿覆閲岀涓涓笌鏃㈡湁妯″紡鐩稿尮閰嶇殑瀛愪覆鏇挎崲涓烘寚瀹氱殑瀛楃涓層?

Matcher reset()
閲嶈璇atcher瀵硅薄銆?
Matcher reset(CharSequence input)
閲嶈璇atcher瀵硅薄騫朵笖鎸囧畾涓涓柊鐨勭洰鏍囧瓧絎︿覆銆?
int start()
榪斿洖褰撳墠鏌ユ壘鎵鑾峰瓙涓茬殑寮濮嬪瓧絎﹀湪鍘熺洰鏍囧瓧絎︿覆涓殑浣嶇疆銆?

int start(int group)
榪斿洖褰撳墠鏌ユ壘鎵鑾峰緱鐨勫拰鎸囧畾緇勫尮閰嶇殑瀛愪覆鐨勭涓涓瓧絎﹀湪鍘熺洰鏍囧瓧絎︿覆涓殑浣嶇疆銆?

錛堝厜鐪嬫柟娉曠殑瑙i噴鏄笉鏄緢涓嶅ソ鐞嗚В錛熶笉瑕佹ワ紝寰呬細緇撳悎渚嬪瓙灝辨瘮杈冨鏄撴槑鐧戒簡錛?

涓涓狹atcher瀹炰緥鏄鐢ㄦ潵瀵圭洰鏍囧瓧絎︿覆榪涜鍩轟簬鏃㈡湁妯″紡錛堜篃灝辨槸涓涓粰瀹氱殑Pattern鎵緙栬瘧鐨勬鍒欒〃杈懼紡錛夎繘琛屽尮閰嶆煡鎵劇殑錛屾墍鏈夊線Matcher鐨勮緭­鍏ラ兘鏄氳繃CharSequence鎺ュ彛鎻愪緵鐨勶紝榪欐牱鍋氱殑鐩殑鍦ㄤ簬鍙互鏀寔瀵逛粠澶氬厓鍖栫殑鏁版嵁婧愭墍鎻愪緵鐨勬暟鎹繘琛屽尮閰嶅伐浣溿?

鎴戜滑鍒嗗埆鏉ョ湅鐪嬪悇鏂規硶鐨勪嬌鐢細

鈽卪atches()/lookingAt ()/find()錛?
涓涓狹atcher瀵硅薄鏄敱涓涓狿attern瀵硅薄璋冪敤鍏秏atcher()鏂規硶鑰岀敓鎴愮殑錛屼竴鏃﹁Matcher瀵硅薄鐢熸垚,瀹冨氨鍙互榪涜涓夌涓嶅悓鐨勫尮閰嶆煡鎵炬搷浣?#173;錛?

matches()鏂規硶灝濊瘯瀵規暣涓洰鏍囧瓧絎﹀睍寮鍖歸厤媯嫻嬶紝涔熷氨鏄彧鏈夋暣涓洰鏍囧瓧絎︿覆瀹屽叏鍖歸厤鏃舵墠榪斿洖鐪熷箋?

lookingAt
()鏂規硶灝嗘嫻嬬洰鏍囧瓧絎︿覆鏄惁浠ュ尮閰嶇殑瀛愪覆璧峰銆?
find()鏂規硶灝濊瘯鍦ㄧ洰鏍囧瓧絎︿覆閲屾煡鎵句笅涓涓尮閰嶅瓙涓層?

浠ヤ笂涓変釜鏂規硶閮藉皢榪斿洖涓涓竷灝斿兼潵琛ㄦ槑鎴愬姛涓庡惁銆?

鈽卹eplaceAll ()/appendReplacement()/appendTail()錛?
Matcher綾誨悓鏃舵彁渚涗簡鍥涗釜灝嗗尮閰嶅瓙涓叉浛鎹㈡垚鎸囧畾瀛楃涓茬殑鏂規硶錛?

replaceAll()
replaceFirst()
appendReplacement()
appendTail()

replaceAll()涓巖eplaceFirst()鐨勭敤娉曢兘姣旇緝綆鍗曪紝璇風湅涓婇潰鏂規硶鐨勮В閲娿傛垜浠富瑕侀噸鐐逛簡瑙d竴涓媋ppendReplacement()­鍜宎ppendTail()鏂規硶銆?

appendReplacement(StringBuffer sb, String replacement)
灝嗗綋鍓嶅尮閰嶅瓙涓叉浛鎹負鎸囧畾瀛楃涓詫紝騫朵笖灝嗘浛鎹㈠悗鐨勫瓙涓蹭互鍙婂叾涔嬪墠鍒頒笂嬈″尮閰嶅瓙涓蹭箣鍚庣殑瀛楃涓叉娣誨姞鍒頒竴涓猄tringBuffer瀵硅薄閲岋紝鑰宎ppendTai­l(StringBuffer
sb)
鏂規硶鍒欏皢鏈鍚庝竴嬈″尮閰嶅伐浣滃悗鍓╀綑鐨勫瓧絎︿覆娣誨姞鍒頒竴涓猄tringBuffer瀵硅薄閲屻?

渚嬪錛屾湁瀛楃涓瞗atcatfatcatfat,鍋囪鏃㈡湁姝e垯琛ㄨ揪寮忔ā寮忎負"cat"錛岀涓嬈″尮閰嶅悗璋冪敤appendReplacement(sb,"dog"­),閭d箞榪欐椂StringBuffer
sb鐨勫唴瀹逛負fatdog錛屼篃灝辨槸fatcat涓殑cat琚浛鎹負dog騫朵笖涓庡尮閰嶅瓙涓插墠鐨勫唴瀹瑰姞鍒皊b閲岋紝鑰岀浜屾鍖歸厤鍚庤皟鐢╝ppendReplaceme­nt(sb,"dog")錛岄偅涔坰b鐨勫唴瀹瑰氨鍙樹負fatdogfatdog錛屽鏋滄渶鍚庡啀璋冪敤涓嬈ppendTail錛坰b錛?閭d箞sb鏈緇堢殑鍐呭灝嗘槸fatd­ogfatdogfat銆?

榪樻槸鏈夌偣妯$硦錛熼偅涔堟垜浠潵鐪嬩釜綆鍗曠殑紼嬪簭錛?
//璇ヤ緥灝嗘妸鍙ュ瓙閲岀殑"Kelvin"鏀逛負"Kevin"
import java.util.regex.*;
public class MatcherTest{
public static void main(String[] args)
throws Exception {
//鐢熸垚Pattern瀵硅薄騫朵笖緙栬瘧涓涓畝鍗曠殑姝e垯琛ㄨ揪寮?Kelvin"
Pattern p = Pattern.compile("Kevin");
//鐢?/b>Pattern綾葷殑matcher()鏂規硶鐢熸垚涓涓狹atcher瀵硅薄
Matcher m = p.matcher("Kelvin Li and Kelvin Chan are both working in
Kelvin Chen's KelvinSoftShop company");
StringBuffer sb = new StringBuffer();
int i=0;
//浣跨敤find()鏂規硶鏌ユ壘絎竴涓尮閰嶇殑瀵硅薄
boolean result = m.find();
//浣跨敤寰幆灝嗗彞瀛愰噷鎵鏈夌殑kelvin鎵懼嚭騫舵浛鎹㈠啀灝嗗唴瀹瑰姞鍒皊b閲?
while(result) {
i++;
m.appendReplacement(sb, "Kevin");
System.out.println("絎?+i+"嬈″尮閰嶅悗sb鐨勫唴瀹規槸錛?+sb);
//緇х畫鏌ユ壘涓嬩竴涓尮閰嶅璞?
result = m.find();

}

//鏈鍚庤皟鐢╝ppendTail()鏂規硶灝嗘渶鍚庝竴嬈″尮閰嶅悗鐨勫墿浣欏瓧絎︿覆鍔犲埌sb閲岋紱
m.appendTail(sb);
System.out.println("璋冪敤m.appendTail(sb)鍚巗b鐨勬渶緇堝唴瀹規槸:"+
sb.toString());

}
}

鏈緇堣緭鍑虹粨鏋滀負錛?
絎?嬈″尮閰嶅悗sb鐨勫唴瀹規槸錛欿evin
絎?嬈″尮閰嶅悗sb鐨勫唴瀹規槸錛欿evin Li and Kevin
絎?嬈″尮閰嶅悗sb鐨勫唴瀹規槸錛欿evin Li and Kevin Chan are both
working in Kevin
絎?嬈″尮閰嶅悗sb鐨勫唴瀹規槸錛欿evin Li and Kevin Chan are both
working in Kevin Chen's Kevin
璋冪敤m.appendTail(sb)鍚巗b鐨勬渶緇堝唴瀹規槸錛欿evin Li and Kevin Chan
are both working in Kevin Chen's KevinSoftShop company.

鐪嬩簡涓婇潰榪欎釜渚嬬▼鏄惁瀵筧ppendReplacement()錛宎ppendTail()涓や釜鏂規硶鐨勪嬌鐢ㄦ洿娓呮鍛紝濡傛灉榪樻槸涓嶅お鑲畾鏈濂借嚜宸卞姩鎵嬪啓鍑犺浠g爜嫻?#173;璇曚竴涓嬨?

鈽単roup()/group(int group)/groupCount()錛?
璇ョ郴鍒楁柟娉曚笌鎴戜滑鍦ㄤ笂綃囦粙緇嶇殑Jakarta-ORO涓殑MatchResult
.group()鏂規硶綾諱技(鏈夊叧Jakarta-ORO璇峰弬鑰冧笂綃囩殑鍐呭)錛岄兘鏄榪斿洖涓庣粍鍖歸厤鐨勫瓙涓插唴瀹癸紝涓嬮潰浠g爜灝嗗緢濂借В閲婂叾鐢ㄦ硶錛?

import java.util.regex.*;

public class GroupTest{
public static void main(String[] args)
throws Exception {
Pattern p = Pattern.compile("(ca)(t)");
Matcher m = p.matcher("one cat,two cats in the yard");
StringBuffer sb = new StringBuffer();
boolean result = m.find();
System.out.println("璇ユ鏌ユ壘鑾峰緱鍖歸厤緇勭殑鏁伴噺涓猴細"+m.groupCount());
for(int i=1;i<=m

}
}

杈撳嚭涓猴細
璇ユ鏌ユ壘鑾峰緱鍖歸厤緇勭殑鏁伴噺涓猴細2
絎?緇勭殑瀛愪覆鍐呭涓猴細ca
絎?緇勭殑瀛愪覆鍐呭涓猴細t

Matcher瀵硅薄鐨勫叾浠栨柟娉曞洜姣旇緝濂界悊瑙d笖鐢變簬綃囧箙鏈夐檺錛岃璇昏呰嚜宸辯紪紼嬮獙璇併?

4錛庝竴涓楠孍mail鍦板潃鐨勫皬紼嬪簭錛?
鏈鍚庢垜浠潵鐪嬩竴涓楠孍mail鍦板潃鐨勪緥紼嬶紝璇ョ▼搴忔槸鐢ㄦ潵媯楠屼竴涓緭鍏ョ殑EMAIL鍦板潃閲屾墍鍖呭惈鐨勫瓧絎︽槸鍚﹀悎娉曪紝铏界劧榪欎笉鏄竴涓畬鏁寸殑EMAIL鍦板潃媯楠岀▼搴忥紝­瀹冧笉鑳芥楠屾墍鏈夊彲鑳藉嚭鐜扮殑鎯呭喌錛屼絾鍦ㄥ繀瑕佹椂鎮ㄥ彲浠ュ湪鍏跺熀紜涓婂鍔犳墍闇鍔熻兘銆?

import java.util.regex.*;
public class Email {
public static void main(String[] args) throws Exception {
String input = args[0];
//媯嫻嬭緭鍏ョ殑EMAIL鍦板潃鏄惁浠?
闈炴硶絎﹀彿"."鎴?@"浣滀負璧峰瀛楃
Pattern p = Pattern.compile("^\.|^\@");
Matcher m = p.matcher(input);
if (m
//媯嫻嬫槸鍚︿互"www."涓鴻搗濮?
p = Pattern.compile("^www\.");
m = p.matcher(input);
if (m
//媯嫻嬫槸鍚﹀寘鍚潪娉曞瓧絎?
p = Pattern.compile("[^A-Za-z0-9\.\@_\-~#]+");
m = p.matcher(input);
StringBuffer sb = new StringBuffer();
boolean result = m.find();
boolean deletedIllegalChars = false;
while(result) {
//濡傛灉鎵懼埌浜嗛潪娉曞瓧絎﹂偅涔堝氨璁句笅鏍囪
deletedIllegalChars = true;
//濡傛灉閲岄潰鍖呭惈闈炴硶瀛楃濡傚啋鍙峰弻寮曞彿絳夛紝閭d箞灝辨妸浠栦滑娑堝幓錛屽姞鍒癝B閲岄潰
m.appendReplacement(sb, "");
result = m.find();

}

m.appendTail(sb);
input = sb.toString();
if (deletedIllegalChars) {
System.out.println("杈撳叆鐨凟MAIL鍦板潃閲屽寘鍚湁鍐掑彿銆侀楀彿絳夐潪娉曞瓧絎︼紝璇蜂慨鏀?);
System.out.println("鎮ㄧ幇鍦ㄧ殑杈撳叆涓? "+args[0]);
System.out.println("淇敼鍚庡悎娉曠殑鍦板潃搴旂被浼? "+input);

}
}
}

渚嬪錛屾垜浠湪鍛戒護琛岃緭鍏ワ細java Email www.ke...@163.net

閭d箞杈撳嚭緇撴灉灝嗕細鏄細EMAIL鍦板潃涓嶈兘浠?www.'璧峰

濡傛灉杈撳叆鐨凟MAIL涓篅k...@163.net

鍒欒緭鍑轟負錛欵MAIL鍦板潃涓嶈兘浠?.'鎴?@'浣滀負璧峰瀛楃

褰撹緭鍏ヤ負錛歝gjmail...@163.net

閭d箞杈撳嚭灝辨槸錛?

杈撳叆鐨凟MAIL鍦板潃閲屽寘鍚湁鍐掑彿銆侀楀彿絳夐潪娉曞瓧絎︼紝璇蜂慨鏀?
鎮ㄧ幇鍦ㄧ殑杈撳叆涓? cgjmail...@163.net
淇敼鍚庡悎娉曠殑鍦板潃搴旂被浼? cgjm...@163.net

5錛庢葷粨錛?
鏈枃浠嬬粛浜唈dk1.4.0-beta3閲屾鍒欒〃杈懼紡搴?-java.util.regex涓殑綾諱互鍙婂叾鏂規硶錛屽鏋滅粨鍚堜笌涓婁竴綃囦腑鎵浠嬬粛鐨?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Jakarta
-OR­O
API浣滄瘮杈冿紝璇昏呬細鏇村鏄撴帉鎻¤API鐨勪嬌鐢紝褰撶劧璇ュ簱鐨勬ц兘灝嗗湪鏈潵鐨勬棩瀛愰噷涓嶆柇鎵╁睍錛屽笇鏈涜幏寰楁渶鏂頒俊鎭殑璇昏呮渶濂藉埌鍙婃椂鍒癝UN鐨勭綉绔欏幓浜嗚В銆?

6錛庣粨鏉熻錛?
鏈潵璁″垝鍐嶅鍐欎竴綃囦粙緇嶄竴涓嬮渶浠樿垂鐨勬鍒欒〃杈懼紡搴撲腑杈冨叿浠h〃鎬х殑浣滃搧錛屼絾瑙夊緱鏃㈢劧鏈変簡鍏嶈垂涓斾紭縐鐨勬鍒欒〃杈懼紡搴撳彲浠ヤ嬌鐢紝浣曞繀榪樿鍘繪壘闇浠樿垂鐨勫憿錛岀浉淇″緢澶氳鑰?#173;涔熸槸榪欎箞鎯崇殑:錛屾墍浠ユ湁鍏磋叮浜嗚В鏇村鍏朵粬鐨勭涓夋柟姝e垯琛ㄨ揪寮忓簱鐨勬湅鍙嬪彲浠ヨ嚜宸卞埌緗戜笂鏌ユ壘鎴栬呭埌鎴戝湪鍙傝冭祫鏂欓噷鎻愪緵鐨勭綉鍧鍘葷湅鐪嬨?

鍙傝冭祫鏂?

java.util.regex鐨勫府鍔╂枃妗?
Dana Nourie 鍜孧ike McCloskey鎵鍐欑殑Regular Expressions and the
Java™ Programming Language
闇瑕佹洿澶氱殑絎笁鏂規鍒欒〃杈懼紡璧勬簮浠ュ強鍩轟簬瀹冧滑鎵寮鍙戠殑搴旂敤紼嬪簭璇風湅http://www.meurrens.org/ip-Links/java/regex/index.html

鍏充簬浣滆?
闄堝箍浣?Kevin
Chen,姹曞ご澶у鐢靛瓙淇℃伅宸ョ▼緋誨伐縐戝澹紝鍙版咕澶ф柊鍑虹増紺劇彔嫻峰尯寮鍙戦儴錛岀幇姝e洿緇曚腑鏃ラ煩鐢靛瓙璧勬枡浣跨敤JAVA寮鍙戠數瀛愯瘝鍏哥瓑鐩稿叧欏圭洰銆傚彲閫氳繃E-mail:c­gjm...@163.net浜庝粬鑱旂郴銆?/p>

]]>
鏁存竻 java 涓殑 綾匯佹娊璞$被銆佹帴鍙c佺戶鎵褲佸璞?/title><link>http://m.tkk7.com/onejavaer/articles/100858.html</link><dc:creator>鏆楀綺劇伒</dc:creator><author>鏆楀綺劇伒</author><pubDate>Tue, 27 Feb 2007 01:43:00 GMT</pubDate><guid>http://m.tkk7.com/onejavaer/articles/100858.html</guid><wfw:comment>http://m.tkk7.com/onejavaer/comments/100858.html</wfw:comment><comments>http://m.tkk7.com/onejavaer/articles/100858.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/onejavaer/comments/commentRss/100858.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/onejavaer/services/trackbacks/100858.html</trackback:ping><description><![CDATA[ <p> <font color="#a52a2a"> <font color="#006400">鏈枃浠ヤ竴鏉¢緳鐨勫艦寮忎竴嬈℃цВ鍐抽棶棰樸?/font> <br /> <br />綾繪槸騫挎硾鐨勬蹇碉紝琛ㄧず涓涓湁鍏卞悓鎬ц川鐨勭兢浣撱傚錛氫漢綾匯?br /><br />浠g爜錛?br />      <font color="#a52a2a"> // 澹版槑涓涓被“Human”</font><font color="#000000"><br />       <font size="2">     <strong>class Human{<br />            private String name;<br />            public String getName(){<br />                               return name;<br />                                              }<br />           public void setName(String value){<br />                                         this.name = value;<br />                                                  }<br />                                  //......<br />                               }</strong></font></font><br /><br /><font color="#a52a2a">瀵硅薄鎸囩殑鏄叿浣撶殑涓涓疄瀹炲湪鍦ㄧ殑涓滆タ銆傚銆佸紶涓夈佹潕鍥涖?br /></font><br />浠g爜錛?br />       <font color="#000000">                </font><font color="#a52a2a">   <strong><font color="#000000" size="2">Human zhangsan = new Human();</font></strong><br /><br /></font>鍥撅細<br />     <img title="ren" height="308" alt="浜?png" src="http://m.tkk7.com/images/blogjava_net/lusm/浜?png" width="576" border="0" /><br /><br />鍥句腑鎴戜滑鎬庝箞鍒涘緩寮犱笁鍜屾潕鍥涘憿錛燂紵鎴戜滑鍓嶉潰鐨勪唬鐮佸ソ鍍忚繕娌℃秹鍙婏紝鎭╁ソ錛岀湅涓嬮潰<br /><font color="#000000"><br /><font size="2"><strong>Human human = new Human();</strong><br /></font><br /><font color="#a52a2a">紼嬪簭鎵ц鍒拌繖閲屼箣鍚庯紝java铏氭嫙鏈哄皢浼氬湪鍐呭瓨涓垱寤轟竴涓?#160;Human 瀵硅薄錛屽茍灝嗚繖涓璞$殑寮曠敤璧嬬粰 human 鍙橀噺銆?/font><br /></font><br />鎺ョ潃錛?font color="#000000"><strong><font size="2">human.setName("寮犱笁"); human.setName("鏉庡洓");</font></strong><font color="#a52a2a">濂戒簡瀵硅薄錛堝疄渚嬶級鍒涘緩濂戒簡錛屽懙鍛?/font>錛?br /><br /><font color="#a52a2a">鍥撅細<br /></font>      <img title="浜?" height="280" alt="浜?.png" src="http://m.tkk7.com/images/blogjava_net/lusm/浜?.png" width="564" border="0" /><br /></font><br /><font color="#a52a2a">“浜?#8221;鏄竴涓?font color="#ff0000">鍩虹被</font>錛屽垯“鐢蜂漢”鏄?#8220;浜?#8221;鐨勪竴涓?font color="#ff0000">瀛愮被</font>銆傚鏋?#8220;寮犱笁”鏄竴涓?#8220;鐢蜂漢”錛屼篃灝辨槸璇?#8220;寮犱笁”鏄?#8220;鐢蜂漢”鐨勪竴涓璞★紝閭d箞鏄劇劧“寮犱笁”涔熸槸“浜?#8221;榪欎釜鍩虹被鐨勪竴涓璞°?br /></font>   <strong><font color="#000000"></font></strong><strong><font color="#000000" size="2">class nanren extends  human(String args[ ]){<br />           //.............<br />        }</font></strong><br /><br />鏂規硶鏄被鐨勮涓猴紝濡備漢浼氱瑧銆佷細鍧愩佷細璧拌礬 涓鏍楓?br /><br />鍥撅細<br />      <img title="浜?" height="280" alt="浜?.png" src="http://m.tkk7.com/images/blogjava_net/lusm/浜?.png" width="564" border="0" /><br />        <br /> </font> <font color="#a52a2a">浠g爜錛?br /></font> <font color="#a52a2a">        <font size="2">   <strong><font color="#000000">zhangsan.go();zhangsan.xiao();zhangsan.shuijiao();zhangsan.qita();</font></strong></font><br /><br /><font color="#000000"><font color="#a52a2a">鎺ュ彛鍙畾涔変簡涓浜涙柟娉曪紝鑰屾病鏈夊疄鐜拌繖浜涙柟娉曪紝瀹冭瀹氫簡瀹炵幇鎺ュ彛鐨勭被蹇呴』鍏峰鐨勬柟娉曪紙鑳藉姏錛夛紝<font color="#ff0000">瀹冨彧鏄竴涓瀹?/font>銆?/font><br /></font><br />鎴戜滑瑙勫畾錛氬彧瑕佹槸浜哄氨鍙互璧拌礬銆佺瑧銆佺潯瑙夈佸仛鍏朵粬鐨勪簨錛屼簬鏄垜浠敤浠g爜瀹炵幇榪欎釜瑙勫畾<br /><font color="#000000"><strong><font size="2">public interface you_are_human{<br />public void go();<br />public void xiao();<br />public void shuijiao();<br />public void qita();<br />}</font></strong><br /><font color="#a52a2a">榪欐椂錛屽紶涓夋兂鍋氫漢錛屼絾浠栧彧鎯蟲嫢鏈夎蛋璺拰絎戠殑鑳藉姏銆傞鍏堬紝浠栧繀欏誨0鏄庤嚜宸辨槸浜猴紝涔熷氨鏄墠闈㈠浜虹殑瑙勫畾錛?br />鐒跺悗鎯沖仛浠涔堢敱浠栬嚜宸卞喅瀹氾細<br /><br /></font><strong><font size="2">public class zhangsan extends Human implements you_are_human{<br />public void go(){<br />// ......<br />}<br />public void xiao(){<br />// ......<br />}<br />}</font></strong></font><br />浣跨敤鐨勬椂鍊欙細<br /><font color="#000000" size="2"><strong>you_are_human  zhangsan = new you_are_human();<br /><br /></strong></font></font> <strong> <font size="2">zhangsan.go();<br /><br />zhangsan.xiao();</font> </strong> <font color="#a52a2a"> <br /> <br />閭f湁鐨勪漢灝變細闂紝榪欏拰鍓嶉潰鎴戝畾涔夌被鏈変粈涔堝尯鍒紱<br /><br />榪欐槸鍥犱負錛歫ava鐨勭被鐨勭戶鎵挎槸浠庝笂鍒頒笅鐨勶紝鐖風埛1 銆嬭佺埜1 銆嬪効瀛?</font> </p> <p> <font color="#a52a2a">                                                                      鐖風埛2   銆嬭佺埜2  銆?#160;鍎垮瓙2<br />     鑰屼笉鑳芥槸錛氱埛鐖?  銆?#160;鍎垮瓙1<br /><br />榪欐牱灝變貢濂椾簡 錛屾槸涓嶏紝闂圭瑧璇濓紱鎵浠ワ紝綾昏瀹氫簡涓嶇戶鎵垮叧緋伙紝闃叉涔卞錛屼嬌緇撴瀯鍙樺緱娓呮櫚銆?br /><br />鎵浠ワ紝褰撴垜浠嬌鐢ㄦ爲鍨嬬粨鏋勬椂錛屼嬌鐢ㄧ被銆?br /><br /><br /></font> </p> <p> <font color="#a52a2a">鐢變簬錛屽湪鐢熸椿涓繕鏈夎澶氳繖鏍風殑鎯呭喌錛屽錛屽紶涓夋槸涓浗浜猴紝閭e紶涓変粬涔熸槸緹庡浗浜哄弻閲嶈韓浠姐?br />                    <br />                                                                   鍐嶅錛屾潕鍥涙槸java宸ョ▼甯?涔熸槸鍘ㄥ笀銆?br />閭f庝箞鍔烇紵錛?br /><br />鎴戜滑鍙互榪欎箞鍋氾細<br /></font> <font color="#a52a2a">瑙勫畾澶氫釜韜喚</font> <font color="#a52a2a"> <font color="#000000"> <strong> <br /> <font size="2">public interface zhengjian{<br />interface China(){<br />public void China_L(){<br />//.................<br />                             }<br />                           }<br />interface  USA(){<br />public  void USA_L(){<br />//...........<br />           }</font> </strong> <font size="2"> <br /> </font> </font> </font> <font color="#000000" size="2">}<br /></font> <font color="#a52a2a"> <br /> <strong> <font color="#000000" size="2">public class zhangsan extends zhengjian implements Chna , USA{<br />public void China_L(){<br />// ......<br />}<br />public void USA_L(){<br />// ......<br />}<br />}</font> </strong> <br /> <br />褰撳紶涓夊幓緹庡浗鏃訛紝鑰佺編鍙粬鎷夸釜緇胯瘉鏉ョ湅錛?br /><br /><strong><font color="#000000" size="2">zhangsan.USA_L();</font></strong><br /><br /></font> </p> <p> <font color="#a52a2a"> </font> </p> <p> <font color="#a52a2a">鍛靛懙錛屽啀涓句釜渚嬪瓙澶у灝辨竻妤氫簡錛?br /><br />HP鏈?#8220;涓夋槦”鍜?#8220;IBM”涓ょ錛屾垜閫氬父鑰岃█涓嶅彲鑳戒竴涓狧P鏄棦鏄?#8220;涓夋槦”鍙堟槸“IBM”鐨勫惂~~~~~~~~綾?br />          “瀹跺涵寮?#8221;鍜?#8220;鍔炲叕寮?#8221;涓ょ錛屼絾寰寰鎴戜滑鑳戒拱鍒版嫢鏈変袱縐嶆寮忕浉緇撳悎鍘傚搧鏄惂    ~~~~~~~~~~~鎺ュ彛<br /><br />涓浗浜鴻璧鋒潵錛?u>綾繪湁鐐?#8220;灝佸緩涓栬鍒?#8221;錛屾帴鍙f湁鐐?#8220;榪濆弽甯哥悊涔變雞”錛屽懙鍛?img height="20" src="http://m.tkk7.com/Emoticons/QQ/lol.gif" width="20" border="0" />寮涓帺絎?/u>銆?br /><br />榪欐牱璇村畬澶у鍐嶅幓鐪嬩簺鐩稿叧鏂囩珷灝變細瑙夊緱寰堝鏄撲簡 鍛靛懙<img height="20" src="http://m.tkk7.com/Emoticons/QQ/icon17.gif" width="20" border="0" /><br /><br />鍓╀笅鎶借薄綾誨氨綆鍗曚簡錛岄偅鏄娊璞$被錛?font color="#000000"><font color="#a52a2a">abstract</font>錛?/font>浠栬繕鏄被錛坈lass)錛屽彧涓嶈繃鏄娊璞$殑緗簡銆?br /><br />鎶借薄綾?font color="#000000"><font color="#a52a2a">瀵規煇鍏蜂綋綾誨瀷鐨勯儴鍒嗗疄鐜?-----鎶借薄綾繪槸瀵瑰叿浣撶殑鎶借薄鏂規硶鐗瑰緛鍖呮嫭錛?font color="#ff0000">鏂規硶鐨勫悕瀛椼佸弬鏁扮殑鏁扮洰銆佸弬鏁扮殑綾誨瀷銆?br /><br />涓嶅寘鎷細榪斿洖綾誨瀷銆佸弬鏁板悕瀛椼佸拰鎶涘嚭鐨勫紓甯搞?br /></font><br /><a target="_blank"><font color="#a52a2a">java</font></a><font color="#a52a2a">鎺ュ彛錛堟娊璞$被錛夌敤鏉ュ0鏄庝竴涓柊鐨勭被鍨?<font color="#a52a2a">Java璁捐甯堝簲褰撲富瑕佷嬌鐢ㄦ帴鍙e拰鎶借薄綾誨皢杞歡鍗曚綅涓庡唴閮ㄥ拰澶栭儴<u>鑰﹀悎</u>(杞歡宸ョ▼涓唴瀹?璧鋒潵銆?br /><br /></font><font color="#a52a2a">鍦ㄧ悊鎯崇殑鎯呭喌涓嬶紝涓涓叿浣撶被搴斿綋鍙疄鐜版帴鍙e拰鎶借薄綾諱腑澹版槑鐨勬柟娉曪紝鑰屼笉搴斿綋緇欏嚭澶氫綑鐨勬柟娉曪紒<br /><br /></font><font color="#a52a2a">鎶借薄綾諱粎鎻愪緵涓涓被鐨勯儴鍒嗗疄鐜般傛娊璞$被鍙互鏈夊疄渚嬪彉閲忋佷互鍙婁竴涓垨澶氫釜鏋勯犲嚱鏁般?br /><br /></font>浜鴻繖涓蹇靛鎶借薄浜嗗惂錛?br /><font color="#000000">public  abstract   class   Human{...}  <br /><font color="#a52a2a"><br />鐢蜂漢涔熸槸</font> <br />public   abstract   class  man{...}    </font><br /></font><br /></font><font color="#a52a2a">鏈変竴鐐瑰繀欏昏娓咃細<font color="#ff0000">鎺ュ彛涓嶈兘緇ф壙鎶借薄綾伙紝</font><font color="#a52a2a">鎺ュ彛鍙兘緇ф壙瀹炲疄鍦ㄥ湪鐨勭被錛?br /><br />濡傦紝鎴戝彲浠ヤ負鏌愪釜HP鍘傚搧錛堢被錛夎瀹氫竴縐嶈鑼冿紙鎺ュ彛錛夛紝浣嗙敱浜庡悇涓巶瀹舵帹闄堝嚭鏂幫紝鎵浠ワ紝鎴戝緢闅懼鏌愪竴綾誨瀷鍘傚搧瑙勫畾錛?#8220;瀹跺涵鍨媓p”灝卞緢闅句笅涓粨璁猴紙鎺ュ彛錛夈?br /></font><br /><br /><font color="#006400"><strong>浠庤蔣浠朵紭鍖栬搴︽潵鑰冭檻綾誨拰鎺ュ彛闂銆傜被class鏉$悊娓呮鍐呰仛鎬уソ錛岀敤浜庤蔣浠舵ā鍧楀唴閮ㄥ疄鐜幫紙姹借濺鐨勫唴閮ㄦ満<br /><br />姊幫級錛涙帴鍙nterface寰堢伒媧昏﹀悎鎬уソ錛岀敤浜庢ā鍧楀閮ㄥ疄鐜幫紙濡傦紝姹借濺鎿嶄綔鏉跨殑鎸夐挳錛夈備粠鑰屽疄鐜板己鍐呰仛銆佹澗鑰﹀悎<br /><br />鐨勮蔣浠惰璁℃濇兂銆?/strong></font><br /></font></font></font> </p> <img src ="http://m.tkk7.com/onejavaer/aggbug/100858.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/onejavaer/" target="_blank">鏆楀綺劇伒</a> 2007-02-27 09:43 <a href="http://m.tkk7.com/onejavaer/articles/100858.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>include鎸囦護鍜宨nclude鍔ㄤ綔鐨勫尯鍒槸浠涔?http://m.tkk7.com/onejavaer/articles/80979.html鏆楀綺劇伒鏆楀綺劇伒Mon, 13 Nov 2006 13:23:00 GMThttp://m.tkk7.com/onejavaer/articles/80979.htmlhttp://m.tkk7.com/onejavaer/comments/80979.htmlhttp://m.tkk7.com/onejavaer/articles/80979.html#Feedback3http://m.tkk7.com/onejavaer/comments/commentRss/80979.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/80979.html     include鎸囦護鍜宨nclude鍔ㄤ綔閮借兘瀹炵幇灝嗗閮ㄦ枃妗e寘鍚埌JSP鏂囨。涓殑鍔熻兘錛屽悕縐頒篃寰堢浉浼鹼紝闈炲父瀹規槗娣鋒穯銆俰nclude鎸囦護鍜宨nclude鍔ㄤ綔鍒板簳鏈変粈涔堝垎鍒紝鍝竴縐嶆柟寮忎細鏇村ソ鍛紵
1.include鎸囦護
    include鍙互鍦↗SP欏甸潰杞崲鎴怱ervlet涔嬪墠錛屽皢JSP浠g爜鎻掑叆鍏朵腑銆傚畠鐨勪富瑕佷紭鐐規槸鍔熻兘寮哄ぇ錛屾墍鍖呭惈鐨勪唬鐮佸彲浠ュ惈鏈夋諱綋涓婂獎鍝嶄富欏甸潰鐨凧SP鏋勯狅紝姣斿灞炴с佹柟娉曠殑瀹氫箟鍜屾枃妗g被鍨嬬殑璁懼畾銆傚畠鐨勭己鐐規槸闅句簬緇存姢鍙琚寘鍚殑欏甸潰鍙戠敓鏇存敼錛屽氨寰楁洿鏀逛富欏甸潰錛岃繖鏄洜涓轟富欏甸潰涓嶄細鑷姩鍦版煡鐪嬭鍖呭惈鐨勯〉闈㈡槸鍚﹀彂鐢熸洿鏀廣?br />include鎸囦護鐨勮娉曟牸寮忓涓?br />    <%@ include file="Relative Url"%>

2.include鍔ㄤ綔
 
jsp:include鍔ㄤ綔鏄湪涓婚〉闈㈣璇鋒眰鏃訛紝灝嗘綰ч〉闈㈢殑杈撳嚭鍖呭惈榪涙潵銆傚敖綆¤鍖呭惈鐨勯〉闈㈢殑杈撳嚭涓笉鑳藉惈鏈塉SP錛屼絾榪欎簺欏甸潰鍙互鏄叾浠栬祫婧愭墍浜х敓鐨勭粨鏋溿傛湇鍔″櫒鎸夌収姝e父鐨勬柟寮忓鎸囧悜琚寘鍚祫婧愮殑URL榪涜瑙i噴錛屽洜鑰岃繖涓猆RL鍙互鏄疭ervlet鎴朖SP欏甸潰銆傛湇鍔″櫒浠ラ氬父鐨勬柟寮忚繍琛岃鍖呭惈鐨勯〉闈紝灝嗕駭鐢熺殑杈撳嚭鏀懼埌涓婚〉闈腑錛岃繖縐嶆柟寮忎笌RequestDispatcher綾葷殑include鏂規硶涓鑷淬傚畠鐨勪紭鐐規槸鍦ㄨ鍖呭惈鐨勯〉闈㈠彂鐢熸洿鏀規椂錛屾棤欏誨涓婚〉闈㈠仛鍑轟慨鏀廣傚畠鐨勭己鐐規槸鎵鍖呭惈鐨勬槸嬈$駭欏甸潰鐨勮緭鍑猴紝鑰岄潪嬈$駭欏甸潰鐨勫疄闄呬唬鐮侊紝鎵浠ュ湪琚寘鍚殑欏甸潰涓笉鑳戒嬌鐢ㄤ換浣曟湁鍙兘鍦ㄦ暣浣撲笂褰卞搷涓婚〉闈㈢殑JSP鏋勯犮?br />  jsp:include鍔ㄤ綔鐨勫畬鏁磋娉曞涓?br /> <jsp:include page="Relative path to resource" flush="true">
  鍏朵腑jsp:include涔嬮棿涓嶈兘鏈夌┖鏍鹼紝page灞炴ф寚瀹氳鍖呭惈鐨勯〉闈紝榪欎釜灞炴ф槸蹇呴渶鐨勶紝鏄寚鍚戞煇縐嶈祫婧愮殑鐩稿URL銆傚鏋滆繖涓浉瀵筓RL涓嶆槸浠?寮澶達紝鍒欏皢鍏惰В閲婁負鐩稿浜庝富欏甸潰鐨勮礬寰勶紱濡傛灉鏄互/寮澶達紝鏄繖涓猆RL琚В閲婁負鐩稿浜庡綋鍓峎EB搴旂敤鐨勬牴鐩綍錛岃屼笉鏄湇鍔″櫒鐨勬牴鐩綍錛岃繖鏄洜涓鴻URL鏄敱鏈嶅姟鍣ㄦ潵瑙i噴鐨勶紝涓嶆槸鐢辯敤鎴風殑嫻忚鍣ㄦ潵瑙i噴鐨勩傚儚涓嬮潰榪欒浠g爜錛屾槸鐢辯敤鎴風殑嫻忚鍣ㄨ繘琛岃В閲婄殑錛屽洜姝や細鎸夌収鐩稿浜庢湇鍔″櫒鐨勬牴鐩綍榪涜瑙i噴銆?br />  flush灞炴ф槸涓涓彲閫夌殑嬈$駭灞炴э紝榛樿鍊間負false錛屽畠鎸囧畾鍦ㄥ皢欏甸潰鍖呭惈榪涙潵涔嬪墠鏄惁搴旇娓呯┖涓婚〉闈㈢殑杈撳嚭嫻併?br />   娉ㄦ剰錛氬湪JSP1.1涓紝flush鏄繀闇鐨勫睘鎬э紝鑰屼笖鑱氫細鍙兘鏄痶rue銆?br />3.涓よ呯殑鍖哄埆鍜屾瘮杈?/strong>
   jsp:include鍔ㄤ綔鍜宨nclude鎸囦護涔嬮棿鐨勬牴鏈х殑涓嶅悓鍦ㄤ簬瀹冧滑琚皟鐢ㄧ殑鏃墮棿銆俲sp:include鍔ㄤ綔鍦ㄨ姹傛湡闂磋嬋媧伙紝鑰宨nclude鎸囦護鍦ㄩ〉闈㈣漿鎹㈡湡闂磋嬋媧匯?br />   涓よ呬箣闂寸殑宸紓鍐沖畾鐫瀹冧滑鍦ㄤ嬌鐢ㄤ笂鐨勫尯鍒備嬌鐢╥nclude鎸囦護鐨勯〉闈㈣姣斾嬌鐢╦sp:include鍔ㄤ綔鐨勯〉闈㈤毦浜庣淮鎶ゃ傚墠闈㈠凡緇忚榪囷紝浣跨敤JSP鎸囦護錛屽鏋滃寘鍚殑JSP欏甸潰鍙戠敓鍙樺寲錛岄偅涔堢敤鍒拌繖涓〉闈㈢殑鎵鏈夐〉闈㈤兘闇瑕佹墜鍔ㄦ洿鏂般傚湪JSP鏈嶅姟鍣ㄧ殑鐩稿叧瑙勮寖涓茍娌¤姹傝兘澶熸嫻嬪嚭鍖呭惈鐨勬枃浠朵粈涔堟椂鍊欏彂鐢熸敼鍙橈紝瀹為檯涓婂ぇ澶氭暟鏈嶅姟鍣ㄩ〉閮芥湁鍘誨疄鐜拌繖縐嶆満鍒躲傝繖鏍峰氨浼氬鑷村崄鍒嗕弗閲嶇殑緇存姢闂錛岄渶瑕佽浣忔墍鏈夊寘鍚煇涓涓〉闈㈢殑鍏朵粬欏甸潰錛屾垨鑰呴噸鏂扮紪璇戞墍鏈夌殑欏甸潰錛屼互浣挎洿鏀硅兘澶熺敓鏁堛傚湪榪欑偣涓婏紝jsp:include灝變綋鐜板嚭浜嗗崄鍒嗗法澶х殑浼樺娍錛屽畠鍦ㄦ瘡嬈¤姹傛椂閲嶆柊鎶婅祫婧愬寘鍚繘鏉ャ傚湪瀹炵幇鏂囦歡鍖呭惈涓婏紝搴旇灝藉彲鑳藉湴浣跨敤jsp:include鍔ㄤ綔銆?br />   jsp:include鍔ㄤ綔鐩存瘮浜巌nclude鎸囦護鍦ㄧ淮鎶や笂鏈夌潃鏄庢樉浼樺娍錛岃宨nclude鎸囦護浠嶇劧鑳藉寰椾互瀛樺湪錛岃嚜鐒跺湪鍏朵粬鏂歸潰鏈夌壒孌婄殑浼樺娍銆傝繖涓紭鍔垮氨鏄痠nclude鎸囦護鐨勫姛鑳芥洿寮哄ぇ錛屾墽琛岄熷害涔熺◢蹇俰nclude鎸囦護鍏佽鎵鍖呭惈鐨勬枃浠朵腑鍚湁褰卞搷涓婚〉闈㈢殑JSP浠g爜錛屾瘮濡傚搷搴旀姤閫佺殑璁劇疆鍜屽睘鎬ф柟娉曠殑瀹氫箟銆備互涓嬭〃鏍煎氨鏄袱縐嶅寘鍚柟寮忕殑瀵規瘮:

 

include鎸囦護

jsp:include鍔ㄤ綔

璇硶鏍煎紡

<%@ include file=”..”%>

<jsp:include page=”..”>

鍙戠敓浣滅敤鐨勬椂闂?/span>

欏甸潰杞崲鏈熼棿

璇鋒眰鏈熼棿

鍖呭惈鐨勫唴瀹?/span>

鏂囦歡鐨勫疄闄呭唴瀹?/span>

欏甸潰鐨勮緭鍑?/span>

杞崲鎴愮殑Servlet

涓婚〉闈㈠拰鍖呭惈欏甸潰杞崲涓轟竴涓?/span>Servlet

涓婚〉闈㈠拰鍖呭惈欏甸潰杞崲涓虹嫭绔嬬殑Servlet

褰卞搷涓婚〉闈?/span>

鍙互

涓嶅彲浠?/span>

 

include鎸囦護

jsp:include鍔ㄤ綔

鍙戠敓鏇存敼鏃舵槸鍚﹂渶瑕佹樉寮忔洿鏀逛富欏甸潰

闇瑕?/span>

涓嶉渶瑕?/span>

緙栬瘧鏃墮棿

杈冩參錛嶈祫婧愬繀欏昏瑙f瀽

杈冨揩

鎵ц鏃墮棿

紼嶅揩

杈冩參錛嶆瘡嬈¤祫婧愬繀欏昏瑙f瀽

鐏墊椿鎬?/span>

杈冨樊錛嶉〉闈㈠悕縐板浐瀹?/span>

鏇村ソ錛嶉〉闈㈠彲浠ュ姩鎬佹寚瀹?/span>


   浜嗚В鍒癹sp:include鍔ㄤ綔鍜宨nclude鎸囦護鍚勮嚜鐨勫姛鑳藉拰鍖哄埆錛屽湪浣跨敤鏃訛紝灝卞彲浠ラ氳繃鑰冭檻鍚勬柟闈㈢殑鍥犵礌錛屾潵鍐沖畾浣跨敤鍝竴縐嶆柟寮忋傚敖綆″悇鑷兘鏈変竴瀹氱殑浼樼己鐐癸紝鍦ㄥ疄闄呬嬌鐢ㄤ腑錛岃繕鏄簲浼樺厛鑰冭檻浣跨敤jsp:include鍔ㄤ綔錛岃繖鏄洜涓哄畠鍦ㄤ唬鐮佺淮鎶や笂鐨勪紭鍔胯繙鑳滆繃鍏跺湪鍔熻兘涓婄殑涓嶈凍銆?

]]>
Web鏈嶅姟鍣ㄥ紑鍙戠幆澧冧笅鐨勭嚎紼嬪畨鍏ㄩ棶棰?/title><link>http://m.tkk7.com/onejavaer/articles/74100.html</link><dc:creator>鏆楀綺劇伒</dc:creator><author>鏆楀綺劇伒</author><pubDate>Mon, 09 Oct 2006 08:23:00 GMT</pubDate><guid>http://m.tkk7.com/onejavaer/articles/74100.html</guid><wfw:comment>http://m.tkk7.com/onejavaer/comments/74100.html</wfw:comment><comments>http://m.tkk7.com/onejavaer/articles/74100.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/onejavaer/comments/commentRss/74100.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/onejavaer/services/trackbacks/74100.html</trackback:ping><description><![CDATA[ <p>Servlet鏄湪澶氱嚎紼嬬幆澧冧笅鐨勩傚嵆鍙兘鏈夊涓姹傚彂緇欎竴涓猻ervelt瀹炰緥錛屾瘡涓姹傛槸涓涓嚎紼嬨?<br />struts涓嬬殑action涔熺被浼鹼紝鍚屾牱鍦ㄥ綰跨▼鐜涓嬨傚彲浠ュ弬鑰僺truts user guide: http://struts.apache.org/struts-action/userGuide/building_controller.html 涓殑Action Class Design Guidelines涓鑺? Write code for a multi-threaded environment - Our controller servlet creates only one instance of your Action class, and uses this one instance to service all requests. Thus, you need to write thread-safe Action classes. Follow the same guidelines you would use to write thread-safe Servlets. <br />璇?涓哄綰跨▼鐜緙栧啓浠g爜銆傛垜浠殑controller servlet鎸囨尌鍒涘緩浣犵殑Action 綾葷殑涓涓疄渚嬶紝鐢ㄦ瀹炰緥鏉ユ湇鍔℃墍鏈夌殑璇鋒眰銆傚洜姝わ紝浣犲繀欏葷紪鍐欑嚎紼嬪畨鍏ㄧ殑Action綾匯傞伒寰笌鍐欑嚎紼嬪畨鍏ㄧ殑servlet鍚屾牱鐨勬柟閽堛?<br /><br />1.浠涔堟槸綰跨▼瀹夊叏鐨勪唬鐮?<br />鍦ㄥ綰跨▼鐜涓嬭兘姝g‘鎵ц鐨勪唬鐮佸氨鏄嚎紼嬪畨鍏ㄧ殑銆?<br />瀹夊叏鐨勬剰鎬濇槸鑳芥紜墽琛岋紝鍚﹀垯鍚庢灉鏄▼搴忔墽琛岄敊璇紝鍙兘鍑虹幇鍚勭寮傚父鎯呭喌銆?/p> <p>2.濡備綍緙栧啓綰跨▼瀹夊叏鐨勪唬鐮?<br />寰堝涔︾睄閲岄兘璇︾粏璁茶В浜嗗浣曡繖鏂歸潰鐨勯棶棰橈紝浠栦滑涓昏璁茶В鐨勬槸濡備綍鍚屾綰跨▼瀵瑰叡浜祫婧愮殑浣跨敤鐨勯棶棰樸備富瑕佹槸瀵箂ynchronized鍏抽敭瀛楃殑鍚勭鐢ㄦ硶錛屼互鍙婇攣鐨勬蹇點?<br />Java1.5涓篃鎻愪緵浜嗗璇誨啓閿佽繖綾葷殑宸ュ叿綾匯傝繖浜涢兘闇瑕佽緝楂樼殑鎶宸э紝鑰屼笖鐩稿闅句簬璋冭瘯銆?<br /><br />浣嗘槸錛岀嚎紼嬪悓姝ユ槸涓嶅緱浠ョ殑鏂規硶,鏄瘮杈冨鏉傜殑,鑰屼笖浼氬甫鏉ユц兘鐨勬崯澶便傜瓑鏁堢殑浠g爜涓紝涓嶉渶瑕佸悓姝ュ湪緙栧啓瀹規槗搴﹀拰鎬ц兘涓婁細鏇村ソ浜涖?<br />鎴戣繖閲屽己璋冪殑鏄粈涔堜唬鐮佹槸濮嬬粓涓虹嚎紼嬪畨鍏ㄧ殑銆佹槸涓嶉渶瑕佸悓姝ョ殑銆傚涓? <br />1)甯擱噺濮嬬粓鏄嚎紼嬪畨鍏ㄧ殑錛屽洜涓哄彧瀛樺湪璇繪搷浣溿?<br />2)瀵規瀯閫犲櫒鐨勮闂?new 鎿嶄綔)鏄嚎紼嬪畨鍏ㄧ殑錛屽洜涓烘瘡嬈¢兘鏂板緩涓涓疄渚嬶紝涓嶄細璁塊棶鍏變韓鐨勮祫婧愩?<br />3)鏈閲嶈鐨勬槸:灞閮ㄥ彉閲忔槸綰跨▼瀹夊叏鐨勩傚洜涓烘瘡鎵ц涓涓柟娉曪紝閮戒細鍦ㄧ嫭绔嬬殑絀洪棿鍒涘緩灞閮ㄥ彉閲忥紝瀹冧笉鏄叡浜殑璧勬簮銆傚眬閮ㄥ彉閲忓寘鎷柟娉曠殑鍙傛暟鍙橀噺銆?<br />struts user guide閲屾湁錛?<br />Only Use Local Variables - The most important principle that aids in thread-safe coding is to use only local variables, not instance variables , in your Action class. <br />璇?鍙嬌鐢ㄧ敤灞閮ㄥ彉閲忋?-緙栧啓綰跨▼瀹夊叏鐨勪唬鐮佹渶閲嶈鐨勫師鍒欏氨鏄紝鍦ˋction綾諱腑鍙嬌鐢ㄥ眬閮ㄥ彉閲忥紝涓嶄嬌鐢ㄥ疄渚嬪彉閲忋?/p> <p> <br />鎬葷粨錛?<br />鍦↗ava鐨刉eb鏈嶅姟鍣ㄧ幆澧冧笅寮鍙戯紝瑕佹敞鎰忕嚎紼嬪畨鍏ㄧ殑闂銆傛渶綆鍗曠殑瀹炵幇鏂瑰紡灝辨槸鍦⊿ervlet鍜孲truts Action閲屼笉瑕佷嬌鐢ㄧ被鍙橀噺銆佸疄渚嬪彉閲忥紝浣嗗彲浠ヤ嬌鐢ㄧ被甯擱噺鍜屽疄渚嬪父閲忋?<br />濡傛灉鏈夎繖浜涘彉閲忥紝鍙互灝嗗畠浠漿鎹負鏂規硶鐨勫弬鏁頒紶鍏ワ紝浠ユ秷闄ゅ畠浠?<br />娉ㄦ剰涓涓鏄撴販娣嗙殑鍦版柟錛氳Servlet鎴朅ction璋冪敤鐨勭被涓?濡傚煎璞°侀鍩熸ā鍨嬬被)涓槸鍚﹀彲浠ュ畨鍏ㄧ殑浣跨敤瀹炰緥鍙橀噺錛熷鏋滀綘鍦ㄦ瘡嬈℃柟娉曡皟鐢ㄦ椂 <br />鏂板緩涓涓璞★紝鍐嶈皟鐢ㄥ畠浠殑鏂規硶錛屽垯涓嶅瓨鍦ㄥ悓姝ラ棶棰?--鍥犱負瀹冧滑涓嶆槸澶氫釜綰跨▼鍏變韓鐨勮祫婧愶紝鍙湁鍏變韓鐨勮祫婧愭墠闇瑕佸悓姝?--鑰孲ervlet鍜孉ction鐨勫疄渚嬪浜庡涓嚎紼嬫槸鍏變韓鐨勩?<br />鎹㈠彞璇濊錛孲ervlet鍜孉ction鐨勫疄渚嬩細琚涓嚎紼嬪悓鏃惰皟鐢紝鑰岃繃浜嗚繖涓灞?濡傛灉鍦ㄤ綘鑷繁鐨勪唬鐮佷腑娌℃湁鍙﹀鍚姩綰跨▼錛屼笖姣忔璋冪敤鍚庣畫涓氬姟瀵硅薄鏃墮兘鏄厛鏂板緩涓涓疄渚嬪啀璋冪敤錛屽垯閮芥槸綰跨▼瀹夊叏鐨勩?/p> <img src ="http://m.tkk7.com/onejavaer/aggbug/74100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/onejavaer/" target="_blank">鏆楀綺劇伒</a> 2006-10-09 16:23 <a href="http://m.tkk7.com/onejavaer/articles/74100.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>java.util.ArrayList 璇﹁Вhttp://m.tkk7.com/onejavaer/articles/72934.html鏆楀綺劇伒鏆楀綺劇伒Sat, 30 Sep 2006 00:14:00 GMThttp://m.tkk7.com/onejavaer/articles/72934.htmlhttp://m.tkk7.com/onejavaer/comments/72934.htmlhttp://m.tkk7.com/onejavaer/articles/72934.html#Feedback0http://m.tkk7.com/onejavaer/comments/commentRss/72934.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/72934.html闃呰鍏ㄦ枃

]]>
JSP鐢熸垚闈欐侀〉瀹炶返鍙婂叾璁捐鎬濇兂http://m.tkk7.com/onejavaer/articles/72910.html鏆楀綺劇伒鏆楀綺劇伒Fri, 29 Sep 2006 14:29:00 GMThttp://m.tkk7.com/onejavaer/articles/72910.htmlhttp://m.tkk7.com/onejavaer/comments/72910.htmlhttp://m.tkk7.com/onejavaer/articles/72910.html#Feedback0http://m.tkk7.com/onejavaer/comments/commentRss/72910.htmlhttp://m.tkk7.com/onejavaer/services/trackbacks/72910.html鎴戜滑浠ヤ袱涓ぇ鍨嬬綉绔欎負渚嬩綔姣旇緝錛?br />51job鍜屾櫤鑱旀嫑鑱橈紙鍏堝0鏄庢垜涓嶆槸涓轟粬浠綔騫垮憡錛屼粎浠ヤ粬浠負渚嬩綔鎶鏈笂鐨勬瘮杈冿級
51job閲囩敤鐨勬槸姣旇緝“鍏堣繘”鐨刾hp鎶鏈紝鑰屾櫤鑱旂敤鐨勬槸姣旇緝钀藉悗鐨刟sp.浣嗘垜浠彲鑳戒細鏄庢樉鐨勬劅瑙夊埌51job鐨勫弽搴旈熷害鐩告瘮鏅鴻仈鎷涜仒瀹炲湪鏄お鎱簡錛屼負浠涔堜細榪欐牱錛熺粏蹇冪殑浜哄彲鑳戒細瀵熻鍒頒簡銆傛櫤鑱旇櫧鐒剁敤鐨勬槸asp,浣嗕粬閲囩敤浜嗗彟涓縐嶆洿宸у鐨勬妧鏈?-asp鐢熸垚闈欐侀〉鎶鏈傛墍鏈夌殑鍔ㄦ侀〉鍩烘湰涓婇兘杞崲鎴愪簡html闈欐侀〉錛屼笉鐢ㄨ闂暟鎹簱錛屽綋鐒跺弽搴斿揩浜嗐?br />涓嬮潰鎴戜滑璁ㄨ涓涓媕sp鎬庝箞杞崲鎴恏tml??
棣栧厛瑕佸仛涓涓ā鏉褲傚悗緙涓嶉檺錛屼絾涓鑸兘鐢?.template渚嬪瓙
<html>
<head>
<title>#title#</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="../css.css" rel=stylesheet type=text/css>
</head>
<body>
<P align="center">
#title#
<BR><BR><BR>
浣滆咃細#author#
<BR><BR>
<BR>
#content#
<BR><BR><BR><BR>
</P>
</body>
</html>

鍋氫竴涓鐞嗘ā鏉跨殑綾繪垨鑰卝sp鏂囦歡銆?涓鴻鏄庨棶棰樻垜浠粠綆鍗曞叆鎵嬩互涓涓猨sp鏂囦歡涓轟緥)
filePath = request.getRealPath("/")+"WEB-INF/templates/template.htm";
 out.print(filePath);
 String templateContent
="";
 FileInputStream fileinputstream 
= new FileInputStream(filePath);//璇誨彇妯″潡鏂囦歡
 int lenght = fileinputstream.available();
 
byte bytes[] = new byte[lenght];
 fileinputstream.read(bytes);
 fileinputstream.close();
 templateContent 
= new String(bytes);
 out.print(
"浠ヤ笅鏄ā鏉垮唴瀹癸細<br>"+templateContent+"<br> 浠ヤ笅鏄疆鎹互鍚庣殑html鍐呭<br><hr>");
 templateContent
=templateContent.replaceAll("#title#",title);
 templateContent
=templateContent.replaceAll("#author#",editer);//鏇挎崲鎺夋ā鍧椾腑鐩稿簲鐨勫湴鏂?/span>
 templateContent=templateContent.replaceAll("#content#",content);
 
// 鏍規嵁鏃墮棿寰楁枃浠跺悕
 Calendar calendar = Calendar.getInstance();
 String fileame 
= String.valueOf(calendar.getTimeInMillis()) +".html";
 fileame 
= request.getRealPath("/")+fileame;//鐢熸垚鐨刪tml鏂囦歡淇濆瓨璺緞

 out.print(templateContent);
 FileOutputStream fileoutputstream 
= new FileOutputStream(fileame);//寤虹珛鏂囦歡杈撳嚭嫻?/span>
 byte tag_bytes[] = templateContent.getBytes();
 fileoutputstream.write(tag_bytes);
 fileoutputstream.close();
鍡紝鏍稿績鎶鏈氨鏄繖鏍蜂簡錛屽鏋滃ぇ瀹惰姹傜殑鎬ц兘鏇撮珮錛屽彲浠ユ敼鐢╢reemarker鍋氭ā鏉褲俧reemarker鐨勪嬌鐢ㄦ柟娉曞彲浠ュ弬闃呭彟涓綃囨枃绔犮?a class="singleposttitle" id="viewpost1_TitleUrl" href="/zhanglijun33/archive/2006/07/20/freemarker.html">Freemarker 妯℃澘宸ュ叿鐨勪綔鐢ㄥ強浣跨敤銆?br />
寮曡嚜錛?a href="/zhanglijun33/archive/2006/07/28/60568.aspx">http://m.tkk7.com/zhanglijun33/archive/2006/07/28/60568.aspx

]]>
主站蜘蛛池模板: 自拍偷自拍亚洲精品播放| 亚洲色图视频在线观看| 亚洲成在人线av| 亚洲国产精久久久久久久| 久久久婷婷五月亚洲97号色| 亚洲精品资源在线| 亚洲精品456人成在线| 午夜亚洲WWW湿好爽| 一级毛片一级毛片免费毛片| A级毛片高清免费视频在线播放| 一级毛片免费观看不卡的| 99久久99这里只有免费费精品| 在线精品免费视频无码的| 亚洲国产精品狼友中文久久久| 中文字幕亚洲日本岛国片| 在线看片免费人成视频播| 午夜免费福利片观看| 好男人www免费高清视频在线| 国产男女猛烈无遮档免费视频网站 | 无码人妻一区二区三区免费| 宅男666在线永久免费观看| 久久久久亚洲精品中文字幕| 久久精品国产亚洲AV大全| 亚洲欧美成人综合久久久| xxxxx做受大片视频免费| 亚洲视频在线免费观看| 免费视频淫片aa毛片| 亚洲gv猛男gv无码男同短文| 亚洲人成网站看在线播放| 免费毛片毛片网址| 真实国产乱子伦精品免费| 日本一区二区三区日本免费| 亚洲精品乱码久久久久66| 亚洲国产精品综合久久20| 成人免费视频一区二区| 国产A∨免费精品视频| 日本h在线精品免费观看| 大地资源二在线观看免费高清| 亚洲国产综合精品中文字幕| 亚洲高清无在码在线无弹窗| 最好2018中文免费视频|