锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV永久无码精品水牛影视,一本色道久久综合亚洲精品蜜桃冫,国产精品亚洲片在线花蝴蝶http://m.tkk7.com/jeff-lau/category/28232.html鎴戠殑灝忓畤瀹欒鐖嗗彂浜?-灝挎ュ晩zh-cnSat, 22 Dec 2007 00:28:25 GMTSat, 22 Dec 2007 00:28:25 GMT60涓枃鏁板瓧http://m.tkk7.com/jeff-lau/archive/2007/12/21/169466.htmlJeff LauJeff LauFri, 21 Dec 2007 15:09:00 GMThttp://m.tkk7.com/jeff-lau/archive/2007/12/21/169466.htmlhttp://m.tkk7.com/jeff-lau/comments/169466.htmlhttp://m.tkk7.com/jeff-lau/archive/2007/12/21/169466.html#Feedback0http://m.tkk7.com/jeff-lau/comments/commentRss/169466.htmlhttp://m.tkk7.com/jeff-lau/services/trackbacks/169466.html鎽樿錛氫互涓枃鐨勫艦寮忚〃紺烘暟瀛楋紝鍦ㄥ紑鍏峰彂紲ㄣ佹敹鎹殑鏃跺欑粡甯哥敤鍒幫紝灝ゅ叾鍦ㄩ噾铻嶉鍩熴備絾鏁板瓧鐨勪腑鏂囪〃紺哄拰鍏跺畠璇█鏈夊緢澶х殑涓嶅悓錛屽涓枃浠ユ瘡4涓暟瀛?涓?涓轟竴涓皬鐨勫垎闅斻?鏈枃浠ユ祴璇曢┍鍔ㄥ紑鍙戠殑鏂規硶錛屽紑鍙戣鍔熻兘銆傛湰紼嬪簭鍙槸鐢ㄨ〃紺烘暣鏁扮殑涓枃褰㈠紡錛屽緢瀹規槗鎵╁睍鍒發ong褰㈠紡鍜岃〃紺轟漢姘戝竵璐у竵鐨勮〃紺哄艦寮忋?/p>

浣滆咃細Jeff 鍙戣〃浜庯細2006-12-02 08:12 鏈鍚庢洿鏂頒簬錛?2007騫?2鏈?1鏃?23:10
鐗堟潈澹版槑錛氬彲浠ヤ換鎰忚漿杞斤紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈増鏉冨0鏄?/a>銆?br>http://m.tkk7.com/jeff-lau/archive/2007/12/21/169466.html


/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility.test;

import org.junit.Assert;
import org.junit.Test;

import chinese.utility.ChineseNumber;

public class ChinesNumberFormatter {

    /**
     * 鍗曚釜鏁板瓧 0--9
     */
    @Test
    public void testSingleLower() {
        Assert.assertEquals("闆?, new ChineseNumber(0).lower());
        Assert.assertEquals("浜?, new ChineseNumber(5).lower());
    }
    /**
     * 10--99
     */
    @Test
    public void test2BitLower() {
        Assert.assertEquals("鍏崄鍏?, new ChineseNumber(68).lower());
        Assert.assertEquals("鍏崄", new ChineseNumber(80).lower());
    }

    /**
     * 100--999
     */
    @Test
    public void test3BitLower() {
        Assert.assertEquals("浜旂櫨闆跺叓", new ChineseNumber(508).lower());
        Assert.assertEquals("鍏櫨", new ChineseNumber(800).lower());       
    }

    /**
     * 1000--9999
     */
    @Test
    public void test4BitLower() {
        Assert.assertEquals("涓鍗冮浂鍏?, new ChineseNumber(1008).lower());
        Assert.assertEquals("涓鍗冮浂鍏崄", new ChineseNumber(1080).lower());

    }
    /**
     * > 9999
     */
    @Test
    public void test5BitLower() {
        Assert.assertEquals("涓夊崄涓囬浂鍏崈", new ChineseNumber(308000).lower());
        Assert.assertEquals("涓夊崄涓囬浂鍏櫨", new ChineseNumber(300800).lower());
    }
    /**
     * 緙╁啓鍜屽ぇ鍐欎竴璧鋒祴
     */
    @Test
    public void testAbbriation() {
        Assert.assertEquals("鎷炬崒", new ChineseNumber(18, true).upper());
    }

}

嫻嬭瘯

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility;

public class ChineseNumber {

    private static final int RADIX = 10;

    private static final String[] LOWER_UNIT = { "", "鍗?, "鐧?, "鍗?, "涓?, "鍗?,
            "鐧?, "鍗?, "浜?, "鍗?, "鐧?, "鍗?, "涓?, "鍗?, "鐧?, "鍗?, "涓? };
    private String[] LOWER = { "闆?, "涓", "浜?, "涓?, "鍥?, "浜?, "鍏?, "涓?, "鍏?, "涔? };

    private static final String[] UPPER_UNIT = { "", "鎷?, "浣?, "浠?, "涓?, "鎷?,
            "浣?, "浠?, "浜?, "鎷?, "浣?, "浠?, "涓?, "鎷?, "浣?, "浠?, "涓? };
    private String[] UPPER = { "闆?, "澹?, "璐?, "鍙?, "鑲?, "浼?, "闄?, "鏌?, "鎹?, "鐜? };

    private int number;
    private boolean abbreviation;

    public ChineseNumber(int number, boolean isShort) {
        this.number = number;
        this.abbreviation = isShort;
    }

    public ChineseNumber(int number) {
        this(number, false);
    }

    public String lower() {
        return format(LOWER, LOWER_UNIT);
    }
    public String upper() {   
        return format(UPPER, UPPER_UNIT);
    }
    private String format(final String[] chinese, final String[] unit) {
        if (number == 0) {
            return chinese[number];
        }

        if (abbreviation == true && canAbbreviate(number)) {
            return formatShort(chinese, unit);
        }
        String result = "";

        int leftNumber = number;
        int rightNumber = 0;
        int currentNumber = 0;
        int bit = 0;
        while (leftNumber > 0) {
            rightNumber = currentNumber;
            currentNumber = leftNumber % RADIX;
            leftNumber = leftNumber / RADIX;

            if (currentNumber > 0) {
                result = chinese[currentNumber] + unit[bit] + result;
            } else if (rightNumber > 0) {
                result = chinese[currentNumber] + result;
            }

            if (bit % 4 == 0 && currentNumber == 0) {
                result = unit[bit] + result;
            }

            bit++;
        }

        return result;

    }

    /**
     * 緙╁啓 18 涓?鍗佸叓 鎴?鎷炬崒
     */
    private String formatShort(String[] chinese, String[] unit) {       
        return unit[1] + chinese[number % RADIX];
    }

    /**
     * 鑳藉惁緙╁啓
     */
    private boolean canAbbreviate(int number2) {
        if (number2 >= 9 && number2 <= 19) {
            return true;
        }
        return false;
    }

}



Jeff Lau 2007-12-21 23:09 鍙戣〃璇勮
]]>
涓枃鎺掑簭http://m.tkk7.com/jeff-lau/archive/2007/12/21/169257.htmlJeff LauJeff LauFri, 21 Dec 2007 03:29:00 GMThttp://m.tkk7.com/jeff-lau/archive/2007/12/21/169257.htmlhttp://m.tkk7.com/jeff-lau/comments/169257.htmlhttp://m.tkk7.com/jeff-lau/archive/2007/12/21/169257.html#Feedback1http://m.tkk7.com/jeff-lau/comments/commentRss/169257.htmlhttp://m.tkk7.com/jeff-lau/services/trackbacks/169257.html鎽樿錛氬湪Java涓紝瀵逛竴涓暟緇勬垨鍒楄〃(鍦ㄦ湰鏂囦腑緇熺О涓洪泦鍚?涓殑鍏冪礌鎺掑簭錛屾槸涓涓緢緇忓父鐨勪簨鎯呫傚ソ鍦⊿un鍏徃鍦↗ava搴撲腑瀹炵幇浜嗗ぇ閮ㄥ垎鍔熻兘銆傚鏋滈泦鍚堜腑鐨勫厓绱犲疄鐜頒簡Comparable鎺ュ彛錛岃皟鐢ˋrray鎴朇ollections鐨勯潤鎬?static)鏂規硶sort錛屽氨鍙互鐩存帴瀵歸泦鍚堟帓搴忋傜▼搴忓憳鐢ㄤ笉鍚岀殑鏂瑰紡瀹炵幇浜咰omparator鎺ュ彛錛屽氨鍙互鐢ㄥ悇鑷笉鍚岀殑鏂瑰紡鎺掑簭銆傚浜庡寘鍚眽瀛楃殑瀛楃涓叉潵璇達紝鎺掑簭鐨勬柟寮忎富瑕佹湁涓ょ錛氫竴縐嶆槸鎷奸煶錛屼竴縐嶆槸絎旂敾銆傛湰鏂囧氨璁茶堪濡備綍瀹炵幇榪欎袱縐嶄笉鍚岀殑姣旇緝鍣?Comparator)銆?/p>

浣滆咃細Jeff 鍙戣〃浜庯細2007騫?2鏈?1鏃?11:27 鏈鍚庢洿鏂頒簬錛?2007騫?2鏈?1鏃?12:38
鐗堟潈澹版槑錛氬彲浠ヤ換鎰忚漿杞斤紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈増鏉冨0鏄?/a>銆?br>http://m.tkk7.com/jeff-lau/archive/2007/12/21/169257.html


鎺掑簭姒傝堪

鍦↗ava涓紝瀵逛竴涓暟緇勬垨鍒楄〃(鍦ㄦ湰鏂囦腑緇熺О涓洪泦鍚?涓殑鍏冪礌鎺掑簭錛屾槸涓涓緢緇忓父鐨勪簨鎯呫傚ソ鍦⊿un鍏徃鍦↗ava搴撲腑瀹炵幇浜嗗ぇ閮ㄥ垎鍔熻兘銆傚鏋滈泦鍚堜腑鐨勫厓绱犲疄鐜頒簡Comparable鎺ュ彛錛岃皟鐢ㄤ互涓嬬殑闈欐?static)鏂規硶錛屽氨鍙互鐩存帴瀵歸泦鍚堟帓搴忋?/p>

// 鏁扮粍鎺掑簭鏂規硶
// 鏁扮粍涓殑鍏冪礌鍙互鏄儚int榪欐牱鐨勫師鐢熺被鍨?primitive type), 涔熷彲浠ユ槸鍍廠tring榪欐牱瀹炵幇浜咰omparable鎺ュ彛鐨勭被鍨嬶紝榪欓噷鐢╰ype琛ㄧず銆?
java.util.Arrays.sort(type[] a);

// 鍒楄〃
public static <T> void sort(List<T> list)

浠ヤ笂鐨勮繖浜涙帓搴忔柟寮忚兘婊¤凍澶ч儴鍒嗗簲鐢ㄣ備絾闆嗗悎涓殑鍏冪礌娌℃湁瀹炵幇Comparable鎺ュ彛錛屾垨鑰呴泦鍚堜腑鐨勫厓绱犺鎸変竴縐嶇壒鍒殑鏂瑰紡鎺掑簭錛岃繖瑕佹庝箞鍔烇紵Sun鍏徃鏃╁氨鎯沖埌浜嗭紝騫跺湪Java搴撲腑鎻愪緵涓婇潰涓や釜鏂規硶鐨勯噸杞姐?/p>

// 鏁扮粍鎺掑簭鏂規硶銆?br>// 鏁扮粍涓殑鍏冪礌鍙互鏄儚int榪欐牱鐨勫師鐢熺被鍨?primitive type), 涔熷彲浠ユ槸鍍廠tring榪欐牱瀹炵幇浜咰omparable鎺ュ彛鐨勭被鍨嬶紝榪欓噷鐢╰ype琛ㄧず銆?
public static <T> void sort(T[] a, Comparator<? super T> c)

// 鍒楄〃
public static <T> void sort(List<T> list, Comparator<? super T> c)

鍙瀹炵幇浜咰omparator鎺ュ彛錛屽氨鍙互鎸夌▼搴忓憳鑷繁鐨勬剰鎬濆幓鎺掑簭浜嗐傚浜庡寘鍚眽瀛楃殑瀛楃涓叉潵璇達紝鎺掑簭鐨勬柟寮忎富瑕佹湁涓ょ錛氫竴縐嶆槸鎷奸煶錛屼竴縐嶆槸絎旂敾銆傛眽瀛楁槸閫氳繃涓瀹氱殑緙栫爜鏂瑰紡瀛樺偍鍦ㄨ綆楁満涓婄殑錛屼富瑕佺殑緙栫爜鏈夛細Unicdoe銆丟B2312鍜孏BK絳夈?/p>

Unicode 緙栫爜涓殑姹夊瓧

Unicode涓紪鐮佽〃鍒嗕負涓ゅ潡錛屼竴涓槸鍩烘湰鐨勶紝涓涓槸杈呭姪鐨勩傜幇鍦ㄧ殑澶у鏁版搷浣滅郴緇熻繕涓嶆敮鎸乁nicode涓緟鍔╁尯鍩熶腑鐨勬枃瀛楋紝濡俉inXp銆?/p>

鍦↗ava涓殑瀛楃灝辨槸Unicode鐮佽〃紺虹殑銆傚浜嶶nicode鍩烘湰鍖哄煙涓殑鏂囧瓧錛岀敤涓や釜瀛楄妭鐨勫唴瀛樺瓨鍌紝鐢ㄤ竴涓猚har琛ㄧず錛岃岃緟鍔╁尯鍩熶腑鐨勬枃瀛楃敤4涓瓧鑺傚瓨鍌紝鍥犳杈呭姪鍖哄煙涓殑灝辮鐢ㄤ袱涓猚har鏉ヨ〃紺轟簡(琛ㄤ竴縐嶈摑鑹插簳灝辨槸杈呭姪鍖哄煙涓殑鏂囧瓧)銆備竴涓枃瀛楃殑unicode緙栫爜錛屽湪Java涓粺涓鐢╟odePoint(浠g爜鐐?榪欎釜姒傚康銆?/p>

涓枃鍜屾棩鏂囥侀煩鏂囦竴鏍鋒槸琛ㄦ剰鏂囧瓧錛屽湪Unicode涓紝涓棩闊╀笁鍥?涓滀簹鍦板尯)鐨勬枃瀛楁槸緇熶竴緙栫爜鐨勩侰JK浠h〃鐨勫氨鏄腑鏃ラ煩銆傚湪榪欓噷錛屾垜鎶婅繖3涓枃瀛楋紝閮戒綔涓烘眽瀛楀鐞嗕簡銆?鏃ヨ鍜岄煩璇彲鑳藉氨鏄粠姹夎涓鐢熺殑鍚э紒)

姹夊瓧鍦║nicode涓殑鍒嗗竷澶ц嚧濡備笅琛細

  棣栧瓧緙栫爜 灝懼瓧緙栫爜 涓暟
鍩烘湰姹夊瓧 U4E00 U9FBF 20928
寮傛у瓧 UF900 UFAFF 512
鎵╁睍A U3400 U4D8F 512
鎵╁睍B U20000 U2A6DF 42720
琛ュ厖 U2F800 U2FA1F 544
鍏朵粬     ...
琛ㄤ竴

鍦ㄨ繖浜涚紪鐮佸尯闂達紝鏈変簺緙栫爜鏄繚鐣欑殑銆?/p>

GB2312緙栫爜

GB2312鏄腑鍗庝漢姘戝叡鍜屽浗鏈鏃╃殑璁$畻鏈烘眽瀛楃紪鐮佹柟寮忋傚ぇ姒傛湁6000澶氫釜姹夊瓧錛岃繖浜涙眽瀛楁槸鎸夋嫾闊抽『搴忕紪鐮佺殑銆傝繖6000澶氫釜姹夊瓧閮芥槸綆浣撲腑鏂囧瓧銆?/p>

GBK緙栫爜

GB2312鐨勬墿灞曪紝騫跺吋瀹笹B2312銆傛墿灞曞悗鐨勬眽瀛楀ぇ姒傛湁2涓囧涓紝鍏朵腑鏈夌畝浣撴眽瀛椾篃鏈夌箒浣撴眽瀛椼?/p>

鎷奸煶鎺掑簭

鎷奸煶鏈夊ソ鍑犵鏂瑰紡錛屽叾涓渶涓昏鐨勬槸涓崕浜烘皯鍏卞拰鍥界殑姹夎鎷奸煶 Chinese Phonetic銆傚姹夊瓧鐨勬帓搴忔湁涓ょ錛氫竴縐嶆槸瀹芥澗鐨勶紝鑳藉鎸夋嫾闊蟲帓搴忔渶甯哥敤鐨勬眽瀛楋紝鍙︿竴縐嶆槸涓ユ牸鐨勶紝鑳藉鎸夋嫾闊蟲帓搴忕粷澶ч儴鍒嗗ぇ閮ㄥ垎姹夊瓧銆?/p>

瀹芥澗鐨勬嫾闊蟲帓搴忔硶

鍘熺悊錛氭眽瀛楁渶鏃╂槸GB2312緙栫爜錛屾敹褰曚簡鍏崈澶氫釜姹夊瓧錛屾槸鎸夋嫾闊蟲帓搴忕殑錛岀紪鐮佹槸榪炵畫鐨勩?鍚庢潵鍑虹幇浜咷BK緙栫爜錛屽GB2312榪涜浜嗘墿灞曪紝鍒頒簡涓や竾澶氭眽瀛楋紝騫朵笖鍏煎GB2312錛屼篃灝辨槸璇碐B2312涓殑姹夊瓧緙栫爜鏄師灝佷笉鍔ㄦ惉鍒癎BK涓殑(鍦℅BK緙栫爜涓璠B0-D7]鍖轟腑)銆?/p>

濡傛灉鎴戜滑鍙叧蹇冭繖6000澶氫釜姹夊瓧鐨勯『搴忥紝灝卞彲浠ョ敤涓嬮潰鐨勬柟娉曞疄鐜版眽瀛楀鏉炬帓搴忋?/p>

/**
* @author Jeff
*
* Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>*/

package chinese.utility;

import java.text.Collator;
import java.util.Comparator;
import java.util.Locale;

public class PinyinSimpleComparator implements Comparator<String> {
    public int compare(String o1, String o2) {
        return Collator.getInstance(Locale.CHINESE).compare(o1, o2);
    }
}

鍦ㄥ[瀛? 瀛? 瀹? 灝? 寤? 寮? 寰? 鏄? 鏇? 鏇?鎬榪欏嚑涓眽瀛楁帓搴忥紝緇撴灉鏄細[鏇? 鏄? 寤? 瀛? 瀹? 瀛? 寰? 灝? 鏇? 寮? 鎬銆傛渶鍚庝竴涓?strong> 鎬?/strong> 鏈夐棶棰橈紝涓嶈鎺掑湪鏈鍚庣殑銆?

娉ㄦ剰錛氳繖涓▼搴忔湁涓や釜涓嶈凍

  • 鐢變簬gb2312涓殑姹夊瓧緙栫爜鏄繛緇殑錛屽洜姝ゆ柊澧炲姞鐨勬眽瀛椾笉鍙兘鍐嶆寜鐓ф嫾闊抽『搴忔彃鍏ュ埌宸叉湁鐨刧b2312緙栫爜涓紝鎵浠ユ柊澧炲姞鐨勬眽瀛椾笉鏄寜鎷奸煶欏哄簭鎺掔殑銆?
  • 鍚岄煶瀛楁瘮杈冪殑緇撴灉涓嶇瓑浜? 銆?

涓嬮潰鐨勬祴璇曚唬鐮佸彲浠ヨ瘉鏄?/p>

/**
* @author Jeff
*
* Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>*/

/**
* 闈炲父鐢ㄥ瓧(鎬?
*/
@Test
public void testNoneCommon() {
    Assert.assertTrue(comparator.compare("鎬?, "寮?) > 0);
}

/**
* 鍚岄煶瀛?br>*/
@Test
public void testSameSound() {
    Assert.assertTrue(comparator.compare("鎬?, "甯?) != 0);
}

涓ユ牸鐨勬嫾闊蟲帓搴忔硶

涓轟簡瑙e喅瀹芥澗鐨勬嫾闊崇殑涓ょ偣涓嶈凍錛屽彲浠ラ氳繃瀹炵幇姹夎鎷奸煶鐨勫嚱鏁版潵瑙e喅銆俫oolge涓嬬湅鍒皊f涓婃湁涓猵inyin4j鐨勯」鐩紝鍙互瑙e喅榪欎釜闂錛宲inyin4j鐨勯」鐩湴鍧鏄細http://pinyin4j.sourceforge.net/銆?/p>

瀹炵幇浠g爜錛?/p>

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility;

import java.util.Comparator;
import net.sourceforge.pinyin4j.PinyinHelper;

public class PinyinComparator implements Comparator<String> {

    public int compare(String o1, String o2) {

        for (int i = 0; i < o1.length() && i < o2.length(); i++) {

            int codePoint1 = o1.charAt(i);
            int codePoint2 = o2.charAt(i);

            if (Character.isSupplementaryCodePoint(codePoint1)
                    || Character.isSupplementaryCodePoint(codePoint2)) {
                i++;
            }

            if (codePoint1 != codePoint2) {
                if (Character.isSupplementaryCodePoint(codePoint1)
                        || Character.isSupplementaryCodePoint(codePoint2)) {
                    return codePoint1 - codePoint2;
                }

                String pinyin1 = pinyin((char) codePoint1);
                String pinyin2 = pinyin((char) codePoint2);

                if (pinyin1 != null && pinyin2 != null) { // 涓や釜瀛楃閮芥槸姹夊瓧
                    if (!pinyin1.equals(pinyin2)) {
                        return pinyin1.compareTo(pinyin2);
                    }
                } else {
                    return codePoint1 - codePoint2;
                }
            }
        }
        return o1.length() - o2.length();
    }

    /**
     * 瀛楃鐨勬嫾闊籌紝澶氶煶瀛楀氨寰楀埌絎竴涓嫾闊熾備笉鏄眽瀛楋紝灝眗eturn null銆?br>     */
    private String pinyin(char c) {
        String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(c);
        if (pinyins == null) {
            return null;
        }
        return pinyins[0];
    }
}

嫻嬭瘯錛?/p>

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility.test;

import java.util.Comparator;

import org.junit.Assert;
import org.junit.Test;

import chinese.utility.PinyinComparator;

public class PinyinComparatorTest {

    private Comparator<String> comparator = new PinyinComparator();

    /**
     * 甯哥敤瀛?br>     */
    @Test
    public void testCommon() {
        Assert.assertTrue(comparator.compare("瀛?, "瀹?) < 0);
    }

    /**
     * 涓嶅悓闀垮害
     */
    @Test
    public void testDifferentLength() {
        Assert.assertTrue(comparator.compare("浠栧ザ濂剁殑", "浠栧ザ濂剁殑鐔?) < 0);
    }

    /**
     * 鍜岄潪姹夊瓧姣旇緝
     */
    @Test
    public void testNoneChinese() {
        Assert.assertTrue(comparator.compare("a", "闃?) < 0);
        Assert.assertTrue(comparator.compare("1", "闃?) < 0);
    }

    /**
     * 闈炲父鐢ㄥ瓧(鎬?
     */
    @Test
    public void testNoneCommon() {
        Assert.assertTrue(comparator.compare("鎬?, "寮?) < 0);
    }

    /**
     * 鍚岄煶瀛?br>     */
    @Test
    public void testSameSound() {
        Assert.assertTrue(comparator.compare("鎬?, "甯?) == 0);
    }

    /**
     * 澶氶煶瀛?鏇?
     */
    @Test
    public void testMultiSound() {
        Assert.assertTrue(comparator.compare("鏇劇粡", "鏇捐開") > 0);
    }

}

鎴戠殑榪欐牱涓ユ牸鐨勬嫾闊蟲帓搴忚繕鏄湁鏈夊緟鏀硅繘鐨勫湴鏂癸紝鐪嬩笂闈㈡祴璇曚唬鐮佺殑鏈鍚庝竴涓祴璇曪紝灝變細鍙戠幇錛氱▼搴忎笉浼氭牴鎹澧冩潵鍒ゆ柇澶氶煶瀛楃殑鎷奸煶錛屼粎浠呮槸綆鍗曠殑鍙栧闊沖瓧鐨勭涓涓嫾闊熾?/p>

絎旂敾鎺掑簭

瑕佹寜絎旂敾鎺掑簭錛屽氨瑕佸疄鐜扮瑪鐢繪瘮杈冨櫒銆?/p>

class StokeComparator implements Comparator<String>

濡傛灉鏈変釜鏂規硶鍙互姹傚緱姹夊瓧鐨勭瑪鐢繪暟錛屼笂闈㈢殑鍔熻兘灝卞緢瀹規槗瀹炵幇銆傚浣曟眰涓涓眽瀛楃殑絎旂敾鏁幫紵鏈瀹規槗鎯沖埌鐨勫氨鏄煡琛ㄦ硶銆傚緩涓涓眽瀛楃瑪鐢繪暟琛紝濡傦細

姹夊瓧 Unicode緙栫爜 絎旂敾鏁?/td>
U4E00 1
浜?/td> U4E8C 2
榫?/td> U9F8D 16
... ... ...
琛ㄤ簩

濡傛灉鏄繛緇殑銆佹寜unicode緙栫爜鎺掑ソ欏哄簭鐨勮〃錛屽疄闄呭瓨鍌ㄥ湪絎旂敾鏁拌〃涓殑鍙渶鏈鍚庝竴鍒楀氨澶熶簡銆?/p>

閭e浣曞緩榪欎釜琛ㄥ憿錛熻繖涓〃瀛樺偍鍦ㄥ摢閲岋紵

寤烘眽瀛楃瑪鐢繪暟琛?/h2>

鐜板湪澶у鏁扮郴緇熻繕鍙兘鏀寔Unicode涓殑鍩烘湰姹夊瓧閭i儴鍒嗘眽瀛楋紝緙栫爜浠嶶9FA6-U9FBF銆傛墍浠ユ垜浠彧寤鴻繖閮ㄥ垎姹夊瓧鐨勭瑪鐢昏〃銆傛眽瀛楃瑪鐢繪暟琛紝鎴戜滑鍙互鎸夌収涓嬮潰鐨勬柟娉曠敓鎴愶細

  1. 鐢╦ava紼嬪簭鐢熸垚涓涓枃鏈枃浠?Chinese.csv)銆傚寘鎷墍鏈夌殑浠嶶9FA6-U9FBF鐨勫瓧絎︾殑緙栫爜鍜屾枃瀛椼傚埄鐢╡xcel鐨勬寜絎旂敾鎺掑簭鍔熻兘錛屽Chinese.csv鏂囦歡涓殑鍐呭鎺掑簭銆?
  2. 緙栧啓Java紼嬪簭鍒嗘瀽Chinese.csv鏂囦歡錛屾眰寰楃瑪鐢繪暟, 鐢熸垚ChineseStroke.csv銆傜煫姝g瑪鐢繪暟錛岄噸鏂版寜姹夊瓧鐨刄nicode緙栫爜瀵笴hineseStroke.csv鏂囦歡鎺掑簭銆?
  3. 鍙繚鐣機hineseStroke.csv鏂囦歡鐨勬渶鍚庝竴鍒楋紝鐢熸垚Stroke.csv銆?

鍦ㄨ繖閲?a href="http://m.tkk7.com/Files/jeff-lau/Stroke.zip" target="_blank">涓嬭澆涓婇潰3涓楠ょ敓鎴愮殑3涓枃浠?/a>銆?/p>

鐢熸垚Chinese.csv鐨凧ava紼嬪簭

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility.preface;

import java.io.IOException;
import java.io.PrintWriter;

public class ChineseCoder {

    public static void main(String[] args) throws IOException {
        PrintWriter out = new PrintWriter("Chinese.csv");
        // 鍩烘湰姹夊瓧
        for(char c = 0x4E00; c <= 0x9FA5; c++) {
            out.println((int)c + "," + c);
        }
        out.flush();
        out.close();

    }

}

鍒濆鍖栫瑪鐢繪暟

浠嶦xcel鎺掑簭榪囧悗鐨凜hinese.csv鏂囦歡鏉ョ湅錛屾帓濂藉簭鐨勬枃浠惰繕鏄湁涓瀹氳寰嬬殑銆傚湪鏂囦歡鐨勭9琛?12琛屽彲浠ョ湅鍑猴細閫愯鎵弿鐨勬椂鍊欙紝褰搖nicode浼氬彉灝忎簡錛岀瑪鐢繪暟涔熷氨鍔?銆?/p>

20059,涔?br>20101,浜?br>19969,涓?br>19970,涓?/p>

鐢ㄤ笅闈㈢殑Java紼嬪簭鍒嗘瀽鍚с?/p>

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility.preface;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Stroke {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(new File("Chinese.csv"));       
        PrintWriter out = new PrintWriter("ChineseStroke.csv");
        String oldLine = "999999";
        int stroke = 0;
        while (in.hasNextLine()) {
            String line = in.nextLine();
            if (line.compareTo(oldLine) < 0) {
                stroke++;               
            }
            oldLine = line;
            out.println(line + "," + stroke);           
        }
        out.flush();
        out.close();
        in.close();
    }

}

涓婇潰鐢ㄧ殑榪欎釜瑙勫緥鏈夐棶棰樺悧錛熸湁闂錛屼粠ChineseStroke.csv鏂囦歡鎶藉彇鏈鍚庡嚑涓眽瀛楀氨鍙戠幇錛岀瑪鐢繪暟涓嶅銆備負浠涔堝憿錛?/p>

  • 絎旂敾鏁板彲鑳戒笉鏄繛緇殑銆?
  • n+1絎旂敾鏁扮殑鏈灝廢nicode鐮佸彲鑳芥瘮n絎旂敾鏁扮殑鏈澶nicode鐮佽澶?

鎴戜滑瑕佷漢宸ユ牳瀵笴hineseStroke鏂囦歡錛屼絾鍙鏍稿鍦ㄧ瑪鐢誨彉鍖栫殑閭e嚑涓眽瀛楃殑絎旂敾鏁般傛渶鍚庯紝鎴戝彂鐜幫紝鍙湁絎旂敾鏁板浜?0鐨勫皯鏁板嚑涓眽瀛楃殑絎旂敾鏁頒笉瀵廣傛牳瀵瑰茍鐭絎旂敾鏁板悗錛岀敤Excel鎸塙nicode閲嶆柊鎺掑簭錛屽幓鎺夋眽瀛楀拰Unicode涓ゅ垪錛屽彧淇濈暀絎旂敾鏁伴偅鍒楋紝寰楀埌Stroke.csv鏂囦歡銆?/p>

姹傚緱絎旂敾鏁扮殑鏂規硶鍜岀瑪鐢繪瘮杈冨櫒鏂規硶

姹傚緱絎旂敾鏁扮殑鏂規硶嫻嬭瘯浠g爜錛?

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility.test;

import static org.junit.Assert.assertEquals;

import org.junit.Before;
import org.junit.Test;
import chinese.utility.Chinese;

public class StrokeTest {

    Chinese chinese;

    @Before
    public void setUp() {
        chinese = new Chinese();
    }

    @Test
    public void testStroke() {
        assertEquals(1, chinese.stroke('涓'));
    }

    @Test
    public void testStroke2() {
        assertEquals(2, chinese.stroke('浜?));
    }

    @Test
    public void testStroke16() {
        assertEquals(16, chinese.stroke('榫?));
    }

    @Test
    public void testStrokeABC() {
        assertEquals(-1, chinese.stroke('a'));
    }

}

姹傚緱絎旂敾鏁扮殑鏂規硶浠g爜

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility;

import java.util.Comparator;

public class StrokeComparator implements Comparator<String> {

    public int compare(String o1, String o2) {

        Chinese chinese = new Chinese();

        for (int i = 0; i < o1.length() && i < o2.length(); i++) {
            int codePoint1 = o1.codePointAt(i);
            int codePoint2 = o2.codePointAt(i);
            if (codePoint1 == codePoint2)
                continue;

            int stroke1 = chinese.stroke(codePoint1);
            int stroke2 = chinese.stroke(codePoint2);

            if (stroke1 < 0 || stroke2 < 0) {
                return codePoint1 - codePoint2;
            }

            if (stroke1 != stroke2) {
                return stroke1 - stroke2;
            }
        }

        return o1.length() - o2.length();
    }
}

絎旂敾姣旇緝鍣ㄦ祴璇?/h3>

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility.test;

import java.util.Comparator;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import chinese.utility.StrokeComparator;

public class StrokeComparatorTest {

    private Comparator<String> comparator;
    @Before
    public void setUp() {
        comparator = new StrokeComparator();
    }

    /**
     * 鐩稿悓絎旂敾鏁?br>     */
    @Test
    public void testCompareEquals() {
        Assert.assertTrue(comparator.compare("涓", "涓?) == 0);
    }
    /**
     * 涓嶅悓絎旂敾鏁?br>     */
    @Test
    public void testCompare() {
        Assert.assertTrue(comparator.compare("涓", "浜?) < 0);
        Assert.assertTrue(comparator.compare("鍞?, "椹?) > 0);
    }
    /**
     * 闀垮害涓嶅悓
     */
    @Test
    public void testCompareDefficultLength() {
        Assert.assertTrue(comparator.compare("浜?, "浜屼竴") < 0);
    }
    /**
     * 闈炴眽瀛楃殑姣旇緝
     */
    @Test
    public void testABC() {
        Assert.assertTrue(comparator.compare("涓", "a") > 0);
        Assert.assertTrue(comparator.compare("a", "b") < 0);       
    }
}

絎旂敾姣旇緝鍣?

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility.test;

import java.util.Comparator;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import chinese.utility.StrokeComparator;

public class StrokeComparatorTest {

    private Comparator<String> comparator;
    @Before
    public void setUp() {
        comparator = new StrokeComparator();
    }

    /**
     * 鐩稿悓絎旂敾鏁?br>     */
    @Test
    public void testCompareEquals() {
        Assert.assertTrue(comparator.compare("涓", "涓?) == 0);
    }
    /**
     * 涓嶅悓絎旂敾鏁?br>     */
    @Test
    public void testCompare() {
        Assert.assertTrue(comparator.compare("涓", "浜?) < 0);
        Assert.assertTrue(comparator.compare("鍞?, "椹?) > 0);
    }
    /**
     * 闀垮害涓嶅悓
     */
    @Test
    public void testCompareDefficultLength() {
        Assert.assertTrue(comparator.compare("浜?, "浜屼竴") < 0);
    }
    /**
     * 闈炴眽瀛楃殑姣旇緝
     */
    @Test
    public void testABC() {
        Assert.assertTrue(comparator.compare("涓", "a") > 0);
        Assert.assertTrue(comparator.compare("a", "b") < 0);       
    }
}

鍏朵粬紼嬪簭鐨勬眽瀛楁帓搴?/h1>

Microsoft鍦ㄨ繖鏂歸潰鍋氬緱姣旇緝濂姐傚Sql server 2000錛學ord鍜孍xcel閮借兘鎸夋嫾闊沖拰絎旂敾鎺掑簭銆傝孫racle鍙兘鏄噰鍙栧鏉炬嫾闊蟲帓搴忔硶銆?



Jeff Lau 2007-12-21 11:29 鍙戣〃璇勮
]]>涓枃鎺掑簭 錛?絎旂敾http://m.tkk7.com/jeff-lau/archive/2007/12/20/169147.htmlJeff LauJeff LauThu, 20 Dec 2007 12:39:00 GMThttp://m.tkk7.com/jeff-lau/archive/2007/12/20/169147.htmlhttp://m.tkk7.com/jeff-lau/comments/169147.htmlhttp://m.tkk7.com/jeff-lau/archive/2007/12/20/169147.html#Feedback0http://m.tkk7.com/jeff-lau/comments/commentRss/169147.htmlhttp://m.tkk7.com/jeff-lau/services/trackbacks/169147.html鎽樿錛氬湪寰堝涓枃涔︾睄鐨勪綔鑰呴〉涓紝鏈夊緢澶氫綔鑰呯殑璇濓紝寰堝鏃跺欙紝鏄寜浣滆呭鍚嶇殑絎旂敾欏哄簭鎺掑簭鐨勩侻icrosoft鐨凟xcel鍜孲ql Server瀹炵幇浜嗘寜絎旂敾鎺掑簭鐨勫姛鑳姐傞偅鎸夌瑪鐢婚『搴忔帓搴忥紝鍦↗ava涓┒绔熸庢牱瀹炵幇鍛紵


浣滆咃細Jeff 鍙戣〃浜庯細2007-12-20 20:39 鏈鍚庢洿鏂頒簬錛?2007騫?2鏈?1鏃?12:17
鐗堟潈澹版槑錛氬彲浠ヤ換鎰忚漿杞斤紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈増鏉冨0鏄?/a>銆?br>http://m.tkk7.com/jeff-lau/archive/2007/12/20/169147.html


鍚堝茍浜?/h1>

宸茬粡灝嗐?a href="http://m.tkk7.com/jeff-lau/archive/2007/12/20/169147.html">涓枃鎺掑簭--絎旂敾銆嬪拰銆?a href="http://m.tkk7.com/jeff-lau/archive/2007/12/19/168637.html">涓枃鎺掑簭--姹夎鎷奸煶銆嬩慨鏀瑰茍鍚堝茍銆?a href="http://m.tkk7.com/jeff-lau/archive/2007/12/21/169257.html">涓枃鎺掑簭銆嬩腑銆傝繖閲屽彧淇濈暀鏈鍚庣殑浠g爜銆傚疄鐜扮殑鍘熺悊鍜屾柟娉曡瑙?a href="http://m.tkk7.com/jeff-lau/archive/2007/12/21/169257.html">涓枃鎺掑簭

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility;

import java.util.Comparator;

public class StrokeComparator implements Comparator<String> {

    public int compare(String o1, String o2) {

        Chinese chinese = new Chinese();

        for (int i = 0; i < o1.length() && i < o2.length(); i++) {
            int codePoint1 = o1.codePointAt(i);
            int codePoint2 = o2.codePointAt(i);
            if (codePoint1 == codePoint2)
                continue;

            int stroke1 = chinese.stroke(codePoint1);
            int stroke2 = chinese.stroke(codePoint2);

            if (stroke1 < 0 || stroke2 < 0) {
                return codePoint1 - codePoint2;
            }

            if (stroke1 != stroke2) {
                return stroke1 - stroke2;
            }
        }

        return o1.length() - o2.length();
    }
}



Jeff Lau 2007-12-20 20:39 鍙戣〃璇勮
]]>涓枃鎺掑簭 錛?姹夎鎷奸煶http://m.tkk7.com/jeff-lau/archive/2007/12/19/168637.htmlJeff LauJeff LauWed, 19 Dec 2007 00:30:00 GMThttp://m.tkk7.com/jeff-lau/archive/2007/12/19/168637.htmlhttp://m.tkk7.com/jeff-lau/comments/168637.htmlhttp://m.tkk7.com/jeff-lau/archive/2007/12/19/168637.html#Feedback2http://m.tkk7.com/jeff-lau/comments/commentRss/168637.htmlhttp://m.tkk7.com/jeff-lau/services/trackbacks/168637.html鎽樿錛氫腑鏂囦竴鑸兘鏄寜鎷奸煶鏉ユ帓搴忕殑銆備絾Java涓殑String綾繪槸鎸塙nicode緙栫爜瀛樺偍鏁版嵁鐨勶紝鍥犳錛孲tring綾諱篃鏄寜Unicode緙栫爜鐨勫ぇ灝忔潵鎺掑簭鐨勩係un鍏徃鎻愪緵涓涓狢ollator綾繪潵閲嶆柊鎸変笉鍚岀殑瑙勫垯瀵瑰瓧絎︿覆鎺掑簭錛屼絾Collator瀵逛腑鏂囩殑鎺掑簭鏂瑰紡鍙槸涓嶄弗鏍肩殑鎷奸煶鎺掑簭娉曘侻icrosoft鐨凟xcel鍜孲ql Server瀹炵幇浜嗘寜鎷奸煶鎺掑簭鐨勫姛鑳斤紝灝辨瘮Collator瀹炵幇鐨勫ソ澶氫簡銆傞偅濡備綍鍦↗ava涓疄鐜扮被浼糓icrosoft鐨勬嫾闊蟲帓搴忕殑鏂瑰紡鍛紵


浣滆咃細Jeff 鍙戣〃浜庯細2007-12-19 08:30 鏈鍚庢洿鏂頒簬錛?2007騫?2鏈?1鏃?12:33
鐗堟潈澹版槑錛氬彲浠ヤ換鎰忚漿杞斤紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈増鏉冨0鏄?/a>銆?br>http://m.tkk7.com/jeff-lau/archive/2007/12/19/168637.html


鍚堝茍浜?/h1>

宸茬粡灝嗐?a href="http://m.tkk7.com/jeff-lau/archive/2007/12/20/169147.html">涓枃鎺掑簭--絎旂敾銆嬪拰銆?a href="http://m.tkk7.com/jeff-lau/archive/2007/12/19/168637.html">涓枃鎺掑簭--姹夎鎷奸煶銆嬩慨鏀瑰茍鍚堝茍銆?a href="http://m.tkk7.com/jeff-lau/archive/2007/12/21/169257.html">涓枃鎺掑簭銆嬩腑銆傝繖閲屽彧淇濈暀鏈鍚庣殑浠g爜銆傚疄鐜扮殑鍘熺悊鍜屾柟娉曡瑙?a href="http://m.tkk7.com/jeff-lau/archive/2007/12/21/169257.html">涓枃鎺掑簭銆?/p>

/**
  * @author Jeff
  *
  * Copyright (c) 澶嶅埗鎴栬漿杞芥湰鏂囷紝璇蜂繚鐣欒娉ㄩ噴銆?br>  */
package chinese.utility;

import java.util.Comparator;
import net.sourceforge.pinyin4j.PinyinHelper;

public class PinyinComparator implements Comparator<String> {

    public int compare(String o1, String o2) {

        for (int i = 0; i < o1.length() && i < o2.length(); i++) {

            int codePoint1 = o1.charAt(i);
            int codePoint2 = o2.charAt(i);

            if (Character.isSupplementaryCodePoint(codePoint1)
                    || Character.isSupplementaryCodePoint(codePoint2)) {
                i++;
            }

            if (codePoint1 != codePoint2) {
                if (Character.isSupplementaryCodePoint(codePoint1)
                        || Character.isSupplementaryCodePoint(codePoint2)) {
                    return codePoint1 - codePoint2;
                }

                String pinyin1 = pinyin((char) codePoint1);
                String pinyin2 = pinyin((char) codePoint2);

                if (pinyin1 != null && pinyin2 != null) { // 涓や釜瀛楃閮芥槸姹夊瓧
                    if (!pinyin1.equals(pinyin2)) {
                        return pinyin1.compareTo(pinyin2);
                    }
                } else {
                    return codePoint1 - codePoint2;
                }
            }
        }
        return o1.length() - o2.length();
    }

    /**
     * 瀛楃鐨勬嫾闊籌紝澶氶煶瀛楀氨寰楀埌絎竴涓嫾闊熾備笉鏄眽瀛楋紝灝眗eturn null銆?br>     */
    private String pinyin(char c) {
        String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(c);
        if (pinyins == null) {
            return null;
        }
        return pinyins[0];
    }
}



Jeff Lau 2007-12-19 08:30 鍙戣〃璇勮
]]>璺熻佸垬瀛ava (涓)http://m.tkk7.com/jeff-lau/archive/2007/12/19/168636.htmlJeff LauJeff LauTue, 18 Dec 2007 20:48:00 GMThttp://m.tkk7.com/jeff-lau/archive/2007/12/19/168636.htmlhttp://m.tkk7.com/jeff-lau/comments/168636.htmlhttp://m.tkk7.com/jeff-lau/archive/2007/12/19/168636.html#Feedback7http://m.tkk7.com/jeff-lau/comments/commentRss/168636.htmlhttp://m.tkk7.com/jeff-lau/services/trackbacks/168636.html鑰佸垬鏄釜Java楂樻墜浜嗭紝灝忓垬鏄釜Java鑿滈笩錛屾渶榪戝皬鍒樿窡鐫鑰佸垬寮濮嬪Java銆備綘闂垜錛屽皬鍒樺拰鑰佸垬浠涔堝叧緋伙紵涔熻浠栦滑鏄厔濡瑰惂銆傚皬鍒樻槸涓狹M鍟婏紝濂規紓浜悧錛孮Q鍙鋒槸澶氬皯錛孧SN鍛⑩︹﹂棽璇濆皯璇達紝璦褰掓浼犮?/p>

(灝忓垬璧板悜姝e湪鐜╃數鑴戠殑鑰佸垬韜竟)

灝忓垬錛氳佸垬錛?灝忓垬涓鐩撮兘鏄繖涔堢О鍛艱佸垬鐨?銆傛暀鎴戝Java鍚э紒

鑰佸垬錛氬ソ錛?瀵逛簬灝忓垬鐨勮姹傦紝鑰佸垬浠庢病鎷掔粷榪?

灝忓垬錛氬彲鎴戝Java浠涔堥兘涓嶄細錛?/p>

鑰佸垬錛氭湁鎴戝湪錛屼竴鍒囬兘娌¢棶棰橈紒(鍦ㄥ皬鍒橀潰鍓嶏紝鑰佸垬鎬誨枩嬈㈠惞鍢樸?鎴戜滑鍏堣涓狫ava寮鍙戣繍琛岀幆澧冨惂銆?/p>

灝忓垬錛氬ソ鍛紒

鑰佸垬錛氭垜浠厛鍒癝un鍏徃鐨勭綉绔欎笅杞戒竴涓狫DK銆侸DK灝辨槸鐢ㄦ潵寮鍙慗ava鐨勫伐鍏楓?/p>

灝忓垬錛歋un錛熷氨鏄ぉ涓婄殑閭d釜澶槼鍟婏紒鍘熸潵Java鏄お闃沖叕鍙哥殑鍟婏紒

鑰佸垬錛氬熀鏈笂鍙互榪欎箞璇淬傚叾浠栧叕鍙鎬篃鏈塉DK浜у搧銆傛瘮濡傦細IBM銆?/p>

灝忓垬錛欼BM鎴戠煡閬撱傝鎴戝浗鐨勮仈鎯沖叕鍙告敹璐簡鍢涳紒

鑰佸垬錛?杞昏交絎戜簡涓涓?錛屽氨鏄偅涓狪BM銆備笉榪囪仈鎯沖彧鏀惰喘浜咺BM鐨勪竴涓儴闂ㄨ屽凡銆?/p>

 

(灝忓垬鍦ㄨ佸垬鐨勬寚瀵間笅錛屼粠SUN緗戠珯涓嬭澆涓涓渶鏂扮殑JDK錛岀幇鍦ㄦ鍦ㄤ笅杞戒腑鈥︹?

灝忓垬錛氬垰鎵嶅湪SUN緗戠珯錛屾垜鐪嬪埌鏈変釜Java SE, Java EE,榪樻湁涓︹?/p>

鑰佸垬錛氳繕鏈塉ava ME銆傝繖鏄疛ava涓轟笉鍚岀殑榪愯鐜鍑嗗鐨?縐嶄笉鍚岀増鏈紝浠栦滑鐢ㄧ殑閮芥槸Java璇█錛屽濂絁ava璇█灝辮兘寮鍙?縐嶄笉鍚屽簲鐢ㄧ▼搴忎簡(Java鍦ㄨ繖3縐嶇増鏈櫎浜嗕嬌鐢ㄧ殑Java鐨勮娉曠浉鍚屽錛岃繕鏈夊緢澶氬緢澶氫笉鍚岀殑涓滆タ瑕佹帉鎻★紝鎵嶈兘涓嶅悓瀹屾垚寮鍙戝伐浣滐紝涓轟簡涓嶆墦鍑誨皬鍒樺涔犵殑縐瀬鎬э紝鎶奡UN钂欎漢鐨勯偅濂椾篃鐢ㄤ笂浜?銆侸ava SE鏄疛ava鐨勬爣鍑嗙増錛孞ava ME鏄敤浜庢墜鏈鴻蔣浠跺紑鍙戠殑錛孞ava EE鏄敤浜庝紒涓氬簲鐢ㄥ紑鍙戯紝姣斿緗戠珯鍟娿?/p>

灝忓垬錛欽ava榪樿兘寤虹綉绔欍傛垜瀛︿細Java錛屽氨鑳界敤Java寤轟竴涓嚜宸辨紓浜殑涓漢緗戠珯浜嗐?鎵樼潃涓嬪反錛屼話鐫澶村紑濮嬮亹鎯充簡鈥︹?

鑰佸垬錛?鏅?******錛岃礬閫旈仴榪滅潃浜?閭e氨鍏堝濂絁ava鍚с?/p>

(灝忓垬鍥炲埌鐜板疄錛岃佸垬緇х畫瑙i噴)

鑰佸垬錛欽ava SE鍙互璇村叾浠栫増鏈殑鍩虹銆傛垜浠氨瀛ava SE銆傜幇鍦ㄦ渶鏂扮殑Java SE鏄?.0錛屼笅杞介〉闈㈠湪http://java.sun.com/javase/downloads/index.jsp銆?/p>

 

(鐢佃剳鎻愮ず錛氫笅杞芥垚鍔熶簡)

鑰佸垬錛氱幇鍦ㄥ畨瑁呭惂銆?strong>娉ㄦ剰錛欽ava鐨勯粯璁ょ洰褰曟槸C:\Program Files\..., 鏈濂戒笉瑕佹妸Java甯︽湁絀烘牸鐨勮礬寰勪腑銆?/strong>鎴戜滑瀹夎鍦―:\java鐩綍涓惂銆侸ava SE瀹夎鍖呬腑錛岄櫎浜咼DK錛岃繕鏈塉RE銆傝濂絁DK鍚庯紝浼氭彁紺轟綘鏄惁瀹夎JRE錛屾垜浠竴璧峰畨瑁呬簡鍚с?/p>

灝忓垬錛氫粈涔堟槸JRE錛?/p>

鑰佸垬錛欽RE灝辨槸Java榪愯鐜銆傚鏋滀綘鍙兂榪愯Java紼嬪簭錛屽氨涓嶇敤瀹夎JDK錛屽彧闇瑕佸畨瑁呬竴涓狫RE灝卞浜嗐傜幇鍦ㄥ畨瑁呭ソ浜嗐傛垜浠潵鍐欑涓涓叏涓栫晫鏈鏈夊悕鐨勭▼搴忥細HelloWorld銆?/p>

(鑰佸垬鐢ㄨ浜嬫湰鍒涘緩涓嬮潰涓涓枃浠訛細HelloWorld.java)

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }

}

 

(鑰佸垬鎵撳紑鍛戒護紿楀彛錛岃緭鍏ワ細javac HelloWorld.java銆傜數鑴戞樉紺猴細'javac' 涓嶆槸鍐呴儴鎴栧閮ㄥ懡浠わ紝涔熶笉鏄彲榪愯鐨勭▼搴忔垨鎵瑰鐞嗘枃浠躲?

鑰佸垬錛氭垜浠殑鐢佃剳鏄疻inXP緋葷粺錛屽拰Win2000涓鏍鳳紝閮芥槸WinNT緋葷粺鐨勩傝緗竴涓嬬幆澧冨彉閲忥紝灝辮兘姝e父緙栬瘧浜嗐?/p>

鑰佸垬閫氳繃鐐瑰嚮 鎴戠殑鐢佃剳 --> 灞炴?--> 楂樼駭 --> 鐜鍙橀噺 鎵撳紑浜嗙幆澧冨彉閲忚緗璇濇銆傚湪緋葷粺鍙橀噺涓姞鍏?/p>

JAVA_HOME=D:\java   (鏂板緩鐨?

path=%JAVA_HOME%\bin; (榪藉姞鍦╬ath鍙橀噺鏈鍓嶉潰)

 

(鑰佸垬鍐嶆鎵撳紑鍛戒護紿楀彛錛岃緭鍏ワ細javac HelloWorld.java銆傛甯鎬簡銆傝緭鍏ワ細java HelloWorld銆傜數鑴戞樉紺篐ello World!)

鑰佸垬錛氬厛浼戞伅涓涓嬨傜瓑浼氬効浣犺嚜宸辯収鎴戝垰鎵嶉偅鏍鳳紝鍐欎竴涓狧elloWorld.java鏂囦歡錛屽茍緙栬瘧鍜岃繍琛屽畠銆?/p>

灝忓垬錛氬ソ鐨勩?/p>

(灝忓垬鏄釜濂藉鐨勮彍楦燂紝涓嶄紤鎭氨寮濮嬪ス鐨勭涓涓狫ava紼嬪簭浜嗏︹?

 

(HelloWorld.java铏界劧綆鍗曠煭灝忥紝綺楀績鐨勫皬鍒樹篃杈撻敊浜嗐傚湪緙栬瘧鐨勬椂鍊欏嚭鏉ヤ簡涓鍫嗛敊璇紝鍦ㄨ佸垬鐨勫府鍔╀笅錛屼竴涓鏀規浜嗚繖浜涢敊璇傝繍琛屾垚鍔熺殑鏃跺欙紝灝忓垬楂樺叴鐨勮煩浜嗚搗鏉ャ傝寰楄嚜宸卞凡緇忔槸Java楂樻墜浜嗐傞珮鍏磋繃鍚庯紝灝忓垬婊″績鐤戦棶鈥︹?

灝忓垬錛氳佸垬錛佽繖浜涗唬鐮佷腑鐨勫崟璇嶉兘浠涔堟剰鎬濓紵

鑰佸垬錛氳繖涔堬紝鏄庡ぉ鍐嶈鍚э紒



Jeff Lau 2007-12-19 04:48 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲短视频在线观看| 亚洲专区在线视频| 亚洲av日韩aⅴ无码色老头| 国产福利在线免费| 亚洲不卡中文字幕| 午夜宅男在线永久免费观看网| 亚洲网红精品大秀在线观看| 免费国产污网站在线观看15| 久久久亚洲AV波多野结衣| 99免费视频观看| 亚洲伦理一二三四| 在线中文高清资源免费观看| 亚洲成aⅴ人片久青草影院按摩| 国产精品免费视频一区| 曰韩无码AV片免费播放不卡 | 最近免费中文字幕大全免费| 亚洲国产精久久久久久久| 亚欧免费无码aⅴ在线观看| 日产亚洲一区二区三区| 在线观看视频免费完整版| 亚洲av日韩综合一区久热| 午夜国产羞羞视频免费网站| a级毛片免费观看在线| 亚洲av中文无码乱人伦在线咪咕| 精品熟女少妇av免费久久| 亚洲日产乱码一二三区别 | 国内精品久久久久影院免费| 亚洲AV成人片色在线观看| 无码专区永久免费AV网站| 杨幂最新免费特级毛片| 久久精品亚洲中文字幕无码网站| 1000部拍拍拍18勿入免费凤凰福利| 精品亚洲成在人线AV无码| 国产成人99久久亚洲综合精品| 伊人久久免费视频| 亚洲av无码专区国产不乱码| 亚洲线精品一区二区三区| 美女视频黄的全免费视频| 免费一级特黄特色大片| 亚洲无砖砖区免费| 亚洲无码精品浪潮|