锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩免费,亚洲美女区一区,亚洲日本国产http://m.shnenglu.com/qywyh/category/5408.html璞?>blogzh-cnMon, 19 May 2008 19:10:48 GMTMon, 19 May 2008 19:10:48 GMT60銆愯漿銆慗ava 澶氱嚎紼嬪叆闂ㄥぇ鍏?/title><link>http://m.shnenglu.com/qywyh/articles/39317.html</link><dc:creator>璞?/dc:creator><author>璞?/author><pubDate>Sat, 22 Dec 2007 19:25:00 GMT</pubDate><guid>http://m.shnenglu.com/qywyh/articles/39317.html</guid><wfw:comment>http://m.shnenglu.com/qywyh/comments/39317.html</wfw:comment><comments>http://m.shnenglu.com/qywyh/articles/39317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/qywyh/comments/commentRss/39317.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qywyh/services/trackbacks/39317.html</trackback:ping><description><![CDATA[<p>Java 澶氱嚎紼嬪叆闂ㄥぇ鍏?br>2007-03-15 14:18:41 / 涓漢鍒嗙被錛歫ava </p> <p><br>浣滆咃細qlampskyface </p> <p>鍜屼綔鑰呰仈緋伙細<a href="mailto:djb_skyface@tom.com">djb_skyface@tom.com</a></p> <p> </p> <p>--------------------------------------------------------------------------------</p> <p><br>    鎺ヨЕ澶氱嚎紼嬪凡緇忎笉灝戞椂闂翠簡,涔熷仛浜嗕笉灝戜簨鎯?浣嗘槸涓鐩磋寰楃敤璧鋒潵涓嶉偅涔堥『鎵?鍦╠ebug鐨勬椂鍊?寰寰浼氭瘮杈冩媴蹇冨湪鍚屾涓婂嚭浠涔堥棶棰?鎯寵搗"紼嬪簭鍛樻渶鎬曠殑鏄嚜宸卞啓鐨勪唬鐮?榪欏彞璇?瑙夊緱鐪熸槸涓嶅亣.<br>    緇堜簬鏈変竴澶?鎴戣寰楁槸鏃跺欐妸榪欎釜闂寮勬竻妤氫簡,鎵浠?鎴戝氨鍦ㄧ綉涓婃壘鐩稿叧鐨勫唴瀹圭湅,緇撴灉绔熺劧鏄壘涓嶅埌鍦ㄦ垜榪欎釜闃舵搴旇鐪嬬殑,涓嶆槸澶畝鍗?灝辨槸涓絎斿甫榪?涓嶇煡鎵浜?<br>    搴熶簡涔濈墰浜岃檸涔嬪姏,緇堜簬宸笉澶氬紕娓呮浜?鍏朵腑鏈変笉灝戣鍖?浠ュ墠璁や負鐨勫拰鐪熺悊鐩稿樊鐢氬ぇ.鎯寵搗鑷繁鑺辮垂鐨勬椂闂?鐪熸槸瑙夊緱鏈夌偣澶?鎵浠ユ妸瀹冨啓鍑烘潵,涓鏄槻姝㈣嚜宸變互鍚庡張浼氬繕鎺?浜屾槸緇欏儚鎴戜竴鏍風殑浼兼噦闈炴噦鑰呯暀涓嬩竴鐐瑰彲浠ュ弬鑰冪殑涓滀笢.<br>    闂茶瘽灝戣,杞叆姝i!</p> <p> </p> <p>--------------------------------------------------------------------------------</p> <p> </p> <p>    鍏堜粠綰跨▼鐨勫垱寤鴻璧?綰跨▼鐨勫垱寤轟竴鍏辨湁涓ょ褰㈠紡:</p> <p> </p> <p>--------------------------------------------------------------------------------</p> <p>    涓縐嶆槸緇ф壙鑷猅hread綾?Thread 綾繪槸涓涓叿浣撶殑綾伙紝鍗充笉鏄娊璞$被錛岃綾誨皝瑁呬簡綰跨▼鐨勮涓恒傝鍒涘緩涓涓嚎紼嬶紝紼嬪簭鍛樺繀欏誨垱寤轟竴涓粠 Thread 綾誨鍑虹殑鏂扮被銆傜▼搴忓憳閫氳繃瑕嗙洊 Thread 鐨?run() 鍑芥暟鏉ュ畬鎴愭湁鐢ㄧ殑宸ヤ綔銆傜敤鎴峰茍涓嶇洿鎺ヨ皟鐢ㄦ鍑芥暟錛涜屾槸閫氳繃璋冪敤 Thread 鐨?start() 鍑芥暟錛岃鍑芥暟鍐嶈皟鐢?run()銆?br>    <br>    渚嬪: </p> <p>    public class Test extends Thread{<br>      public Test(){<br>      }<br>      public static void main(String args[]){<br>        Test t1 = new Test();<br>        Test t2 = new Test();<br>        t1.start();<br>        t2.start();<br>      }<br>      public void run(){<br>        //do thread's things<br>      }<br>    }</p> <p> </p> <p>--------------------------------------------------------------------------------</p> <p>    <br>    鍙︿竴縐嶆槸瀹炵幇Runnable鎺ュ彛,姝ゆ帴鍙e彧鏈変竴涓嚱鏁幫紝run()錛屾鍑芥暟蹇呴』鐢卞疄鐜頒簡姝ゆ帴鍙g殑綾誨疄鐜般?br>    <br>    渚嬪: </p> <p>    public class Test implements Runnable{<br>      Thread thread1;<br>      Thread thread2;<br>      public Test(){<br>        thread1 = new Thread(this,"1");<br>        thread2 = new Thread(this,"2");<br>      }<br>      public static void main(String args[]){<br>        Test t = new Test();<br>        t.startThreads();<br>      }<br>      public void run(){<br>        //do thread's things<br>      }<br>      public void startThreads(){<br>        thread1.start();<br>        thread2.start();<br>      }<br>    }</p> <p>    涓ょ鍒涘緩鏂瑰紡鐪嬭搗鏉ュ樊鍒笉澶?浣嗘槸寮勪笉娓呮鐨勮瘽錛屼篃璁鎬細灝嗕綘鐨勭▼搴忓紕寰椾竴鍥㈢碂銆備袱鑰呭尯鍒湁浠ヤ笅鍑犵偣錛?/p> <p>1.褰撲綘鎯崇戶鎵挎煇涓鍏跺畠綾繪椂,浣犲彧鑳界敤鍚庝竴縐嶆柟寮?</p> <p>2.絎竴縐嶅洜涓虹戶鎵胯嚜Thread,鍙垱寤轟簡鑷韓瀵硅薄,浣嗘槸鍦ㄦ暟閲忎笂錛岄渶瑕佸嚑涓嚎紼嬶紝灝卞緱鍒涘緩鍑犱釜鑷韓瀵硅薄錛涚浜岀鍙垱寤轟竴涓嚜韜璞★紝鍗村垱寤哄嚑涓猅hread瀵硅薄.鑰屼袱縐嶆柟娉曢噸澶х殑鍖哄埆灝卞湪浜庢錛岃浣犺冭檻錛氬鏋滀綘鍦ㄧ涓縐嶉噷鍒涘緩鏁頒釜鑷韓瀵硅薄騫朵笖start()鍚庯紝浣犱細鍙戠幇濂藉儚synchronized涓嶈搗浣滅敤浜嗭紝宸茬粡鍔犻攣鐨勪唬鐮佸潡鎴栬呮柟娉曞眳鐒跺悓鏃跺彲浠ユ湁鍑犱釜綰跨▼榪涘幓錛岃屼笖鍚屾牱涓涓彉閲忥紝灞呯劧鍙互鏈夊ソ鍑犱釜綰跨▼鍚屾椂鍙互鍘繪洿鏀瑰畠銆傦紙渚嬪涓嬮潰鐨勪唬鐮侊級榪欐槸鍥犱負錛屽湪榪欎釜紼嬪簭涓紝铏界劧浣犺搗浜嗘暟涓嚎紼嬶紝鍙槸浣犱篃鍒涘緩浜嗘暟涓璞★紝鑰屼笖錛屾瘡涓嚎紼嬪搴斾簡姣忎釜瀵硅薄涔熷氨鏄錛屾瘡涓嚎紼嬫洿鏀瑰拰鍗犳湁鐨勫璞¢兘涓嶄竴鏍鳳紝鎵浠ュ氨鍑虹幇浜嗗悓鏃舵湁鍑犱釜綰跨▼榪涘叆涓涓柟娉曠殑鐜拌薄錛屽叾瀹烇紝閭d篃涓嶆槸涓涓柟娉曪紝鑰屾槸涓嶅悓瀵硅薄鐨勭浉鍚岀殑鏂規硶銆傛墍浠ワ紝榪欐椂鍊欎綘瑕佸姞閿佺殑璇濓紝鍙兘灝嗘柟娉曟垨鑰呭彉閲忓0鏄庝負闈欐侊紝灝唖tatic鍔犱笂鍚庯紝浣犲氨浼氬彂鐜幫紝綰跨▼鍙堣兘綆′綇鏂規硶浜嗭紝鍚屾椂涓嶅彲鑳芥湁涓や釜綰跨▼榪涘叆鍚屾牱涓涓柟娉曪紝閭f槸鍥犱負錛岀幇鍦ㄤ笉鏄瘡涓璞¢兘鎷ユ湁涓涓柟娉曚簡錛岃屾槸鎵鏈夌殑瀵硅薄鍏卞悓鎷ユ湁涓涓柟娉曪紝榪欎釜鏂規硶灝辨槸闈欐佹柟娉曘?/p> <p>    鑰屼綘濡傛灉鐢ㄧ浜岀鏂規硶浣跨敤綰跨▼鐨勮瘽錛屽氨涓嶄細鏈変笂榪扮殑鎯呭喌錛屽洜涓烘鏃訛紝浣犲彧鍒涘緩浜嗕竴涓嚜韜璞★紝鎵浠ワ紝鑷韓瀵硅薄鐨勫睘鎬у拰鏂規硶瀵逛簬綰跨▼鏉ヨ鏄叡鏈夌殑銆?/p> <p>    鍥犳錛屾垜寤鴻錛屾渶濂界敤鍚庝竴縐嶆柟娉曟潵浣跨敤綰跨▼銆?/p> <p>public class mainThread extends Thread{<br>  int i=0;<br>  public static void main(String args[]){<br>    mainThread m1 = new mainThread();<br>    mainThread m2 = new mainThread();<br>    mainThread m3 = new mainThread();<br>    mainThread m4 = new mainThread();<br>    mainThread m5 = new mainThread();<br>    mainThread m6 = new mainThread();<br>    m1.start();<br>    m2.start();<br>    m3.start();<br>    m4.start();<br>    m5.start();<br>    m6.start();<br>  }<br>  public synchronized void t1(){<br>    i=++i;<br>    try{<br>      Thread.sleep(500);<br>    }<br>    catch(Exception e){}<br>    //姣忎釜綰跨▼閮借繘鍏ュ悇鑷殑t1()鏂規硶錛屽垎鍒墦鍗板悇鑷殑i<br>    System.out.println(Thread.currentThread().getName()+" "+i);<br>  }<br>  public void run(){<br>    synchronized(this){<br>      while (true) {<br>        t1();<br>      }<br>    }<br>  }<br>}</p> <p> </p> <p><br>--------------------------------------------------------------------------------</p> <p> </p> <p>    涓嬮潰鎴戜滑鏉ヨsynchronized鐨?縐嶇敤娉曞惂:</p> <p>    1.鏂規硶澹版槑鏃朵嬌鐢?鏀懼湪鑼冨洿鎿嶄綔絎?public絳?涔嬪悗,榪斿洖綾誨瀷澹版槑(void絳?涔嬪墠.鍗充竴嬈″彧鑳芥湁涓涓嚎紼嬭繘鍏ヨ鏂規硶,鍏朵粬綰跨▼瑕佹兂鍦ㄦ鏃惰皟鐢ㄨ鏂規硶,鍙兘鎺掗槦絳夊?褰撳墠綰跨▼(灝辨槸鍦╯ynchronized鏂規硶鍐呴儴鐨勭嚎紼?鎵ц瀹岃鏂規硶鍚?鍒殑綰跨▼鎵嶈兘榪涘叆.<br> <br>      渚嬪:</p> <p>      public synchronized void synMethod() {<br>        //鏂規硶浣?br>      }</p> <p>    2.瀵規煇涓浠g爜鍧椾嬌鐢?synchronized鍚庤窡鎷彿,鎷彿閲屾槸鍙橀噺,榪欐牱,涓嬈″彧鏈変竴涓嚎紼嬭繘鍏ヨ浠g爜鍧?渚嬪:</p> <p>      public int synMethod(int a1){<br>        synchronized(a1) {<br>          //涓嬈″彧鑳芥湁涓涓嚎紼嬭繘鍏?br>        }<br>      }<br>    3.synchronized鍚庨潰鎷彿閲屾槸涓瀵硅薄,姝ゆ椂,綰跨▼鑾峰緱鐨勬槸瀵硅薄閿?渚嬪:</p> <p>public class MyThread implements Runnable {<br>  public static void main(String args[]) {<br>    MyThread mt = new MyThread();<br>    Thread t1 = new Thread(mt, "t1");<br>    Thread t2 = new Thread(mt, "t2");<br>    Thread t3 = new Thread(mt, "t3");<br>    Thread t4 = new Thread(mt, "t4");<br>    Thread t5 = new Thread(mt, "t5");<br>    Thread t6 = new Thread(mt, "t6");<br>    t1.start();<br>    t2.start();<br>    t3.start();<br>    t4.start();<br>    t5.start();<br>    t6.start();<br>  }</p> <p>  public void run() {<br>    synchronized (this) {<br>      System.out.println(Thread.currentThread().getName());<br>    }<br>  }<br>} </p> <p><br> <br>    瀵逛簬3,濡傛灉綰跨▼榪涘叆,鍒欏緱鍒板璞¢攣,閭d箞鍒殑綰跨▼鍦ㄨ綾繪墍鏈夊璞′笂鐨勪換浣曟搷浣滈兘涓嶈兘榪涜.鍦ㄥ璞$駭浣跨敤閿侀氬父鏄竴縐嶆瘮杈冪矖緋欑殑鏂規硶銆備負浠涔堣灝嗘暣涓璞¢兘涓婇攣錛岃屼笉鍏佽鍏朵粬綰跨▼鐭殏鍦頒嬌鐢ㄥ璞′腑鍏朵粬鍚屾鏂規硶鏉ヨ闂叡浜祫婧愶紵濡傛灉涓涓璞℃嫢鏈夊涓祫婧愶紝灝變笉闇瑕佸彧涓轟簡璁╀竴涓嚎紼嬩嬌鐢ㄥ叾涓竴閮ㄥ垎璧勬簮錛屽氨灝嗘墍鏈夌嚎紼嬮兘閿佸湪澶栭潰銆傜敱浜庢瘡涓璞¢兘鏈夐攣錛屽彲浠ュ涓嬫墍紺轟嬌鐢ㄨ櫄鎷熷璞℃潵涓婇攣錛?/p> <p>class FineGrainLock {</p> <p>   MyMemberClass x, y;<br>   Object xlock = new Object(), ylock = new Object();</p> <p>   public void foo() {<br>      synchronized(xlock) {<br>         //access x here<br>      }</p> <p>      //do something here - but don't use shared resources</p> <p>      synchronized(ylock) {<br>         //access y here<br>      }<br>   }</p> <p>   public void bar() {<br>      synchronized(this) {<br>         //access both x and y here<br>      }<br>      //do something here - but don't use shared resources<br>   }<br>}</p> <p> </p> <p>    4.synchronized鍚庨潰鎷彿閲屾槸綾?渚嬪:</p> <p>class ArrayWithLockOrder{<br>  private static long num_locks = 0;<br>  private long lock_order;<br>  private int[] arr;</p> <p>  public ArrayWithLockOrder(int[] a)<br>  {<br>    arr = a;<br>    synchronized(ArrayWithLockOrder.class) {//-----------------------------------------榪欓噷<br>      num_locks++;             // 閿佹暟鍔?1銆?br>      lock_order = num_locks;  // 涓烘瀵硅薄瀹炰緥璁劇疆鍞竴鐨?lock_order銆?br>    }<br>  }<br>  public long lockOrder()<br>  {<br>    return lock_order;<br>  }<br>  public int[] array()<br>  {<br>    return arr;<br>  }<br>}</p> <p>class SomeClass implements Runnable<br>{<br>  public int sumArrays(ArrayWithLockOrder a1,<br>                       ArrayWithLockOrder a2)<br>  {<br>    int value = 0;<br>    ArrayWithLockOrder first = a1;       // 淇濈暀鏁扮粍寮曠敤鐨勪竴涓?br>    ArrayWithLockOrder last = a2;        // 鏈湴鍓湰銆?br>    int size = a1.array().length;<br>    if (size == a2.array().length)<br>    {<br>      if (a1.lockOrder() > a2.lockOrder())  // 紜畾騫惰緗璞$殑閿佸畾<br>      {                                     // 欏哄簭銆?br>        first = a2;<br>        last = a1;<br>      }<br>      synchronized(first) {              // 鎸夋紜殑欏哄簭閿佸畾瀵硅薄銆?br>        synchronized(last) {<br>          int[] arr1 = a1.array();<br>          int[] arr2 = a2.array();<br>          for (int i=0; i<size; i++)<br>            value += arr1[i] + arr2[i];<br>        }<br>      }<br>    }<br>    return value;<br>  }<br>  public void run() {<br>    //...<br>  }<br>}</p> <p> </p> <p>    瀵逛簬4,濡傛灉綰跨▼榪涘叆,鍒欑嚎紼嬪湪璇ョ被涓墍鏈夋搷浣滀笉鑳借繘琛?鍖呮嫭闈欐佸彉閲忓拰闈欐佹柟娉?瀹為檯涓?瀵逛簬鍚湁闈欐佹柟娉曞拰闈欐佸彉閲忕殑浠g爜鍧楃殑鍚屾,鎴戜滑閫氬父鐢?鏉ュ姞閿?</p> <p>浠ヤ笂4縐嶄箣闂寸殑鍏崇郴錛?/p> <p>    閿佹槸鍜屽璞$浉鍏寵仈鐨勶紝姣忎釜瀵硅薄鏈変竴鎶婇攣錛屼負浜嗘墽琛宻ynchronized璇彞錛岀嚎紼嬪繀欏昏兘澶熻幏寰梥ynchronized璇彞涓〃杈懼紡鎸囧畾鐨勫璞$殑閿侊紝涓涓璞″彧鏈変竴鎶婇攣錛岃涓涓嚎紼嬭幏寰椾箣鍚庡畠灝變笉鍐嶆嫢鏈夎繖鎶婇攣錛岀嚎紼嬪湪鎵ц瀹宻ynchronized璇彞鍚庯紝灝嗚幏寰楅攣浜よ繕緇欏璞°?br>    鍦ㄦ柟娉曞墠闈㈠姞涓妔ynchronized淇グ絎﹀嵆鍙互灝嗕竴涓柟娉曞0鏄庝負鍚屾鍖栨柟娉曘傚悓姝ュ寲鏂規硶鍦ㄦ墽琛屼箣鍓嶈幏寰椾竴涓攣銆傚鏋滆繖鏄竴涓被鏂規硶錛岄偅涔堣幏寰楃殑閿佹槸鍜屽0鏄庢柟娉曠殑綾葷浉鍏崇殑Class綾誨璞$殑閿併傚鏋滆繖鏄竴涓疄渚嬫柟娉曪紝閭d箞姝ら攣鏄痶his瀵硅薄鐨勯攣銆?/p> <p> </p> <p><br>--------------------------------------------------------------------------------</p> <p><br>  涓嬮潰璋堜竴璋堜竴浜涘父鐢ㄧ殑鏂規硶:</p> <p>  wait(),wait(long),notify(),notifyAll()絳夋柟娉曟槸褰撳墠綾葷殑瀹炰緥鏂規硶,<br>    <br>        wait()鏄嬌鎸佹湁瀵硅薄閿佺殑綰跨▼閲婃斁閿?<br>        wait(long)鏄嬌鎸佹湁瀵硅薄閿佺殑綰跨▼閲婃斁閿佹椂闂翠負long(姣)鍚?鍐嶆鑾峰緱閿?wait()鍜寃ait(0)絳変環;<br>        notify()鏄敜閱掍竴涓鍦ㄧ瓑寰呰瀵硅薄閿佺殑綰跨▼,濡傛灉絳夊緟鐨勭嚎紼嬩笉姝竴涓?閭d箞琚敜閱掔殑綰跨▼鐢眏vm紜畾;<br>        notifyAll鏄敜閱掓墍鏈夋鍦ㄧ瓑寰呰瀵硅薄閿佺殑綰跨▼.<br>        鍦ㄨ繖閲屾垜涔熼噸鐢充竴涓?鎴戜滑搴旇浼樺厛浣跨敤notifyAll()鏂規硶,鍥犱負鍞ら啋鎵鏈夌嚎紼嬫瘮鍞ら啋涓涓嚎紼嬫洿瀹規槗璁﹋vm鎵懼埌鏈閫傚悎琚敜閱掔殑綰跨▼.</p> <p>    瀵逛簬涓婅堪鏂規硶,鍙湁鍦ㄥ綋鍓嶇嚎紼嬩腑鎵嶈兘浣跨敤,鍚﹀垯鎶ヨ繍琛屾椂閿欒java.lang.IllegalMonitorStateException: current thread not owner.</p> <p> </p> <p>--------------------------------------------------------------------------------</p> <p><br>    涓嬮潰,鎴戣皥涓涓媠ynchronized鍜寃ait()銆乶otify()絳夌殑鍏崇郴:</p> <p>1.鏈塻ynchronized鐨勫湴鏂逛笉涓瀹氭湁wait,notify</p> <p>2.鏈墂ait,notify鐨勫湴鏂瑰繀鏈塻ynchronized.榪欐槸鍥犱負wait鍜宯otify涓嶆槸灞炰簬綰跨▼綾伙紝鑰屾槸姣忎竴涓璞¢兘鍏鋒湁鐨勬柟娉曪紝鑰屼笖錛岃繖涓や釜鏂規硶閮藉拰瀵硅薄閿佹湁鍏籌紝鏈夐攣鐨勫湴鏂癸紝蹇呮湁synchronized銆?/p> <p>鍙﹀錛岃娉ㄦ剰涓鐐癸細濡傛灉瑕佹妸notify鍜寃ait鏂規硶鏀懼湪涓璧風敤鐨勮瘽錛屽繀欏誨厛璋冪敤notify鍚庤皟鐢╳ait錛屽洜涓哄鏋滆皟鐢ㄥ畬wait錛岃綰跨▼灝卞凡緇忎笉鏄痗urrent thread浜嗐傚涓嬩緥錛?/p> <p>/**<br> * Title:        Jdeveloper's Java Projdect<br> * Description:  n/a<br> * Copyright:    Copyright (c) 2001<br> * Company:      soho  <a >http://www.ChinaJavaWorld.com</a><br> * @author <a href="mailto:jdeveloper@21cn.com">jdeveloper@21cn.com</a><br> * @version 1.0<br> */<br>import java.lang.Runnable;<br>import java.lang.Thread;</p> <p>public class DemoThread<br>    implements Runnable {</p> <p>  public DemoThread() {<br>    TestThread testthread1 = new TestThread(this, "1");<br>    TestThread testthread2 = new TestThread(this, "2");</p> <p>    testthread2.start();<br>    testthread1.start();</p> <p>  }</p> <p>  public static void main(String[] args) {<br>    DemoThread demoThread1 = new DemoThread();</p> <p>  }</p> <p>  public void run() {</p> <p>    TestThread t = (TestThread) Thread.currentThread();<br>    try {<br>      if (!t.getName().equalsIgnoreCase("1")) {<br>        synchronized (this) {<br>          wait();<br>        }<br>      }<br>      while (true) {</p> <p>        System.out.println("@time in thread" + t.getName() + "=" +<br>                           t.increaseTime());</p> <p>        if (t.getTime() % 10 == 0) {<br>          synchronized (this) {<br>            System.out.println("****************************************");<br>            notify();<br>            if (t.getTime() == 100)<br>              break;<br>            wait();<br>          }<br>        }<br>      }<br>    }<br>    catch (Exception e) {<br>      e.printStackTrace();<br>    }<br>  }</p> <p>}</p> <p>class TestThread<br>    extends Thread {<br>  private int time = 0;<br>  public TestThread(Runnable r, String name) {<br>    super(r, name);<br>  }</p> <p>  public int getTime() {<br>    return time;<br>  }</p> <p>  public int increaseTime() {<br>    return++time;<br>  }</p> <p>}</p> <p>    涓嬮潰鎴戜滑鐢ㄧ敓浜ц?娑堣垂鑰呰繖涓緥瀛愭潵璇存槑浠栦滑涔嬮棿鐨勫叧緋?</p> <p>    public class test {<br>  public static void main(String args[]) {<br>    Semaphore s = new Semaphore(1);<br>    Thread t1 = new Thread(s, "producer1");<br>    Thread t2 = new Thread(s, "producer2");<br>    Thread t3 = new Thread(s, "producer3");<br>    Thread t4 = new Thread(s, "consumer1");<br>    Thread t5 = new Thread(s, "consumer2");<br>    Thread t6 = new Thread(s, "consumer3");<br>    t1.start();<br>    t2.start();<br>    t3.start();<br>    t4.start();<br>    t5.start();<br>    t6.start();<br>  }<br>}</p> <p>class Semaphore<br>    implements Runnable {<br>  private int count;<br>  public Semaphore(int n) {<br>    this.count = n;<br>  }</p> <p>  public synchronized void acquire() {<br>    while (count == 0) {<br>      try {<br>        wait();<br>      }<br>      catch (InterruptedException e) {<br>        //keep trying<br>      }<br>    }<br>    count--;<br>  }</p> <p>  public synchronized void release() {<br>    while (count == 10) {<br>      try {<br>        wait();<br>      }<br>      catch (InterruptedException e) {<br>        //keep trying<br>      }<br>    }<br>    count++;<br>    notifyAll(); //alert a thread that's blocking on this semaphore<br>  }</p> <p>  public void run() {<br>    while (true) {<br>      if (Thread.currentThread().getName().substring(0,8).equalsIgnoreCase("consumer")) {<br>        acquire();<br>      }<br>      else if (Thread.currentThread().getName().substring(0,8).equalsIgnoreCase("producer")) {<br>        release();<br>      }<br>      System.out.println(Thread.currentThread().getName() + " " + count);<br>    }<br>  }<br>}</p> <p>       鐢熶駭鑰呯敓浜?娑堣垂鑰呮秷璐?涓鑸病鏈夊啿紿?浣嗗綋搴撳瓨涓?鏃?娑堣垂鑰呰娑堣垂鏄笉琛岀殑,浣嗗綋搴撳瓨涓轟笂闄?榪欓噷鏄?0)鏃?鐢熶駭鑰呬篃涓嶈兘鐢熶駭.璇峰ソ濂界爺璇諱笂闈㈢殑紼嬪簭,浣犱竴瀹氫細姣斾互鍓嶈繘姝ュ緢澶?</p> <p>      涓婇潰鐨勪唬鐮佽鏄庝簡synchronized鍜寃ait,notify娌℃湁緇濆鐨勫叧緋?鍦╯ynchronized澹版槑鐨勬柟娉曘佷唬鐮佸潡涓?浣犲畬鍏ㄥ彲浠ヤ笉鐢╳ait,notify絳夋柟娉?浣嗘槸,濡傛灉褰撶嚎紼嬪鏌愪竴璧勬簮瀛樺湪鏌愮浜夌敤鐨勬儏鍐典笅,浣犲繀欏婚傛椂寰楀皢綰跨▼鏀懼叆絳夊緟鎴栬呭敜閱?</p> <p> </p> <p>--------------------------------------------------------------------------------</p> <p><br>鏂囩珷緇堜簬鍐欏畬浜?鍩烘湰涓婂皢鎴戝涔犳墍寰楀叏閮ㄥ啓鍑烘潵浜?涓嶈繃涔熺暀涓嬩簺璁擱仐鎲?姣斿synchronized鍚庢槸綾繪椂鐨勬繁鍏ョ殑璇存槑鍙婅璁?鑰屼笖,鏂囩珷鐢變簬鑷繁鑳藉姏鏈夐檺,鏈変簺鍦版柟鑲畾浼氭湁閿欒,甯屾湜鐪嬭繃鏈変綍寤鴻鍜屾壒璇?璇峰彂甯栧湪涓嬮潰,鎴戜細淇璇ユ枃.璋㈣阿!<br> </p> <p> </p> <img src ="http://m.shnenglu.com/qywyh/aggbug/39317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qywyh/" target="_blank">璞?/a> 2007-12-23 03:25 <a href="http://m.shnenglu.com/qywyh/articles/39317.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆愯漿銆慗ava涓嶺ML璇誨啓涔婦OM綃?/title><link>http://m.shnenglu.com/qywyh/articles/39318.html</link><dc:creator>璞?/dc:creator><author>璞?/author><pubDate>Sat, 22 Dec 2007 19:25:00 GMT</pubDate><guid>http://m.shnenglu.com/qywyh/articles/39318.html</guid><wfw:comment>http://m.shnenglu.com/qywyh/comments/39318.html</wfw:comment><comments>http://m.shnenglu.com/qywyh/articles/39318.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/qywyh/comments/commentRss/39318.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qywyh/services/trackbacks/39318.html</trackback:ping><description><![CDATA[Java涓嶺ML璇誨啓涔婦OM綃?br>DOM<br>鍒濇<br>DOM鏄疍ocument Object Model鐨勭緝鍐欙紝鍗蟲枃妗e璞℃ā鍨嬨傚墠闈㈣榪囷紝XML灝嗘暟鎹粍緇囦負涓棰楁爲錛?br>鎵浠OM灝辨槸瀵硅繖棰楁爲鐨勪竴涓璞℃弿鍙欍傞氫織鐨勮錛屽氨鏄氳繃瑙f瀽XML鏂囨。錛屼負XML鏂囨。鍦?br>閫昏緫涓婂緩绔嬩竴涓爲妯″瀷錛屾爲鐨勮妭鐐規槸涓涓釜瀵硅薄銆傛垜浠氳繃瀛樺彇榪欎簺瀵硅薄灝辮兘澶熷瓨鍙朮ML鏂囨。<br>鐨勫唴瀹廣?br>涓嬮潰鎴戜滑鏉ョ湅涓涓畝鍗曠殑渚嬪瓙錛岀湅鐪嬪湪DOM涓紝鎴戜滑鏄浣曟潵鎿嶄綔涓涓猉ML鏂囨。鐨勩?br>榪欐槸涓涓猉ML鏂囨。錛屼篃鏄垜浠鎿嶄綔鐨勫璞★細<br>涓嬮潰錛屾垜浠渶瑕佹妸榪欎釜鏂囨。鐨勫唴瀹硅В鏋愬埌涓涓釜鐨凧ava瀵硅薄涓幓渚涚▼搴忎嬌鐢紝鍒╃敤JAXP錛屾垜浠?br>鍙渶鍑犺浠g爜灝辮兘鍋氬埌榪欎竴鐐廣傞鍏堬紝鎴戜滑闇瑕佸緩绔嬩竴涓В鏋愬櫒宸ュ巶錛屼互鍒╃敤榪欎釜宸ュ巶鏉ヨ幏寰?br>涓涓叿浣撶殑瑙f瀽鍣ㄥ璞★細<br>鎴戜滑鍦ㄨ繖閲屼嬌鐢―ocumentBuilderFacotry鐨勭洰鐨勬槸涓轟簡鍒涘緩涓庡叿浣撹В鏋愬櫒鏃犲叧鐨勭▼搴忥紝褰?br>DocumentBuilderFactory綾葷殑闈欐佹柟娉昻ewInstance()琚皟鐢ㄦ椂錛屽畠鏍規嵁涓涓郴緇熷彉閲忔潵鍐沖畾鍏蜂綋<br>浣跨敤鍝竴涓В鏋愬櫒銆傚張鍥犱負鎵鏈夌殑瑙f瀽鍣ㄩ兘鏈嶄粠浜嶫AXP鎵瀹氫箟鐨勬帴鍙o紝鎵浠ユ棤璁哄叿浣撲嬌鐢ㄥ摢涓<br>涓В鏋愬櫒錛屼唬鐮侀兘鏄竴鏍風殑銆傛墍浠ュ綋鍦ㄤ笉鍚岀殑瑙f瀽鍣ㄤ箣闂磋繘琛屽垏鎹㈡椂錛屽彧闇瑕佹洿鏀圭郴緇熷彉閲忕殑<br>鍊鹼紝鑰屼笉鐢ㄦ洿鏀逛換浣曚唬鐮併傝繖灝辨槸宸ュ巶鎵甯︽潵鐨勫ソ澶勩傝繖涓伐鍘傛ā寮忕殑鍏蜂綋瀹炵幇錛屽彲浠ュ弬鐪嬩笅<br>闈㈢殑綾誨浘銆?br>褰撹幏寰椾竴涓伐鍘傚璞″悗錛?浣跨敤瀹冪殑闈欐佹柟娉昻ewDocumentBuilder() 鏂規硶鍙互鑾峰緱涓涓?br>DocumentBuilder瀵硅薄錛岃繖涓璞′唬琛ㄤ簡鍏蜂綋鐨凞OM瑙f瀽鍣ㄣ備絾鍏蜂綋鏄摢涓縐嶈В鏋愬櫒錛屽井杞殑鎴?br>鑰匢BM鐨勶紝瀵逛簬紼嬪簭鑰岃█騫朵笉閲嶈銆?br>鐒跺悗錛屾垜浠氨鍙互鍒╃敤榪欎釜瑙f瀽鍣ㄦ潵瀵筙ML鏂囨。榪涜瑙f瀽浜嗭細<br>DocumentBuilder鐨刾arse()鏂規硶鎺ュ彈涓涓猉ML鏂囨。鍚嶄綔涓鴻緭鍏ュ弬鏁幫紝榪斿洖涓涓狣ocument瀵硅薄錛岃繖<br><?xml version="1.0" encoding="UTF-8"?><br><messages><br><message>Good-bye serialization, hello Java!</message><br></messages><br>DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();<br>DocumentBuilder db = dbf.newDocumentBuilder();<br>Document doc = db.parse("c:/xml/message.xml");<br>涓狣ocument瀵硅薄灝變唬琛ㄤ簡涓涓猉ML鏂囨。鐨勬爲妯″瀷銆備互鍚庢墍鏈夌殑瀵筙ML鏂囨。鐨勬搷浣滐紝閮戒笌瑙f瀽鍣?br>鏃犲叧錛岀洿鎺ュ湪榪欎釜Document瀵硅薄涓婅繘琛屾搷浣滃氨鍙互浜嗐傝屽叿浣撳Document鎿嶄綔鐨勬柟娉曪紝灝辨槸鐢?br>DOM鎵瀹氫箟鐨勪簡銆?br>Jaxp鏀寔W3C鎵鎺ㄨ崘鐨凞OM 2銆傚鏋滀綘瀵笵OM寰堢啛鎮夛紝閭d箞涓嬮潰鐨勫唴瀹瑰氨寰堢畝鍗曚簡錛氬彧闇瑕佹寜<br>鐓OM鐨勮鑼冩潵榪涜鏂規硶璋冪敤灝卞彲浠ャ傚綋鐒訛紝濡傛灉浣犲DOM涓嶆竻妤氾紝涔熶笉鐢ㄧ潃鎬ワ紝鍚庨潰鎴戜滑<br>浼氭湁璇︾粏鐨勪粙緇嶃傚湪榪欏効錛屼綘鎵瑕佺煡閬撳茍鐗㈣鐨勬槸錛欴OM鏄敤鏉ユ弿鍙橷ML鏂囨。涓殑鏁版嵁鐨勬ā鍨嬶紝<br>寮曞叆DOM鐨勫叏閮ㄥ師鍥犲氨鏄負浜嗙敤榪欎釜妯″瀷鏉ユ搷浣淴ML鏂囨。鐨勪腑鐨勬暟鎹侱OM瑙勮寖涓畾涔夋湁鑺?br>鐐癸紙鍗沖璞★級銆佸睘鎬у拰鏂規硶錛屾垜浠氳繃榪欎簺鑺傜偣鐨勫瓨鍙栨潵瀛樺彇XML鐨勬暟鎹?br>浠庝笂闈㈠緱鍒扮殑Document瀵硅薄寮濮嬶紝鎴戜滑灝卞彲浠ュ紑濮嬫垜浠殑DOM涔嬫梾浜嗐備嬌鐢―ocument瀵硅薄鐨?br>getElementsByTagName()鏂規硶錛屾垜浠彲浠ュ緱鍒頒竴涓狽odeList瀵硅薄錛屼竴涓狽ode瀵硅薄浠h〃浜嗕竴涓猉ML<br>鏂囨。涓殑涓涓爣絳懼厓绱狅紝鑰孨odeList瀵硅薄錛岃鍏跺悕鑰岀煡鍏舵剰錛屾墍浠h〃鐨勬槸涓涓狽ode瀵硅薄鐨勫垪琛細<br>鎴戜滑閫氳繃榪欐牱涓鏉¤鍙ユ墍寰楀埌鐨勬槸XML鏂囨。涓墍鏈?lt;message>鏍囩瀵瑰簲鐨凬ode瀵硅薄鐨勪竴涓垪<br>琛ㄣ傜劧鍚庯紝鎴戜滑鍙互浣跨敤NodeList瀵硅薄鐨刬tem()鏂規硶鏉ュ緱鍒板垪琛ㄤ腑鐨勬瘡涓涓狽ode瀵硅薄錛?br>褰撲竴涓狽ode瀵硅薄琚緩绔嬩箣鍚庯紝淇濆瓨鍦╔ML鏂囨。涓殑鏁版嵁灝辮鎻愬彇鍑烘潵騫跺皝瑁呭湪榪欎釜Node涓簡銆?br>NodeList nl = doc.getElementsByTagName("message");<br>Node my_node = nl.item(0);<br>鍦ㄨ繖涓緥瀛愪腑錛岃鎻愬彇Message鏍囩鍐呯殑鍐呭錛屾垜浠氬父浼氫嬌鐢∟ode瀵硅薄鐨刧etNodeValue()鏂規硶錛?br>璇鋒敞鎰忥紝榪欓噷榪樹嬌鐢ㄤ簡涓涓猤etFirstChild()鏂規硶鏉ヨ幏寰梞essage涓嬮潰鐨勭涓涓瓙Node瀵硅薄銆傝櫧鐒跺湪<br>message 鏍囩涓嬮潰闄や簡鏂囨湰澶栧茍娌℃湁鍏跺畠瀛愭爣絳炬垨鑰呭睘鎬э紝 浣嗘槸鎴戜滑鍧氭寔鍦ㄨ繖閲屼嬌鐢?br>getFirseChild()鏂規硶錛岃繖涓昏鍜學3C瀵笵OM鐨勫畾涔夋湁鍏熾俉3C鎶婃爣絳懼唴鐨勬枃鏈儴鍒嗕篃瀹氫箟鎴愪竴<br>涓狽ode錛屾墍浠ュ厛瑕佸緱鍒頒唬琛ㄦ枃鏈殑閭d釜Node錛屾垜浠墠鑳藉浣跨敤getNodeValue()鏉ヨ幏鍙栨枃鏈殑鍐?br>瀹廣?br>鐜板湪錛屾棦鐒舵垜浠凡緇忚兘澶熶粠XML鏂囦歡涓彁鍙栧嚭鏁版嵁浜嗭紝鎴戜滑灝卞彲浠ユ妸榪欎簺鏁版嵁鐢ㄥ湪鍚堥傜殑鍦版柟錛?br>鏉ユ瀯絳戝簲鐢ㄧ▼搴忋?br>涓嬮潰鐨勫唴瀹癸紝鎴戜滑灝嗘洿澶氱殑鍏蟲敞DOM錛屼負DOM浣滀竴涓緝涓鴻緇嗙殑瑙f瀽錛屼嬌鎴戜滑浣跨敤璧鋒潵鏇翠負<br>寰楀績搴旀墜銆?br>DOM<br>璇﹁В<br>DOM鐨勫熀鏈璞℃湁5涓細Document錛孨ode錛孨odeList錛孍lement鍜孉ttr銆備笅闈㈠氨榪欎簺瀵硅薄鐨勫姛<br>鑳藉拰瀹炵幇鐨勬柟娉曚綔涓涓ぇ鑷寸殑浠嬬粛銆?br>Document瀵硅薄浠h〃浜嗘暣涓猉ML鐨勬枃妗o紝鎵鏈夊叾瀹冪殑Node錛岄兘浠ヤ竴瀹氱殑欏哄簭鍖呭惈鍦―ocument<br>String message = my_node.getFirstChild().getNodeValue();<br>1錛庡熀鏈殑DOM瀵硅薄<br>瀵硅薄涔嬪唴錛屾帓鍒楁垚涓涓爲褰㈢殑緇撴瀯錛岀▼搴忓憳鍙互閫氳繃閬嶅巻榪欓鏍戞潵寰楀埌XML鏂囨。鐨勬墍鏈夌殑鍐呭錛?br>榪欎篃鏄XML鏂囨。鎿嶄綔鐨勮搗鐐廣傛垜浠繪槸鍏堥氳繃瑙f瀽XML婧愭枃浠惰屽緱鍒頒竴涓狣ocument瀵硅薄錛?br>鐒跺悗鍐嶆潵鎵ц鍚庣畫鐨勬搷浣溿傛澶栵紝Document榪樺寘鍚簡鍒涘緩鍏跺畠鑺傜偣鐨勬柟娉曪紝姣斿createAttribut()<br>鐢ㄦ潵鍒涘緩涓涓狝ttr瀵硅薄銆傚畠鎵鍖呭惈鐨勪富瑕佺殑鏂規硶鏈夛細<br>createAttribute(String)錛氱敤緇欏畾鐨勫睘鎬у悕鍒涘緩涓涓狝ttr瀵硅薄錛屽茍鍙湪鍏跺悗浣跨敤setAttributeNode<br>鏂規硶鏉ユ斁緗湪鏌愪竴涓狤lement瀵硅薄涓婇潰銆?br>createElement(String)錛氱敤緇欏畾鐨勬爣絳懼悕鍒涘緩涓涓狤lement瀵硅薄錛屼唬琛╔ML鏂囨。涓殑涓涓爣絳撅紝<br>鐒跺悗灝卞彲浠ュ湪榪欎釜Element瀵硅薄涓婃坊鍔犲睘鎬ф垨榪涜鍏跺畠鐨勬搷浣溿?br>createTextNode(String)錛氱敤緇欏畾鐨勫瓧絎︿覆鍒涘緩涓涓猅ext瀵硅薄錛孴ext瀵硅薄浠h〃浜嗘爣絳炬垨鑰呭睘鎬т腑<br>鎵鍖呭惈鐨勭函鏂囨湰瀛楃涓層傚鏋滃湪涓涓爣絳懼唴娌℃湁鍏跺畠鐨勬爣絳撅紝閭d箞鏍囩鍐呯殑鏂囨湰鎵浠h〃鐨凾ext<br>瀵硅薄鏄繖涓狤lement瀵硅薄鐨勫敮涓瀛愬璞°?br>getElementsByTagName(String)錛氳繑鍥炰竴涓狽odeList瀵硅薄錛屽畠鍖呭惈浜嗘墍鏈夌粰瀹氭爣絳懼悕瀛楃殑鏍囩銆?br>getDocumentElement()錛氳繑鍥炰竴涓唬琛ㄨ繖涓狣OM鏍戠殑鏍硅妭鐐圭殑Element瀵硅薄錛屼篃灝辨槸浠h〃XML<br>鏂囨。鏍瑰厓绱犵殑閭d釜瀵硅薄銆?br>Node瀵硅薄鏄疍OM緇撴瀯涓渶涓哄熀鏈殑瀵硅薄錛屼唬琛ㄤ簡鏂囨。鏍戜腑鐨勪竴涓娊璞$殑鑺傜偣銆傚湪瀹為檯浣跨敤鐨?br>鏃跺欙紝寰堝皯浼氱湡姝g殑鐢ㄥ埌Node榪欎釜瀵硅薄錛岃屾槸鐢ㄥ埌璇稿Element銆丄ttr銆乀ext絳塏ode瀵硅薄鐨勫瓙<br>瀵硅薄鏉ユ搷浣滄枃妗c侼ode瀵硅薄涓鴻繖浜涘璞℃彁渚涗簡涓涓娊璞$殑銆佸叕鍏辯殑鏍廣傝櫧鐒跺湪Node瀵硅薄涓畾<br>涔変簡瀵瑰叾瀛愯妭鐐硅繘琛屽瓨鍙栫殑鏂規硶錛屼絾鏄湁涓浜汵ode瀛愬璞★紝姣斿Text瀵硅薄錛屽畠騫朵笉瀛樺湪瀛愯妭鐐癸紝<br>榪欎竴鐐規槸瑕佹敞鎰忕殑銆侼ode瀵硅薄鎵鍖呭惈鐨勪富瑕佺殑鏂規硶鏈夛細<br>appendChild(org.w3c.dom.Node)錛氫負榪欎釜鑺傜偣娣誨姞涓涓瓙鑺傜偣錛屽茍鏀懼湪鎵鏈夊瓙鑺傜偣鐨勬渶鍚庯紝<br>濡傛灉榪欎釜瀛愯妭鐐瑰凡緇忓瓨鍦紝鍒欏厛鎶婂畠鍒犳帀鍐嶆坊鍔犺繘鍘匯?br>getFirstChild()錛氬鏋滆妭鐐瑰瓨鍦ㄥ瓙鑺傜偣錛屽垯榪斿洖絎竴涓瓙鑺傜偣錛屽絳夌殑錛岃繕鏈塯etLastChild()鏂規硶<br>榪斿洖鏈鍚庝竴涓瓙鑺傜偣銆?br>getNextSibling() 錛?榪斿洖鍦―OM 鏍戜腑榪欎釜鑺傜偣鐨勪笅涓涓厔寮熻妭鐐癸紝 瀵圭瓑鐨勶紝 榪樻湁<br>getPreviousSibling()鏂規硶榪斿洖鍏跺墠涓涓厔寮熻妭鐐廣?br>getNodeName()錛氭牴鎹妭鐐圭殑綾誨瀷榪斿洖鑺傜偣鐨勫悕縐般?br>getNodeType()錛氳繑鍥炶妭鐐圭殑綾誨瀷銆?br>getNodeValue()錛氳繑鍥炶妭鐐圭殑鍊箋?br>hasChildNodes()錛氬垽鏂槸涓嶆槸瀛樺湪鏈夊瓙鑺傜偣銆?br>hasAttributes()錛氬垽鏂繖涓妭鐐規槸鍚﹀瓨鍦ㄦ湁灞炴с?br>getOwnerDocument()錛氳繑鍥炶妭鐐規墍澶勭殑Document瀵硅薄銆?br>insertBefore(org.w3c.dom.Node new錛宱rg.w3c.dom.Node ref)錛氬湪緇欏畾鐨勪竴涓瓙瀵硅薄鍓嶅啀鎻掑叆<br>涓涓瓙瀵硅薄銆?br>removeChild(org.w3c.dom.Node)錛氬垹闄ょ粰瀹氱殑瀛愯妭鐐瑰璞°?br>replaceChild(org.w3c.dom.Node new錛宱rg.w3c.dom.Node old)錛氱敤涓涓柊鐨凬ode瀵硅薄浠f浛緇?br>瀹氱殑瀛愯妭鐐瑰璞°?br>NodeList瀵硅薄錛岄【鍚嶆濅箟錛屽氨鏄唬琛ㄤ簡涓涓寘鍚簡涓涓垨鑰呭涓狽ode鐨勫垪琛ㄣ傚彲浠ョ畝鍗曠殑鎶婂畠<br>鐪嬫垚涓涓狽ode鐨勬暟緇勶紝鎴戜滑鍙互閫氳繃鏂規硶鏉ヨ幏寰楀垪琛ㄤ腑鐨勫厓绱狅細<br>GetLength()錛氳繑鍥炲垪琛ㄧ殑闀垮害銆?br>Item(int)錛氳繑鍥炴寚瀹氫綅緗殑Node瀵硅薄銆?br>Element瀵硅薄浠h〃鐨勬槸XML鏂囨。涓殑鏍囩鍏冪礌錛岀戶鎵夸簬Node錛屼害鏄疦ode鐨勬渶涓昏鐨勫瓙瀵硅薄銆傚湪<br>鏍囩涓彲浠ュ寘鍚湁灞炴э紝鍥犺孍lement瀵硅薄涓湁瀛樺彇鍏跺睘鎬х殑鏂規硶錛岃屼換浣昇ode涓畾涔夌殑鏂規硶錛?br>涔熷彲浠ョ敤鍦‥lement瀵硅薄涓婇潰銆?br>getElementsByTagName(String)錛氳繑鍥炰竴涓狽odeList瀵硅薄錛屽畠鍖呭惈浜嗗湪榪欎釜鏍囩涓叾涓嬬殑瀛愬瓩<br>鑺傜偣涓叿鏈夌粰瀹氭爣絳懼悕瀛楃殑鏍囩銆?br>getTagName()錛氳繑鍥炰竴涓唬琛ㄨ繖涓爣絳懼悕瀛楃殑瀛楃涓層?br>getAttribute(String)錛氳繑鍥炴爣絳句腑緇欏畾灞炴у悕縐扮殑灞炴х殑鍊箋傚湪榪欏効闇瑕佷富瑕佺殑鏄紝搴斾負XML<br>鏂囨。涓厑璁告湁瀹炰綋灞炴у嚭鐜幫紝鑰岃繖涓柟娉曞榪欎簺瀹炰綋灞炴у茍涓嶉傜敤銆傝繖鏃跺欓渶瑕佺敤鍒?br>getAttributeNodes()鏂規硶鏉ュ緱鍒頒竴涓狝ttr瀵硅薄鏉ヨ繘琛岃繘涓姝ョ殑鎿嶄綔銆?br>getAttributeNode(String)錛氳繑鍥炰竴涓唬琛ㄧ粰瀹氬睘鎬у悕縐扮殑Attr瀵硅薄銆?br>Attr瀵硅薄浠h〃浜嗘煇涓爣絳句腑鐨勫睘鎬с侫ttr緇ф壙浜嶯ode錛屼絾鏄洜涓篈ttr瀹為檯涓婃槸鍖呭惈鍦‥lement涓?br>鐨勶紝瀹冨茍涓嶈兘琚湅浣滄槸Element鐨勫瓙瀵硅薄錛屽洜鑰屽湪DOM涓瑼ttr騫朵笉鏄疍OM鏍戠殑涓閮ㄥ垎錛屾墍浠ode<br>涓殑getparentNode()錛実etpreviousSibling()鍜実etnextSibling()榪斿洖鐨勯兘灝嗘槸null銆備篃灝辨槸璇達紝<br>Attr鍏跺疄鏄鐪嬩綔鍖呭惈瀹冪殑Element瀵硅薄鐨勪竴閮ㄥ垎錛屽畠騫朵笉浣滀負DOM鏍戜腑鍗曠嫭鐨勪竴涓妭鐐瑰嚭鐜般?br>榪欎竴鐐瑰湪浣跨敤鐨勬椂鍊欒鍚屽叾瀹冪殑Node瀛愬璞$浉鍖哄埆銆?br>闇瑕佽鏄庣殑鏄紝涓婇潰鎵璇寸殑DOM瀵硅薄鍦―OM涓兘鏄敤鎺ュ彛瀹氫箟鐨勶紝鍦ㄥ畾涔夌殑鏃跺欎嬌鐢ㄧ殑鏄笌<br>鍏蜂綋璇█鏃犲叧鐨処DL璇█鏉ュ畾涔夌殑銆傚洜鑰岋紝DOM鍏跺疄鍙互鍦ㄤ換浣曢潰鍚戝璞$殑璇█涓疄鐜幫紝鍙<br>瀹冨疄鐜頒簡DOM鎵瀹氫箟鐨勬帴鍙e拰鍔熻兘灝卞彲浠ヤ簡銆傚悓鏃訛紝鏈変簺鏂規硶鍦―OM涓茍娌℃湁瀹氫箟錛屾槸鐢↖DL<br>鐨勫睘鎬ф潵琛ㄨ揪鐨勶紝褰撹鏄犲皠鍒板叿浣撶殑璇█鏃訛紝榪欎簺灞炴ц鏄犲皠涓虹浉搴旂殑鏂規硶銆?br>鏈変簡涓婇潰鐨勪粙緇嶏紝鐩鎬俊浣犲DOM鐞嗚В鐨勬洿澶氫簡鍚с備笅闈㈢殑渚嬪瓙灝嗚浣犲DOM鏇村姞鐔熸倝璧鋒潵銆?br>鍏堣璇磋繖涓緥瀛愬埌搴曡鍋氱殑鏄粈涔堝惂錛屾垜浠笇鏈涘湪涓涓悕涓簂ink.xml鏂囦歡涓繚瀛樹簡涓浜沀RL鍦?br>鍧錛岄氳繃涓涓畝鍗曠殑紼嬪簭錛屾垜浠彲浠ラ氳繃DOM鎶婅繖浜沀RL璇誨嚭騫舵樉紺哄嚭鏉ワ紝涔熷彲浠ュ弽榪囨潵鍚戣繖<br>涓猉ML鏂囦歡涓啓鍏ュ姞鍏ョ殑URL鍦板潃銆傚緢綆鍗曪紝鍗村緢瀹炵敤錛屼篃瓚沖鏉ヤ緥紺篋OM鐨勭粷澶ч儴鍒嗙敤娉曚簡銆?br>XML鏂囦歡鏈韓涓嶅鏉傦紝灝變笉緇欏嚭瀹冪殑DTD浜嗐俵ink.xml:<br>2錛嶥OM瀹炰緥<br><?xml version="1.0" standalone="yes"?><br><links><br><link><br><text>JSP Insider</text><br><url newWindow="no">http://www.jspinsider.com</url><br><author>JSP Insider</author><br><date><br><day>2</day><br><month>1</month><br><year>2001</year><br></date><br><description>A JSP information site.</description><br></link><br><link><br><text>The makers of Java</text><br><url newWindow="no">http://java.sun.com</url><br><author>Sun Microsystems</author><br><date><br><day>3</day><br><month>1</month><br><year>2001</year><br></date><br><description>Sun Microsystem's website.</description><br></link><br><link><br>絎竴涓▼搴忔垜浠О涓簒mldisplay.java錛屽叿浣撶殑紼嬪簭娓呭崟鍙互鍦ㄩ檮浠朵腑鎵懼埌銆備富瑕佺殑鍔熻兘灝辨槸璇?br>鍙栬繖涓猉ML鏂囦歡涓悇涓妭鐐圭殑鍐呭錛岀劧鍚庡湪鏍煎紡鍖栬緭鍑哄湪System.out涓婏紝鎴戜滑鏉ョ湅鐪嬭繖涓▼搴忥細<br>榪欐槸寮曞叆蹇呰鐨勭被錛?鍥犱負鍦ㄨ繖閲屼嬌鐢ㄧ殑鏄疭un 鎵鎻愪緵鐨刋ML 瑙f瀽鍣紝 鍥犺岄渶瑕佸紩鍏?br>java.xml.parsers鍖咃紝鍏朵腑鍖呭惈浜嗘湁DOM瑙f瀽鍣ㄥ拰SAX瑙f瀽鍣ㄧ殑鍏蜂綋瀹炵幇銆俹rg.w3c.dom鍖呬腑瀹?br>涔変簡w3c鎵鍒跺畾鐨凞OM鎺ュ彛銆?br>闄や簡涓婇潰璁插埌鐨勶紝榪樻湁涓涓皬鎶宸э紝瀵笵ocument瀵硅薄璋冪敤normalize()錛屽彲浠ュ幓鎺塜ML鏂囨。涓綔<br>涓烘牸寮忓寲鍐呭鐨勭┖鐧借屾槧灝勫湪DOM鏍戜腑鐨勪笉蹇呰鐨凾ext Node瀵硅薄銆傚惁鍒欎綘寰楀埌鐨凞OM鏍戝彲鑳?br>騫朵笉濡備綘鎵鎯寵薄鐨勯偅鏍楓傜壒鍒槸鍦ㄨ緭鍑虹殑鏃跺欙紝榪欎釜normalize()鏇翠負鏈夌敤銆?br>鍒氭墠璇磋繃錛孹ML鏂囨。涓殑絀虹櫧絎︿篃浼氳浣滀負瀵硅薄鏄犲皠鍦―OM鏍戜腑銆傚洜鑰岋紝鐩存帴璋冪敤Node鏂規硶<br>鐨刧etChildNodes鏂規硶鏈夋椂鍊欎細鏈変簺闂錛屾湁鏃朵笉鑳藉榪斿洖鎵鏈熸湜鐨凬odeList瀵硅薄銆傝В鍐崇殑鍔炴硶<br>鏄嬌鐢‥lement鐨刧etElementByTagName(String)錛岃繑鍥炵殑NodeLise灝辨槸鎵鏈熷緟鐨勫璞′簡銆傜劧<br>鍚庯紝鍙互鐢╥tem()鏂規硶鎻愬彇鎯寵鐨勫厓绱犮?br><text>The standard JSP container</text><br><url newWindow="no">http://jakarta.apache.org</url><br><author>Apache Group</author><br><date><br><day>4</day><br><month>1</month><br><year>2001</year><br></date><br><description>Some great software.</description><br></link><br></links><br>import javax.xml.parsers.*;<br>import org.w3c.dom.*;<br>DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();<br>DocumentBuilder builder=factory.newDocumentBuilder();<br>Document doc=builder.parse("links.xml");<br>doc.normalize();<br>NodeList links =doc.getElementsByTagName("link");<br>for (int i=0;i<links.getLength();i++){<br>Element link=(Element) links.item(i);<br>System.out.print("Content: ");<br>System.out.println(link.getElementsByTagName("text").item(0).getFirstChild().getNodeValue()<br>涓婇潰鐨勪唬鐮佺墖鏂氨瀹屾垚浜嗗XML鏂囨。鍐呭鐨勬牸寮忓寲杈撳嚭銆傚彧瑕佹敞鎰忓埌涓浜涚粏鑺傜殑闂錛屾瘮濡?br>getFirstChile()鏂規硶鍜実etElementsByTagName()鏂規硶鐨勪嬌鐢紝榪欎簺榪樻槸姣旇緝瀹規槗鐨勩?br>涓嬮潰鐨勫唴瀹癸紝灝辨槸鍦ㄤ慨鏀逛簡DOM鏍戝悗閲嶆柊鍐欏叆鍒癤ML鏂囨。涓幓鐨勯棶棰樹簡銆傝繖涓▼搴忓悕涓?br>xmlwrite.java銆傚湪JAXP1.0鐗堟湰涓紝騫舵病鏈夌洿鎺ョ殑綾誨拰鏂規硶鑳藉澶勭悊XML鏂囨。鐨勫啓鍏ラ棶棰橈紝闇<br>瑕佸熷姪鍏跺畠鍖呬腑鐨勪竴浜涜緟鍔╃被銆傝屽湪JAXP1.1鐗堟湰涓紝寮曞叆浜嗗XSLT鐨勬敮鎸侊紝鎵璋揦SLT錛屽氨<br>鏄XML鏂囨。榪涜鍙樻崲錛圱ranslation錛夊悗錛屽緱鍒頒竴涓柊鐨勬枃妗g粨鏋勩傚埄鐢ㄨ繖涓柊鍔犲叆鐨勫姛鑳斤紝<br>鎴戜滑灝辮兘澶熷緢鏂逛究鐨勬妸鏂扮敓鎴愭垨鑰呬慨鏀瑰悗鐨凞OM鏍戜粠鏂板啓鍥炲埌XML鏂囦歡涓幓浜嗭紝涓嬮潰鎴戜滑鏉ョ湅<br>鐪嬩唬鐮佺殑瀹炵幇錛岃繖孌典唬鐮佺殑涓昏鍔熻兘鏄悜links.xml鏂囦歡涓姞鍏ヤ竴涓柊鐨刲ink鑺傜偣錛?br>鏂板紩鍏ョ殑java.xml.transform鍖呬腑鐨勫嚑涓被錛屽氨鏄敤鏉ュ鐞哫SLT鍙樻崲鐨勩?br>鎴戜滑甯屾湜鍦ㄤ笂闈㈢殑XML鏂囦歡涓姞鍏ヤ竴涓柊鐨刲ink鑺傜偣錛屽洜鑰岄鍏堣繕鏄璇誨叆links.xml鏂囦歡錛屾瀯寤?br>涓涓狣OM鏍戯紝鐒跺悗鍐嶅榪欎釜DOM鏍戣繘琛屼慨鏀癸紙娣誨姞鑺傜偣錛夛紝鏈鍚庢妸淇敼鍚庣殑DOM鍐欏洖鍒發inks.xml<br>鏂囦歡涓細<br>);<br>System.out.print("URL: ");<br>System.out.println(link.getElementsByTagName("url").item(0).getFirstChild().getNodeValue());<br>System.out.print("Author: ");<br>System.out.println(link.getElementsByTagName("author").item(0).getFirstChild().getNodeVal<br>ue());<br>System.out.print("Date: ");<br>Element linkdate=(Element) link.getElementsByTagName("date").item(0);<br>String day=linkdate.getElementsByTagName("day").item(0).getFirstChild().getNodeValue();<br>String<br>month=linkdate.getElementsByTagName("month").item(0).getFirstChild().getNodeValue();<br>String year=linkdate.getElementsByTagName("year").item(0).getFirstChild().getNodeValue();<br>System.out.println(day+"-"+month+"-"+year);<br>System.out.print("Description: ");<br>System.out.println(link.getElementsByTagName("description").item(0).getFirstChild().getNod<br>eValue());<br>System.out.println();<br>}<br>import javax.xml.parsers.*;<br>import javax.xml.transform.*;<br>import javax.xml.transform.dom.DOMSource;<br>import javax.xml.transform.stream.StreamResult;<br>import org.w3c.dom.*;<br>涓轟簡鐪嬫竻閲嶇偣錛岀畝鍖栫▼搴忥紝鎴戜滑鎶婅鍔犲叆鐨勫唴瀹圭‖緙栫爜鍒拌蹇哠tring瀵硅薄涓紝鑰屽疄闄呮搷浣滀腑錛屽線<br>寰鍒╃敤涓涓晫闈㈡潵鎻愬彇鐢ㄦ埛杈撳叆錛屾垨鑰呴氳繃JDBC浠庢暟鎹簱涓彁鍙栨兂瑕佺殑鍐呭銆?br>棣栧厛搴旇鏄庝簡鐨勬槸錛屾棤璁轟粈涔堢被鍨嬬殑Node錛孴ext鍨嬬殑涔熷ソ錛孉ttr鍨嬬殑涔熷ソ錛孍lement鍨嬬殑涔熷ソ錛?br>瀹冧滑鐨勫垱寤洪兘鏄氳繃Document瀵硅薄涓殑createXXX()鏂規硶鏉ュ垱寤虹殑錛圶XX浠h〃鍏蜂綋瑕佸垱寤虹殑綾?br>鍨嬶級錛屽洜姝わ紝鎴戜滑瑕佸悜XML鏂囨。涓坊鍔犱竴涓猯ink欏圭洰錛岄鍏堣鍒涘緩涓涓猯ink瀵硅薄錛?br>DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();<br>DocumentBuilder builder=factory.newDocumentBuilder();<br>Document doc=builder.parse("links.xml");<br>doc.normalize();<br>//---鍙栧緱鍙橀噺----<br>String text="Hanzhong's Homepage";<br>String url="<a ;<br>String author="Hzliu Liu";<br>String discription="A site from Hanzhong Liu, give u lots of suprise!!!";<br>Text textseg;<br>Element link=doc.createElement("link");<br>Element linktext=doc.createElement("text");<br>textseg=doc.createTextNode(text);<br>linktext.appendChild(textseg);<br>link.appendChild(linktext);<br>Element linkurl=doc.createElement("url");<br>textseg=doc.createTextNode(url);<br>linkurl.appendChild(textseg);<br>link.appendChild(linkurl);<br>Element linkauthor=doc.createElement("author");<br>textseg=doc.createTextNode(author);<br>linkauthor.appendChild(textseg);<br>link.appendChild(linkauthor);<br>java.util.Calendar rightNow = java.util.Calendar.getInstance();<br>String day=Integer.toString(rightNow.get(java.util.Calendar.DAY_OF_MONTH));<br>String month=Integer.toString(rightNow.get(java.util.Calendar.MONTH));<br>String year=Integer.toString(rightNow.get(java.util.Calendar.YEAR));<br>Element linkdate=doc.createElement("date");<br>Element linkdateday=doc.createElement("day");<br>textseg=doc.createTextNode(day);<br>linkdateday.appendChild(textseg);<br>Element linkdatemonth=doc.createElement("month");<br>鍒涘緩鑺傜偣鐨勮繃紼嬪彲鑳芥湁浜涘崈綃囦竴寰嬶紝浣嗛渶瑕佹敞鎰忕殑鍦版柟鏄紝瀵笶lement涓墍鍖呭惈鐨則ext錛堝湪DOM<br>涓紝榪欎簺text涔熸槸浠h〃浜嗕竴涓狽ode鐨勶紝鍥犳涔熷繀欏諱負瀹冧滑鍒涘緩鐩稿簲鐨刵ode錛夛紝涓嶈兘鐩存帴鐢‥lement<br>瀵硅薄鐨剆etNodeValue()鏂規硶鏉ヨ緗繖浜泃ext鐨勫唴瀹癸紝鑰岄渶瑕佺敤鍒涘緩鐨凾ext瀵硅薄鐨剆etNodeValue()<br>鏂規硶鏉ヨ緗枃鏈紝榪欐牱鎵嶈兘澶熸妸鍒涘緩鐨凟lement鍜屽叾鏂囨湰鍐呭娣誨姞鍒癉OM鏍戜腑銆傜湅鐪嬪墠闈㈢殑浠?br>鐮侊紝浣犱細鏇村ソ鐨勭悊瑙h繖涓鐐癸細<br>鏈鍚庯紝涓嶈蹇樿鎶婂垱寤哄ソ鐨勮妭鐐規坊鍔犲埌DOM鏍戜腑銆侱ocument綾葷殑getDocumentElement()鏂規硶錛?br>榪斿洖浠h〃鏂囨。鏍硅妭鐐圭殑Element瀵硅薄銆傚湪XML鏂囨。涓紝鏍硅妭鐐逛竴瀹氭槸鍞竴鐨勩?br>鐒跺悗灝辨槸鐢╔SLT鎶奃OM鏍戣緭鍑轟簡銆傝繖閲岀殑TransformerFactory涔熷悓鏍峰簲鐢ㄤ簡宸ュ巶妯″紡錛屼嬌寰楀叿<br>浣撶殑浠g爜鍚屽叿浣撶殑鍙樻崲鍣ㄦ棤鍏熾傚疄鐜扮殑鏂規硶鍜孌ocumentBuilderFactory鐩稿悓錛岃繖鍎垮氨涓嶈禈榪頒簡銆?br>Transformer綾葷殑transfrom鏂規硶鎺ュ彈涓や釜鍙傛暟銆佷竴涓暟鎹簮Source鍜屼竴涓緭鍑虹洰鏍嘡esult銆傝繖閲?br>鍒嗗埆浣跨敤鐨勬槸DOMSource鍜孲treamResult錛岃繖鏍峰氨鑳藉鎶奃OM鐨勫唴瀹硅緭鍑哄埌涓涓緭鍑烘祦涓紝<br>褰撹繖涓緭鍑烘祦鏄竴涓枃浠剁殑鏃跺欙紝DOM鐨勫唴瀹瑰氨琚啓鍏ュ埌鏂囦歡涓幓浜嗐?br>濂戒簡錛屽叧浜嶥OM鐨勮瘽棰樺氨鍏堝埌榪欓噷錛屼笅綃囨枃绔犲皢浠嬬粛鐨勫唴瀹規槸SAX銆傝鐪婮ava涓嶺ML璇誨啓涔?br>SAX綃?br>textseg=doc.createTextNode(month);<br>linkdatemonth.appendChild(textseg);<br>Element linkdateyear=doc.createElement("year");<br>textseg=doc.createTextNode(year);<br>linkdateyear.appendChild(textseg);<br>linkdate.appendChild(linkdateday);<br>linkdate.appendChild(linkdatemonth);<br>linkdate.appendChild(linkdateyear);<br>link.appendChild(linkdate);<br>Element linkdiscription=doc.createElement("description");<br>textseg=doc.createTextNode(discription);<br>linkdiscription.appendChild(textseg);<br>link.appendChild(linkdiscription);<br>doc.getDocumentElement().appendChild(link);<br>TransformerFactory tFactory =TransformerFactory.newInstance();<br>Transformer transformer = tFactory.newTransformer();<br>DOMSource source = new DOMSource(doc);<br>StreamResult result = new StreamResult(new java.io.File("links.xml"));<br>transformer.transform(source, result); <img src ="http://m.shnenglu.com/qywyh/aggbug/39318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qywyh/" target="_blank">璞?/a> 2007-12-23 03:25 <a href="http://m.shnenglu.com/qywyh/articles/39318.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆愯漿銆慾ava涔辯爜瑙e喅鏂規http://m.shnenglu.com/qywyh/articles/39316.html璞?/dc:creator>璞?/author>Sat, 22 Dec 2007 19:24:00 GMThttp://m.shnenglu.com/qywyh/articles/39316.htmlhttp://m.shnenglu.com/qywyh/comments/39316.htmlhttp://m.shnenglu.com/qywyh/articles/39316.html#Feedback0http://m.shnenglu.com/qywyh/comments/commentRss/39316.htmlhttp://m.shnenglu.com/qywyh/services/trackbacks/39316.html1.瀛楄妭鍜寀nicode
java鍐呮牳鏄痷nicode鐨勶紝灝辮繛class鏂囦歡涔熸槸錛屼絾鏄緢澶氬獟浣擄紝鍖呮嫭鏂囦歡/嫻佺殑淇濆瓨鏂瑰紡鏄嬌鐢ㄥ瓧鑺傛祦鐨勩傚洜姝ava瑕佸榪欎簺瀛楄妭嫻佺粡琛岃漿鍖栥俢har鏄痷nicode鐨勶紝鑰宐yte鏄瓧鑺傘俲ava涓璪yte/char浜掕漿鐨勫嚱鏁板湪sun.io鐨勫寘涓棿鏈夈?br>鍏朵腑ByteToCharConverter綾繪槸涓皟搴︼紝鍙互鐢ㄦ潵鍛婅瘔浣狅紝浣犵敤鐨刢onvertor銆傚叾涓袱涓緢甯哥敤鐨勯潤鎬佸嚱鏁版槸
public static ByteToCharConverter getDefault();
public static ByteToCharConverter getConverter(String encoding);
濡傛灉浣犱笉鎸囧畾converter錛屽垯緋葷粺浼氳嚜鍔ㄤ嬌鐢ㄥ綋鍓嶇殑encoding,gb騫沖彴涓婄敤gbk,en騫沖彴涓婄敤8859_1銆?/p>


byte 鈥斺斻塩har錛?br>"浣?鐨刧b鐮佹槸錛?xc4e3 ,unicode鏄?x4f60
String encoding = "gb2312";
byte b[] = {(byte)'\u00c4',(byte)'\u00e3'};
ByteToCharConverter converter =
ByteToCharConverter.getConverter(encoding);
char c[] = converter.convertAll(b);
for (int i = 0; i < c.length; i++) {
System.out.println(Integer.toHexString(c[i]));
}
緇撴灉鏄粈涔堬紵0x4f60
濡傛灉encoding ="8859_1"錛岀粨鏋滃張鏄粈涔堬紵0x00c4,0x00e3
濡傛灉浠g爜鏀逛負
byte b[] = {(byte)'\u00c4',(byte)'\u00e3'};
ByteToCharConverter converter = ByteToCharConverter. getDefault();
char c[] = converter.convertAll(b);
for (int i = 0; i < c.length; i++) {
System.out.println(Integer.toHexString(c[i]));
}
緇撴灉灝嗗張鏄粈涔堬紵鏍規嵁騫沖彴鐨勭紪鐮佽屽畾銆?/p>

char 鈥斺斻塨yte錛?br>String encoding = "gb2312";
char c[] = {'\u4f60'};
CharToByteConverter converter = CharToByteConverter.getConverter(encoding);
byte b[] = converter.convertAll(c);
for (int i = 0; i < b.length; i++) {
System.out.println(Integer.toHexString(b[i]));
}
緇撴灉鏄粈涔堬紵0x00c4,0x00e3
濡傛灉encoding ="8859_1"錛岀粨鏋滃張鏄粈涔堬紵0x3f
濡傛灉浠g爜鏀逛負
String encoding = "gb2312";
char c[] = {'\u4f60'};
CharToByteConverter converter = CharToByteConverter.getDefault();
byte b[] = converter.convertAll(c);
for (int i = 0; i < b.length; i++) {
System.out.println(Integer.toHexString(b[i]));
}
緇撴灉灝嗗張鏄粈涔堬紵鏍規嵁騫沖彴鐨勭紪鐮佽屽畾銆?br>寰堝涓枃闂灝辨槸浠庤繖涓や釜鏈綆鍗曠殑綾繪淳鐢熷嚭鏉ョ殑銆傝屽嵈鏈夊緢澶氱被涓嶇洿鎺ユ敮鎸佹妸encoding杈撳叆錛岃繖緇欐垜浠甫鏉ヨ澶氫笉渚褲傚緢澶氱▼搴忛毦寰楃敤encoding浜嗭紝鐩存帴鐢╠efault鐨別ncoding錛岃繖灝辯粰鎴戜滑縐繪甯︽潵浜嗗緢澶氬洶闅俱?/p>

2.utf-8
utf-8鏄拰unicode涓涓瀵瑰簲鐨勶紝鍏跺疄鐜板緢綆鍗?br>7浣嶇殑unicode: 0 _ _ _ _ _ _ _
11浣嶇殑unicode: 1 1 0 _ _ _ _ _ 1 0 _ _ _ _ _ _
16浣嶇殑unicode: 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
21浣嶇殑unicode: 1 1 1 1 0 _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
澶у鏁版儏鍐墊槸鍙嬌鐢ㄥ埌16浣嶄互涓嬬殑unicode:
"浣?鐨刧b鐮佹槸錛?xc4e3 ,unicode鏄?x4f60
0xc4e3鐨勪簩榪涘埗錛?br>1100 錛?100 錛?110 錛?011
鐢變簬鍙湁涓や綅鎴戜滑鎸夌収涓や綅鐨勭紪鐮佹潵鎺掞紝浣嗘槸鎴戜滑鍙戠幇榪欒涓嶉氾紝鍥犱負絎紬浣嶄笉鏄?鍥犳錛岃繑鍥??"
0x4f60鐨勪簩榪涘埗錛?br>0100 錛?111 錛?110 錛?000
鎴戜滑鐢╱tf-8琛ラ綈錛屽彉鎴愶細
1110 錛?100 錛?011 錛?101 錛?010 錛?000
e4--bd-- a0
浜庢槸榪斿洖錛?xe4,0xbd,0xa0銆?/p>

3.string鍜宐yte[]
string鍏跺疄鏍稿績鏄痗har[],鐒惰岃鎶奲yte杞寲鎴恠tring錛屽繀欏葷粡榪囩紪鐮併俿tring.length()鍏跺疄灝辨槸char鏁扮粍鐨勯暱搴︼紝濡傛灉浣跨敤涓嶅悓鐨勭紪鐮侊紝寰堝彲鑳戒細閿欏垎錛岄犳垚鏁e瓧鍜屼貢鐮併?br>渚嬪錛?br>String encoding = “”;
byte [] b={(byte)'\u00c4',(byte)'\u00e3'};
String str=new String(b,encoding);銆銆
濡傛灉encoding=8859_1錛屼細鏈変袱涓瓧錛屼絾鏄痚ncoding=gb2312鍙湁涓涓瓧榪欎釜闂鍦ㄥ鐞嗗垎欏墊槸緇忓父鍙戠敓 銆?/p>

4.Reader,Writer / InputStream,OutputStream
Reader鍜學riter鏍稿績鏄痗har錛孖nputStream鍜孫utputStream鏍稿績鏄痓yte銆備絾鏄疪eader鍜學riter鐨勪富瑕佺洰鐨勬槸瑕佹妸char璇?鍐橧nputStream/OutputStream銆?br>渚嬪錛?br>鏂囦歡test.txt鍙湁涓涓?浣?瀛楋紝0xc4,0xe3
String encoding = "gb2312";
InputStreamReader reader = new InputStreamReader(new FileInputStream(
"text.txt"), encoding);
char c[] = new char[10];
int length = reader.read(c);
for (int i = 0; i < length; i++) {
System.out.println(c[i]);
}
緇撴灉鏄粈涔堬紵浣?br>濡傛灉encoding ="8859_1"錛岀粨鏋滄槸浠涔堬紵??涓や釜瀛楃錛岃〃紺轟笉璁よ瘑銆?br>鍙嶈繃鏉ョ殑渚嬪瓙鑷繁鍋氥?/p>

5.鎴戜滑瑕佸java鐨勭紪璇戝櫒鏈夋墍浜嗚В 錛?br>javac ?encoding
鎴戜滑甯稿父娌℃湁鐢ㄥ埌encoding榪欎釜鍙傛暟銆傚叾瀹瀍ncoding榪欎釜鍙傛暟瀵逛簬璺ㄥ鉤鍙扮殑鎿嶄綔鏄緢閲嶈鐨勩傚鏋滄病鏈夋寚瀹歟ncoding錛屽垯鎸夌収緋葷粺鐨勯粯璁ncoding,gb騫沖彴涓婃槸gb2312錛岃嫳鏂囧鉤鍙頒笂鏄痠so8859_1銆?br>java 鐨勭紪璇戝櫒瀹為檯涓婃槸璋冪敤sun.tools.javac.main鐨勭被錛屽鏂囦歡榪涜緙栬瘧錛岃繖涓被鏈塩ompile鍑芥暟涓棿鏈変竴涓猠ncoding鐨勫彉閲?- encoding鐨勫弬鏁板叾瀹炵洿鎺ヤ紶緇檈ncoding鍙橀噺銆傜紪璇戝櫒灝辨槸鏍規嵁榪欎釜鍙橀噺鏉ヨ鍙杍ava鏂囦歡鐨勶紝鐒跺悗鎶婄敤utf-8褰㈠紡緙栬瘧鎴恈lass鏂囦歡銆?br>渚嬪瓙浠g爜錛?br>String str = "浣?;
FileWriter writer = new FileWriter("text.txt");
write.write(str);
writer.close();

濡傛灉鐢╣b2312緙栬瘧錛屼綘浼氭壘鍒癳4 bd a0鐨勫瓧孌?錛?br>濡傛灉鐢?859_1緙栬瘧錛?00c4 00e3鐨勪簩榪涘埗錛?br>0000錛?000 錛?100錛?100 錛?000錛?000 錛?110錛?011
鍥犱負姣忎釜瀛楃閮藉ぇ浜?浣嶏紝鍥犳鐢?1浣嶇紪鐮侊細
1100錛?001錛?000錛?100錛?100錛?011錛?010錛?011
c1-- 84--銆c3--銆 a3
浣犱細鎵懼埌c1 84 c3 a3 銆?/p>

浣嗘槸鎴戜滑寰寰蹇界暐鎺夎繖涓弬鏁幫紝鍥犳榪欐牱寰寰浼氭湁璺ㄥ鉤鍙扮殑闂錛?br>鏍蜂緥浠g爜鍦ㄤ腑鏂囧鉤鍙頒笂緙栬瘧錛岀敓鎴恴hclass
鏍蜂緥浠g爜鍦ㄨ嫳鏂囧鉤鍙頒笂緙栬瘧錛岃緭鍑篹nclass
(1).銆 zhclass鍦ㄤ腑鏂囧鉤鍙頒笂鎵цok,浣嗘槸鍦ㄨ嫳鏂囧鉤鍙頒笂涓嶈
(2). enclass鍦ㄨ嫳鏂囧鉤鍙頒笂鎵цok,浣嗘槸鍦ㄤ腑鏂囧鉤鍙頒笂涓嶈
鍘熷洜錛?br>(1). 鍦ㄤ腑鏂囧鉤鍙頒笂緙栬瘧鍚庯紝鍏跺疄str鍦ㄨ繍琛屾佺殑char[]鏄?x4f60,銆鍦ㄤ腑鏂囧鉤鍙頒笂榪愯錛宖ilewriter鐨勭己鐪佺紪鐮佹槸gb2312,鍥犳 chartobyteconverter浼氳嚜鍔ㄧ敤璋冪敤gb2312鐨刢onverter,鎶妔tr杞寲鎴恇yte杈撳叆鍒癴ileoutputstream 涓紝浜庢槸0xc4,0xe3鏀捐繘浜嗘枃浠躲?br>浣嗘槸濡傛灉鏄湪鑻辨枃騫沖彴涓嬶紝chartobyteconverter鐨勭己鐪佸兼槸8859_1, filewriter浼氳嚜鍔ㄨ皟鐢?859_1鍘昏漿鍖杝tr,浣嗘槸浠栨棤娉曡В閲婏紝鍥犳浠栦細杈撳嚭"?"
(2). 鍦ㄨ嫳鏂囧鉤鍙頒笂緙栬瘧鍚庯紝鍏跺疄str鍦ㄨ繍琛屾佺殑char[]鏄?x00c4 0x00e3, 鍦ㄤ腑鏂囧鉤鍙頒笂榪愯錛屼腑鏂囨棤娉曡瘑鍒紝鍥犳浼氬嚭鐜??錛?br>鍦ㄨ嫳鏂囧鉤鍙頒笂錛?x00c4-->0xc4,0x00e3->0xe3錛屽洜姝?xc4,0xe3琚斁榪涗簡鏂囦歡銆?/p>

6. 鍏跺畠鍘熷洜錛?
璁劇疆嫻忚鍣ㄧ殑鏄劇ず緙栫爜錛屽鏋渞esponse鐨勬暟鎹槸utf8緙栫爜錛屾樉紺哄皢鏄貢鐮侊紝浣嗘槸涔辯爜鍜屼笂榪板師鍥犺繕涓嶄竴鏍楓?/p>

7. 鍙戠敓緙栫爜鐨勫湴鏂?錛?br>? 浠庢暟鎹簱鍒癹ava紼嬪簭 byte鈥斺斻塩har
? 浠巎ava紼嬪簭鍒版暟鎹簱 char鈥斺斻塨yte
? 浠庢枃浠跺埌java紼嬪簭 byte鈥斺斻塩har
? 浠巎ava紼嬪簭鍒版枃浠?char鈥斺斻塨yte
? 浠巎ava紼嬪簭鍒伴〉闈㈡樉紺?char鈥斺斻塨yte
? 浠庨〉闈orm鎻愪氦鏁版嵁鍒癹ava紼嬪簭byte鈥斺斻塩har
? 浠庢祦鍒癹ava紼嬪簭byte鈥斺斻塩har
? 浠巎ava紼嬪簭鍒版祦char鈥斺斻塨yte

璋㈠織閽㈢殑瑙e喅鏂規硶錛?br>鎴戞槸浣跨敤閰嶇疆榪囨護鍣ㄧ殑鏂規硶瑙e喅涓枃涔辯爜鐨勶細

錛渨eb-app>
錛渇ilter>
錛渇ilter-name>RequestFilter
錛渇ilter-class>net.golden.uirs.util.RequestFilter
錛渋nit-param>
錛減aram-name>charset
錛減aram-value>gb2312
錛?init-param>
錛?filter>
錛渇ilter-mapping>
錛渇ilter-name>RequestFilter
錛渦rl-pattern>*.jsp
錛?filter-mapping>
錛?web-app>


public void doFilter(ServletRequest req, ServletResponse res,
FilterChain fChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession();
String userId = (String) session.getAttribute("userid");
req.setCharacterEncoding(this.filterConfig.getInitParameter("charset")); // 璁劇疆瀛楃闆嗭紵
瀹為檯涓婃槸璁劇疆浜哹yte 鈥斺斻塩har鐨別ncoding
try {
if (userId == null || userId.equals("")) {
if (!request.getRequestURL().toString().matches(
".*/uirs/logon/logon(Controller){0,1}\\x2Ejsp$")) {
session.invalidate();
response.sendRedirect(request.getContextPath() +
"/uirs/logon/logon.jsp");
}
}
else { // 鐪嬬湅鏄惁鍏鋒湁淇℃伅涓婃姤緋葷粺鐨勬潈闄?br>if (!net.golden.uirs.util.UirsChecker.check(userId, "淇℃伅涓婃姤緋葷粺",
net.golden.uirs.util.UirsChecker.ACTION_DO)) {
if (!request.getRequestURL().toString().matches(
".*/uirs/logon/logon(Controller){0,1}\\x2Ejsp$")) {
response.sendRedirect(request.getContextPath() +
"/uirs/logon/logonController.jsp");
}
}
}
}
catch (Exception ex) {
response.sendRedirect(request.getContextPath() +
"/uirs/logon/logon.jsp");
}
fChain.doFilter(req, res);
}



]]>
銆愯漿銆戜嬌鐢?Java Reflection http://m.shnenglu.com/qywyh/articles/34523.html璞?/dc:creator>璞?/author>Thu, 18 Oct 2007 03:05:00 GMThttp://m.shnenglu.com/qywyh/articles/34523.htmlhttp://m.shnenglu.com/qywyh/comments/34523.htmlhttp://m.shnenglu.com/qywyh/articles/34523.html#Feedback0http://m.shnenglu.com/qywyh/comments/commentRss/34523.htmlhttp://m.shnenglu.com/qywyh/services/trackbacks/34523.html

Reflection 鏄?Java 紼嬪簭寮鍙戣璦鐨勭壒寰佷箣涓錛屽畠鍏佽榪愯涓殑 Java 紼嬪簭瀵硅嚜韜繘琛屾鏌ワ紝鎴栬呰“鑷”錛屽茍鑳界洿鎺ユ搷浣滅▼搴忕殑鍐呴儴灞炴с備緥濡傦紝浣跨敤瀹冭兘鑾峰緱 Java 綾諱腑鍚勬垚鍛樼殑鍚嶇О騫舵樉紺哄嚭鏉ャ?/p>

Java 鐨勮繖涓鑳藉姏鍦ㄥ疄闄呭簲鐢ㄤ腑涔熻鐢ㄥ緱涓嶆槸寰堝錛屼絾鏄湪鍏跺畠鐨勭▼搴忚璁¤璦涓牴鏈氨涓嶅瓨鍦ㄨ繖涓鐗規с備緥濡傦紝Pascal銆丆 鎴栬?C++ 涓氨娌℃湁鍔炴硶鍦ㄧ▼搴忎腑鑾峰緱鍑芥暟瀹氫箟鐩稿叧鐨勪俊鎭?/p>

JavaBean 鏄?reflection 鐨勫疄闄呭簲鐢ㄤ箣涓錛屽畠鑳借涓浜涘伐鍏峰彲瑙嗗寲鐨勬搷浣滆蔣浠剁粍浠躲傝繖浜涘伐鍏烽氳繃 reflection 鍔ㄦ佺殑杞藉叆騫跺彇寰?Java 緇勪歡(綾? 鐨勫睘鎬с?/p>

涓涓畝鍗曠殑渚嬪瓙

鑰冭檻涓嬮潰榪欎釜綆鍗曠殑渚嬪瓙錛岃鎴戜滑鐪嬬湅 reflection 鏄浣曞伐浣滅殑銆?/p>

import java.lang.reflect.*;

public class DumpMethods {

    public static void main(String args[]) {

        try {

            Class c = Class.forName(args[0]);

            Method m[] = c.getDeclaredMethods();

            for (int i = 0; i < m.length; i++)

            System.out.println(m[i].toString());

        }

        catch (Throwable e) {

            System.err.println(e);

        }

    }

}

鎸夊涓嬭鍙ユ墽琛岋細

java DumpMethods java.util.Stack

瀹冪殑緇撴灉杈撳嚭涓猴細

public java.lang.Object java.util.Stack.push(java.lang.Object)

public synchronized java.lang.Object java.util.Stack.pop()

public synchronized java.lang.Object java.util.Stack.peek()

public boolean java.util.Stack.empty()

public synchronized int java.util.Stack.search(java.lang.Object)

榪欐牱灝卞垪鍑轟簡java.util.Stack 綾葷殑鍚勬柟娉曞悕浠ュ強瀹冧滑鐨勯檺鍒剁鍜岃繑鍥炵被鍨嬨?/p>

榪欎釜紼嬪簭浣跨敤 Class.forName 杞藉叆鎸囧畾鐨勭被錛岀劧鍚庤皟鐢?getDeclaredMethods 鏉ヨ幏鍙栬繖涓被涓畾涔変簡鐨勬柟娉曞垪琛ㄣ俲ava.lang.reflect.Methods 鏄敤鏉ユ弿榪版煇涓被涓崟涓柟娉曠殑涓涓被銆?/p>

寮濮嬩嬌鐢?Reflection

鐢ㄤ簬 reflection 鐨勭被錛屽 Method錛屽彲浠ュ湪 java.lang.relfect 鍖呬腑鎵懼埌銆備嬌鐢ㄨ繖浜涚被鐨勬椂鍊欏繀欏昏閬靛驚涓変釜姝ラ錛氱涓姝ユ槸鑾峰緱浣犳兂鎿嶄綔鐨勭被鐨?java.lang.Class 瀵硅薄銆傚湪榪愯涓殑 Java 紼嬪簭涓紝鐢?java.lang.Class 綾繪潵鎻忚堪綾誨拰鎺ュ彛絳夈?/p>

涓嬮潰灝辨槸鑾峰緱涓涓?Class 瀵硅薄鐨勬柟娉曚箣涓錛?/p>

Class c = Class.forName("java.lang.String");

榪欐潯璇彞寰楀埌涓涓?String 綾葷殑綾誨璞°傝繕鏈夊彟涓縐嶆柟娉曪紝濡備笅闈㈢殑璇彞錛?/p>

Class c = int.class;

鎴栬?/p>

Class c = Integer.TYPE;

瀹冧滑鍙幏寰楀熀鏈被鍨嬬殑綾諱俊鎭傚叾涓悗涓縐嶆柟娉曚腑璁塊棶鐨勬槸鍩烘湰綾誨瀷鐨勫皝瑁呯被 (濡?Integer) 涓鍏堝畾涔夊ソ鐨?TYPE 瀛楁銆?/p>

絎簩姝ユ槸璋冪敤璇稿 getDeclaredMethods 鐨勬柟娉曪紝浠ュ彇寰楄綾諱腑瀹氫箟鐨勬墍鏈夋柟娉曠殑鍒楄〃銆?/p>

涓鏃﹀彇寰楄繖涓俊鎭紝灝卞彲浠ヨ繘琛岀涓夋浜嗏斺斾嬌鐢?reflection API 鏉ユ搷浣滆繖浜涗俊鎭紝濡備笅闈㈣繖孌典唬鐮侊細

Class c = Class.forName("java.lang.String");

Method m[] = c.getDeclaredMethods();

System.out.println(m[0].toString());

瀹冨皢浠ユ枃鏈柟寮忔墦鍗板嚭 String 涓畾涔夌殑絎竴涓柟娉曠殑鍘熷瀷銆?/p>

鍦ㄤ笅闈㈢殑渚嬪瓙涓紝榪欎笁涓楠ゅ皢涓轟嬌鐢?reflection 澶勭悊鐗規畩搴旂敤紼嬪簭鎻愪緵渚嬭瘉銆?/p>

妯℃嫙 instanceof 鎿嶄綔絎?/p>

寰楀埌綾諱俊鎭箣鍚庯紝閫氬父涓嬩竴涓楠ゅ氨鏄В鍐沖叧浜?Class 瀵硅薄鐨勪竴浜涘熀鏈殑闂銆備緥濡傦紝Class.isInstance 鏂規硶鍙互鐢ㄤ簬妯℃嫙 instanceof 鎿嶄綔絎︼細

class A {}

public class instance1 {

    public static void main(String args[])

    {

        try {

            Class cls = Class.forName("A");

            boolean b1

              = cls.isInstance(new Integer(37));

            System.out.println(b1);

            boolean b2 = cls.isInstance(new A());

            System.out.println(b2);

        }

        catch (Throwable e) {

            System.err.println(e);

        }

    }

}

鍦ㄨ繖涓緥瀛愪腑鍒涘緩浜嗕竴涓?A 綾葷殑 Class 瀵硅薄錛岀劧鍚庢鏌ヤ竴浜涘璞℃槸鍚︽槸 A 鐨勫疄渚嬨侷nteger(37) 涓嶆槸錛屼絾 new A() 鏄?/p>

鎵懼嚭綾葷殑鏂規硶

鎵懼嚭涓涓被涓畾涔変簡浜涗粈涔堟柟娉曪紝榪欐槸涓涓潪甯告湁浠峰間篃闈炲父鍩虹鐨?reflection 鐢ㄦ硶銆備笅闈㈢殑浠g爜灝卞疄鐜頒簡榪欎竴鐢ㄦ硶錛?/p>

import java.lang.reflect.*;

public class method1 {

    private int f1(Object p, int x) throws NullPointerException

    {

        if (p == null)

            throw new NullPointerException();

        return x;

    }

    public static void main(String args[])

    {

        try {

            Class cls = Class.forName("method1");

            Method methlist[]

              = cls.getDeclaredMethods();

            for (int i = 0; i < methlist.length;

                i++) {

                Method m = methlist[i];

                System.out.println("name

                  = " + m.getName());

                System.out.println("decl class = " +

                                    m.getDeclaringClass());

                Class pvec[] = m.getParameterTypes();

                for (int j = 0; j < pvec.length; j++)

                    System.out.println("

                     param #" + j + " " + pvec[j]);

                Class evec[] = m.getExceptionTypes();

                for (int j = 0; j < evec.length; j++)

                    System.out.println("exc #" + j

                      + " " + evec[j]);

                System.out.println("return type = " +

                                         m.getReturnType());

                System.out.println("-----");

            }

        }

        catch (Throwable e) {

            System.err.println(e);

        }

    }

}

榪欎釜紼嬪簭棣栧厛鍙栧緱 method1 綾葷殑鎻忚堪錛岀劧鍚庤皟鐢?getDeclaredMethods 鏉ヨ幏鍙栦竴緋誨垪鐨?Method 瀵硅薄錛屽畠浠垎鍒弿榪頒簡瀹氫箟鍦ㄧ被涓殑姣忎竴涓柟娉曪紝鍖呮嫭 public 鏂規硶銆乸rotected 鏂規硶銆乸ackage 鏂規硶鍜?private 鏂規硶絳夈傚鏋滀綘鍦ㄧ▼搴忎腑浣跨敤 getMethods 鏉ヤ唬鏇?getDeclaredMethods錛屼綘榪樿兘鑾峰緱緇ф壙鏉ョ殑鍚勪釜鏂規硶鐨勪俊鎭?/p>

鍙栧緱浜?Method 瀵硅薄鍒楄〃涔嬪悗錛岃鏄劇ず榪欎簺鏂規硶鐨勫弬鏁扮被鍨嬨佸紓甯哥被鍨嬪拰榪斿洖鍊肩被鍨嬬瓑灝變笉闅句簡銆傝繖浜涚被鍨嬫槸鍩烘湰綾誨瀷榪樻槸綾葷被鍨嬶紝閮藉彲浠ョ敱鎻忚堪綾葷殑瀵硅薄鎸夐『搴忕粰鍑恒?/p>

杈撳嚭鐨勭粨鏋滃涓嬶細

name = f1

decl class = class method1

param #0 class java.lang.Object

param #1 int

exc #0 class java.lang.NullPointerException

return type = int

-----

name = main

decl class = class method1

param #0 class [Ljava.lang.String;

return type = void

-----
 
鑾峰彇鏋勯犲櫒淇℃伅

鑾峰彇綾繪瀯閫犲櫒鐨勭敤娉曚笌涓婅堪鑾峰彇鏂規硶鐨勭敤娉曠被浼鹼紝濡傦細

import java.lang.reflect.*;

public class constructor1 {

    public constructor1()

    {

    }

    protected constructor1(int i, double d)

    {

    }

    public static void main(String args[])

    {

        try {

            Class cls = Class.forName("constructor1");

            Constructor ctorlist[]

                = cls.getDeclaredConstructors();

            for (int i = 0; i < ctorlist.length; i++) {

                Constructor ct = ctorlist[i];

                System.out.println("name

                  = " + ct.getName());

                System.out.println("decl class = " +

                                 ct.getDeclaringClass());

                Class pvec[] = ct.getParameterTypes();

                for (int j = 0; j < pvec.length; j++)

                    System.out.println("param #"

                        + j + " " + pvec[j]);

                Class evec[] = ct.getExceptionTypes();

                for (int j = 0; j < evec.length; j++)

                    System.out.println(

                      "exc #" + j + " " + evec[j]);

                System.out.println("-----");

            }

         }

         catch (Throwable e) {

             System.err.println(e);

         }

    }

}

榪欎釜渚嬪瓙涓病鑳借幏寰楄繑鍥炵被鍨嬬殑鐩稿叧淇℃伅錛岄偅鏄洜涓烘瀯閫犲櫒娌℃湁榪斿洖綾誨瀷銆?/p>

榪欎釜紼嬪簭榪愯鐨勭粨鏋滄槸錛?/p>

name = constructor1

decl class = class constructor1

-----

name = constructor1

decl class = class constructor1

param #0 int

param #1 double

-----

鑾峰彇綾葷殑瀛楁(鍩?

鎵懼嚭涓涓被涓畾涔変簡鍝簺鏁版嵁瀛楁涔熸槸鍙兘鐨勶紝涓嬮潰鐨勪唬鐮佸氨鍦ㄥ共榪欎釜浜嬫儏錛?/p>

import java.lang.reflect.*;

public class field1 {

    private double d;

    public static final int i = 37;

    String s = "testing";

    public static void main(String args[])

    {

        try {

            Class cls = Class.forName("field1");

            Field fieldlist[]

              = cls.getDeclaredFields();

            for (int i

              = 0; i < fieldlist.length; i++) {

                Field fld = fieldlist[i];

                System.out.println("name

                    = " + fld.getName());

                System.out.println("decl class = " +

                                fld.getDeclaringClass());

                System.out.println("type

                    = " + fld.getType());

                int mod = fld.getModifiers();

                System.out.println("modifiers = " +

                              Modifier.toString(mod));

                System.out.println("-----");

            }

         }

         catch (Throwable e) {

             System.err.println(e);

         }

     }

}

榪欎釜渚嬪瓙鍜屽墠闈㈤偅涓緥瀛愰潪甯哥浉浼箋備緥涓嬌鐢ㄤ簡涓涓柊涓滆タ Modifier錛屽畠涔熸槸涓涓?reflection 綾伙紝鐢ㄦ潵鎻忚堪瀛楁鎴愬憳鐨勪慨楗拌錛屽“private int”銆傝繖浜涗慨楗拌鑷韓鐢辨暣鏁版弿榪幫紝鑰屼笖浣跨敤 Modifier.toString 鏉ヨ繑鍥炰互“瀹樻柟”欏哄簭鎺掑垪鐨勫瓧絎︿覆鎻忚堪 (濡?#8220;static”鍦?#8220;final”涔嬪墠)銆傝繖涓▼搴忕殑杈撳嚭鏄細

name = d

decl class = class field1

type = double

modifiers = private

-----

name = i

decl class = class field1

type = int

modifiers = public static final

-----

name = s

decl class = class field1

type = class java.lang.String

modifiers =

-----

鍜岃幏鍙栨柟娉曠殑鎯呭喌涓涓嬶紝鑾峰彇瀛楁鐨勬椂鍊欎篃鍙互鍙彇寰楀湪褰撳墠綾諱腑鐢蟲槑浜嗙殑瀛楁淇℃伅 (getDeclaredFields)錛屾垨鑰呬篃鍙互鍙栧緱鐖剁被涓畾涔夌殑瀛楁 (getFields) 銆?/p>

鏍規嵁鏂規硶鐨勫悕縐版潵鎵ц鏂規硶

鏂囨湰鍒拌繖閲岋紝鎵涓劇殑渚嬪瓙鏃犱竴渚嬪閮戒笌濡備綍鑾峰彇綾葷殑淇℃伅鏈夊叧銆傛垜浠篃鍙互鐢?reflection 鏉ュ仛涓浜涘叾瀹冪殑浜嬫儏錛屾瘮濡傛墽琛屼竴涓寚瀹氫簡鍚嶇О鐨勬柟娉曘備笅闈㈢殑紺轟緥婕旂ず浜嗚繖涓鎿嶄綔錛?/p>

import java.lang.reflect.*;

public class method2 {

    public int add(int a, int b)

    {

        return a + b;

    }

    public static void main(String args[])

    {

        try {

            Class cls = Class.forName("method2");

            Class partypes[] = new Class[2];

            partypes[0] = Integer.TYPE;

            partypes[1] = Integer.TYPE;

            Method meth = cls.getMethod(

              "add", partypes);

            method2 methobj = new method2();

            Object arglist[] = new Object[2];

            arglist[0] = new Integer(37);

            arglist[1] = new Integer(47);

            Object retobj

              = meth.invoke(methobj, arglist);

            Integer retval = (Integer)retobj;

            System.out.println(retval.intValue());

        }

        catch (Throwable e) {

            System.err.println(e);

        }

    }

}

鍋囧涓涓▼搴忓湪鎵ц鐨勬煇澶勭殑鏃跺欐墠鐭ラ亾闇瑕佹墽琛屾煇涓柟娉曪紝榪欎釜鏂規硶鐨勫悕縐版槸鍦ㄧ▼搴忕殑榪愯榪囩▼涓寚瀹氱殑 (渚嬪錛孞avaBean 寮鍙戠幆澧冧腑灝變細鍋氳繖鏍風殑浜?錛岄偅涔堜笂闈㈢殑紼嬪簭婕旂ず浜嗗浣曞仛鍒般?/p>

涓婁緥涓紝getMethod 鐢ㄤ簬鏌ユ壘涓涓叿鏈変袱涓暣鍨嬪弬鏁頒笖鍚嶄負 add 鐨勬柟娉曘傛壘鍒拌鏂規硶騫跺垱寤轟簡鐩稿簲鐨?Method 瀵硅薄涔嬪悗錛屽湪姝g‘鐨勫璞″疄渚嬩腑鎵ц瀹冦傛墽琛岃鏂規硶鐨勬椂鍊欙紝闇瑕佹彁渚涗竴涓弬鏁板垪琛紝榪欏湪涓婁緥涓槸鍒嗗埆鍖呰浜嗘暣鏁?37 鍜?47 鐨勪袱涓?Integer 瀵硅薄銆傛墽琛屾柟娉曠殑榪斿洖鐨勫悓鏍鋒槸涓涓?Integer 瀵硅薄錛屽畠灝佽浜嗚繑鍥炲?84銆?/p>

鍒涘緩鏂扮殑瀵硅薄

瀵逛簬鏋勯犲櫒錛屽垯涓嶈兘鍍忔墽琛屾柟娉曢偅鏍瘋繘琛岋紝鍥犱負鎵ц涓涓瀯閫犲櫒灝辨剰鍛崇潃鍒涘緩浜嗕竴涓柊鐨勫璞?(鍑嗙‘鐨勮錛屽垱寤轟竴涓璞$殑榪囩▼鍖呮嫭鍒嗛厤鍐呭瓨鍜屾瀯閫犲璞?銆傛墍浠ワ紝涓庝笂渚嬫渶鐩鎬技鐨勪緥瀛愬涓嬶細

import java.lang.reflect.*;

public class constructor2 {

    public constructor2()

    {

    }

    public constructor2(int a, int b)

    {

        System.out.println(

          "a = " + a + " b = " + b);

    }

    public static void main(String args[])

    {

        try {

            Class cls = Class.forName("constructor2");

            Class partypes[] = new Class[2];

            partypes[0] = Integer.TYPE;

            partypes[1] = Integer.TYPE;

            Constructor ct

              = cls.getConstructor(partypes);

            Object arglist[] = new Object[2];

            arglist[0] = new Integer(37);

            arglist[1] = new Integer(47);

            Object retobj = ct.newInstance(arglist);

        }

        catch (Throwable e) {

            System.err.println(e);

        }

    }

}

鏍規嵁鎸囧畾鐨勫弬鏁扮被鍨嬫壘鍒扮浉搴旂殑鏋勯犲嚱鏁板茍鎵ц瀹冿紝浠ュ垱寤轟竴涓柊鐨勫璞″疄渚嬨備嬌鐢ㄨ繖縐嶆柟娉曞彲浠ュ湪紼嬪簭榪愯鏃跺姩鎬佸湴鍒涘緩瀵硅薄錛岃屼笉鏄湪緙栬瘧鐨勬椂鍊欏垱寤哄璞★紝榪欎竴鐐歸潪甯告湁浠峰箋?/p>

鏀瑰彉瀛楁(鍩?鐨勫?/p>

reflection 鐨勮繕鏈変竴涓敤澶勫氨鏄敼鍙樺璞℃暟鎹瓧孌電殑鍊箋俽eflection 鍙互浠庢鍦ㄨ繍琛岀殑紼嬪簭涓牴鎹悕縐版壘鍒板璞$殑瀛楁騫舵敼鍙樺畠錛屼笅闈㈢殑渚嬪瓙鍙互璇存槑榪欎竴鐐癸細

import java.lang.reflect.*;

public class field2 {

    public double d;

    public static void main(String args[])

    {

        try {

            Class cls = Class.forName("field2");

            Field fld = cls.getField("d");

            field2 f2obj = new field2();

            System.out.println("d = " + f2obj.d);

            fld.setDouble(f2obj, 12.34);

            System.out.println("d = " + f2obj.d);

        }

        catch (Throwable e) {

            System.err.println(e);

        }

    }

}

榪欎釜渚嬪瓙涓紝瀛楁 d 鐨勫艱鍙樹負浜?12.34銆?/p>

浣跨敤鏁扮粍

鏈枃浠嬬粛鐨?reflection 鐨勬渶鍚庝竴縐嶇敤娉曟槸鍒涘緩鐨勬搷浣滄暟緇勩傛暟緇勫湪 Java 璇█涓槸涓縐嶇壒孌婄殑綾葷被鍨嬶紝涓涓暟緇勭殑寮曠敤鍙互璧嬬粰 Object 寮曠敤銆傝瀵熶笅闈㈢殑渚嬪瓙鐪嬬湅鏁扮粍鏄庝箞宸ヤ綔鐨勶細

import java.lang.reflect.*;

public class array1 {

    public static void main(String args[])

    {

        try {

            Class cls = Class.forName(

              "java.lang.String");

            Object arr = Array.newInstance(cls, 10);

            Array.set(arr, 5, "this is a test");

            String s = (String)Array.get(arr, 5);

            System.out.println(s);

        }

        catch (Throwable e) {

            System.err.println(e);

        }

    }

}

渚嬩腑鍒涘緩浜?10 涓崟浣嶉暱搴︾殑 String 鏁扮粍錛屼負絎?5 涓綅緗殑瀛楃涓茶祴浜嗗鹼紝鏈鍚庡皢榪欎釜瀛楃涓蹭粠鏁扮粍涓彇寰楀茍鎵撳嵃浜嗗嚭鏉ャ?/p>

涓嬮潰榪欐浠g爜鎻愪緵浜嗕竴涓洿澶嶆潅鐨勪緥瀛愶細

import java.lang.reflect.*;

public class array2 {

    public static void main(String args[])

    {

        int dims[] = new int[]{5, 10, 15};

        Object arr

          = Array.newInstance(Integer.TYPE, dims);

        Object arrobj = Array.get(arr, 3);

        Class cls =

          arrobj.getClass().getComponentType();

        System.out.println(cls);

        arrobj = Array.get(arrobj, 5);

        Array.setInt(arrobj, 10, 37);

        int arrcast[][][] = (int[][][])arr;

        System.out.println(arrcast[3][5][10]);

    }

}

渚嬩腑鍒涘緩浜嗕竴涓?5 x 10 x 15 鐨勬暣鍨嬫暟緇勶紝騫朵負澶勪簬 [3][5][10] 鐨勫厓绱犺祴浜嗗間負 37銆傛敞鎰忥紝澶氱淮鏁扮粍瀹為檯涓婂氨鏄暟緇勭殑鏁扮粍錛屼緥濡傦紝絎竴涓?Array.get 涔嬪悗錛宎rrobj 鏄竴涓?10 x 15 鐨勬暟緇勩傝繘鑰屽彇寰楀叾涓殑涓涓厓绱狅紝鍗抽暱搴︿負 15 鐨勬暟緇勶紝騫朵嬌鐢?Array.setInt 涓哄畠鐨勭 10 涓厓绱犺祴鍊箋?/p>

娉ㄦ剰鍒涘緩鏁扮粍鏃剁殑綾誨瀷鏄姩鎬佺殑錛屽湪緙栬瘧鏃跺茍涓嶇煡閬撳叾綾誨瀷銆?/p>

灝忕粨

Java reflection 闈炲父鏈夌敤錛屽畠浣跨被鍜屾暟鎹粨鏋勮兘鎸夊悕縐板姩鎬佹绱㈢浉鍏充俊鎭紝騫跺厑璁稿湪榪愯鐫鐨勭▼搴忎腑鎿嶄綔榪欎簺淇℃伅銆侸ava 鐨勮繖涓鐗規ч潪甯稿己澶э紝騫朵笖鏄叾瀹冧竴浜涘父璇█錛屽 C銆丆++銆丗ortran 鎴栬?Pascal 絳夐兘涓嶅叿澶囩殑銆?nbsp;



]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            中日韩午夜理伦电影免费| 欧美第一黄色网| 亚洲另类一区二区| 国产欧美日韩亚洲一区二区三区| 亚洲性xxxx| 在线亚洲一区观看| 亚洲高清一区二区三区| 亚洲永久视频| 国产精品豆花视频| 性欧美长视频| 亚洲一二三四久久| 在线亚洲伦理| 欧美一区二区免费视频| 久久精品国产综合| 亚洲一区国产| 久久精品123| 美女尤物久久精品| 欧美电影在线播放| 日韩天天综合| 欧美在线视频不卡| 欧美激情欧美狂野欧美精品| 国产精品va在线播放| 国产亚洲a∨片在线观看| 最新中文字幕一区二区三区| 99热精品在线观看| 美女网站在线免费欧美精品| 一本久久a久久免费精品不卡| 一本色道久久综合狠狠躁篇的优点 | 国产精品扒开腿做爽爽爽软件| 欧美国产精品一区| 欧美亚洲一区| 欧美国产视频在线观看| 国产精品综合视频| 正在播放欧美一区| 亚洲电影第三页| 欧美一区=区| 欧美色视频日本高清在线观看| 国产免费观看久久黄| 亚洲一区二区三区中文字幕| 亚洲福利视频专区| 欧美77777| 亚洲日本电影在线| 久久美女性网| 在线视频精品一区| 欧美日韩免费在线| 欧美激情亚洲自拍| 狠狠噜噜久久| 欧美大片第1页| 欧美精品免费在线| 中文精品一区二区三区| 99热这里只有精品8| 欧美三区不卡| 久久国产一区二区| 欧美黄色小视频| 亚洲影音一区| 久久国内精品视频| 亚洲麻豆视频| 欧美影院久久久| 日韩午夜黄色| 久久久国产午夜精品| 一本一本久久| 欧美在线一二三| 99精品欧美一区二区三区综合在线 | 亚洲三级免费电影| 99视频一区二区三区| 国产在线欧美日韩| 亚洲午夜在线观看| 亚洲三级电影在线观看| 久久av二区| 欧美亚洲免费电影| 国产精品yjizz| 亚洲人成网站色ww在线| 国内精品久久久久影院优| 日韩视频免费在线| 91久久极品少妇xxxxⅹ软件| 午夜免费在线观看精品视频| 久久久久久自在自线| 亚洲资源在线观看| 亚洲经典自拍| 亚洲日本欧美日韩高观看| 久久精品在这里| 久久综合久久综合这里只有精品| 欧美连裤袜在线视频| 91久久综合| 一区二区三区日韩欧美精品| 欧美日韩精品在线| 亚洲一区二区三区精品视频 | 午夜免费日韩视频| 欧美在线播放一区| 影音先锋久久| 欧美日韩亚洲免费| 欧美一区二区三区日韩| 久久蜜桃香蕉精品一区二区三区| 国产美女一区二区| 久久永久免费| 亚洲深爱激情| 免费看的黄色欧美网站| 亚洲精品国产精品乱码不99按摩| 欧美国产免费| 欧美一区二区免费视频| 亚洲高清不卡| 久久精品亚洲精品国产欧美kt∨| 亚洲国产成人porn| 国产精品入口麻豆原神| 男女视频一区二区| 亚洲欧美国产高清| 亚洲欧洲一区二区三区久久| 欧美一区二区三区免费观看| 黄色亚洲精品| 国产日韩欧美综合一区| 欧美黑人国产人伦爽爽爽| 亚洲欧美国产日韩天堂区| 亚洲国产成人久久综合一区| 久久国产精品高清| 亚洲综合激情| 欧美高清视频| 欧美成人精品激情在线观看| 亚洲在线中文字幕| 这里只有精品视频在线| 欧美激情一二三区| 欧美gay视频激情| 欧美激情精品久久久久久变态| 欧美一区亚洲一区| 欧美一区二区三区免费视频| 亚洲欧美日韩中文在线制服| 亚洲一区二区三区精品在线| 一区二区三区四区在线| 亚洲一区二区三区四区视频| 午夜精品久久久| 久久久久久噜噜噜久久久精品| 久久精品视频在线观看| 欧美成人中文字幕在线| 日韩午夜剧场| 久久不射电影网| 欧美激情一区二区三区全黄| 欧美日韩免费一区| 亚洲二区在线视频| 欧美aⅴ一区二区三区视频| 美女精品在线| 国产日本亚洲高清| 亚洲高清一区二区三区| 亚洲欧美视频在线观看视频| 美女国内精品自产拍在线播放| 亚洲精品欧美一区二区三区| 欧美在线视频网站| 欧美日韩亚洲系列| 亚洲福利视频一区二区| 欧美影视一区| 亚洲天堂网在线观看| 欧美韩日亚洲| 亚洲区第一页| 欧美国产日产韩国视频| 午夜日韩在线观看| 国产精品三级久久久久久电影| 最新国产拍偷乱拍精品| 久久视频在线看| 欧美在线在线| 午夜精品福利在线| 国产噜噜噜噜噜久久久久久久久| 中文在线资源观看视频网站免费不卡| 欧美/亚洲一区| 欧美电影免费观看高清| 亚洲电影免费观看高清完整版在线 | 亚洲精品国产精品乱码不99| 亚洲国产mv| 精品成人a区在线观看| 性视频1819p久久| 亚洲图片欧洲图片av| 国产精品女人毛片| 久久精品九九| 裸体丰满少妇做受久久99精品| 在线国产日韩| 亚洲国产精品毛片| 欧美伦理在线观看| 久久精品国产99| 欧美在线观看一区| 国产一区二区精品久久| 欧美xart系列高清| 国产精品久久久久久久久久久久久久 | 久久伊伊香蕉| 亚洲一二三区在线观看| 久久精品色图| 亚洲一区二区影院| 欧美1区视频| 久久免费视频在线| 国产精品国产福利国产秒拍| 美日韩精品视频| 国产精品亚洲人在线观看| 亚洲黄一区二区三区| 国内精品福利| 亚洲欧美高清| 午夜视频在线观看一区| 欧美日本在线视频| 欧美黄色片免费观看| 激情久久综艺| 亚洲综合另类| 国产精品稀缺呦系列在线| 亚洲精品免费在线| 99成人精品| 国产精品天天看|