最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java StringTokenizer分隔符拆分字符串

 更新時(shí)間:2023年08月01日 09:27:13   作者:韓長(zhǎng)奇  
Java中的StringTokenizer類用于將一個(gè)字符串分解成標(biāo)記,本文主要介紹了Java StringTokenizer分隔符拆分字符串,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

StringTokenizer的成員變量

// 以下七個(gè)參數(shù)是在三個(gè)參數(shù)的構(gòu)造方法中設(shè)置的
// 當(dāng)前位置
private int currentPosition;
// 下一個(gè)要處理的字符的索引
private int newPosition;
// 最大位置,即被分割字符串的長(zhǎng)度
private int maxPosition;
// 要分割的字符串
private String str;
// 分隔符,字符串中的每個(gè)字符都是一個(gè)分隔符
private String delimiters;
// 指示是否將分隔符作為令牌返回的標(biāo)志。
private boolean retDelims;
// 分隔符是否改變的表示,true表示分隔符發(fā)生改變,false表示分隔符沒發(fā)生改變,默認(rèn)為false
private boolean delimsChanged;
// 以下三個(gè)參數(shù)是在構(gòu)造方法的setMaxDelimCodePoint()方法中設(shè)置
// 保存分隔符中ASCII碼值最大的的字符
private int maxDelimCodePoint;
// 是否包含代理,即是否涉及到UTF-16和Unicode編碼,一般不會(huì)涉及到。
private boolean hasSurrogates = false;
// 如果涉及到代理(即涉及到UTF-16和Unicode編碼),會(huì)將所有的分隔符轉(zhuǎn)換成碼點(diǎn)值保存到int數(shù)組中
private int[] delimiterCodePoints;

StringTokenizer 的構(gòu)造方法

1、StringTokenizer(String str)只有一個(gè)入?yún)⒌臉?gòu)造函數(shù)。

// 單個(gè)參數(shù)的構(gòu)造函數(shù),參數(shù)為需要被解析的字符串
public StringTokenizer(String str) {
    // 調(diào)用三個(gè)參數(shù)的構(gòu)造方法:
    // 1、需要被解析的字符串;
    // 2、Java默認(rèn)的分隔符,包括空格、制表符、換行符、回車符、\f;
    // 3、指示是否將分隔符作為令牌返回的標(biāo)志。false表示分隔符本身不會(huì)被視為令牌
    this(str, " \t\n\r\f", false);
}

2、StringTokenizer(String str, String delim)兩個(gè)入?yún)⒌臉?gòu)造函數(shù)

// 兩個(gè)參數(shù)的構(gòu)造方法,str:需要被解析的字符串  delim:分隔符字符串,每一個(gè)字符都是一個(gè)分隔符
public StringTokenizer(String str, String delim) {
    // 1、需要被解析的字符串;
    // 2、使用指定的字符作為分割符
    // 3、指示是否將分隔符作為令牌返回的標(biāo)志。false表示分隔符本身不會(huì)被視為令牌
    this(str, delim, false);
}

3、StringTokenizer(String str, String delim, boolean returnDelims)三個(gè)入?yún)⒌臉?gòu)造函數(shù)

public StringTokenizer(String str, String delim, boolean returnDelims) {
    // 當(dāng)前位置設(shè)為0,即索引下標(biāo)為0
    currentPosition = 0;
    // 下個(gè)要處理的位置
    newPosition = -1;
    // 分隔符是否改變的表示,true表示分隔符發(fā)生改變,false表示分隔符沒發(fā)生改變,默認(rèn)為false
    delimsChanged = false;
    // 要分割的字符串
    this.str = str;
    // 最大位置,即被分割字符串的長(zhǎng)度
    maxPosition = str.length();
    // 設(shè)置分隔符,字符串中的每個(gè)字符都是一個(gè)分隔符
    delimiters = delim;
    // 指示是否將分隔符作為令牌返回的標(biāo)志。
    retDelims = returnDelims;
    // 設(shè)置分割符中ASCII碼值最大字符
    setMaxDelimCodePoint();
}

StringTokenizer public修飾的方法

hasMoreTokens() 判斷是否被分割字符串中是否有更多可用的標(biāo)記

注意:該方法為public修飾的方法。
1、返回true,表示后續(xù)調(diào)用nextToken()將成功返回一個(gè)token(即分割好的字符串)。
2、返回false,表示后續(xù)調(diào)用nextToken()將會(huì)拋出異常:NoSuchElementException

// 如果retDelims為false(不將分隔符作為令牌返回的標(biāo)志),判斷當(dāng)前位置及當(dāng)前位置之后是否還有非分隔符的字符
// 如果retDelims為true(將分隔符作為令牌返回的標(biāo)志),判斷當(dāng)前位置是否小于被分割字符串的長(zhǎng)度
public boolean hasMoreTokens() {
    /*
     * Temporarily store this position and use it in the following
     * nextToken() method only if the delimiters haven't been changed in
     * that nextToken() invocation.
     *
     * 臨時(shí)存儲(chǔ)此位置,并僅在nextToken()調(diào)用中分隔符未更改時(shí)在以下nextToken()方法中使用它。
     */
    // 如果retDelims為false(不將分隔符作為令牌返回的標(biāo)志),則返回當(dāng)前位置或當(dāng)前位置之后第一個(gè)非分隔符的字符索引
    // 如果retDelims為true(將分隔符作為令牌返回的標(biāo)志),返回當(dāng)前位置字符的索引
    newPosition = skipDelimiters(currentPosition);
    // 當(dāng)前位置小于被分割字符串的長(zhǎng)度
    return (newPosition < maxPosition);
}

nextToken()獲取下一個(gè)根據(jù)分隔符拆分的字符串

注意:該方法為public關(guān)鍵字修飾的方法

// 獲取下一個(gè)根據(jù)分隔符拆分的字符串
public String nextToken() {
? ? /*
? ? ?* If next position already computed in hasMoreElements() and
? ? ?* delimiters have changed between the computation and this invocation,
? ? ?* then use the computed value.
? ? ?* 如果下一個(gè)位置已經(jīng)在hasMoreElements()中計(jì)算過(guò),并且分隔符在計(jì)算和調(diào)用之間發(fā)生了變化,則使用計(jì)算值。
? ? ?*/
? ? // 當(dāng)下一個(gè)要處理的字符索引 >= 0 并且 分隔符未發(fā)生改變時(shí),將下一個(gè)要處理的字符索引 賦值給 當(dāng)前位置(當(dāng)前要處理的字符索引)
? ? // 否則重新計(jì)算下一個(gè)要處理的字符索引
? ? currentPosition = (newPosition >= 0 && !delimsChanged) ?
? ? ? ? newPosition : skipDelimiters(currentPosition);
? ? /* Reset these anyway */
? ? // 將分隔符是否改變的標(biāo)志設(shè)置為false,表示分隔符不再變化
? ? delimsChanged = false;
? ? // 重新將下一個(gè)要處理的字符索引設(shè)置為-1
? ? newPosition = -1;
? ? // 如果當(dāng)前位置 >= 最大位置,拋出異常
? ? if (currentPosition >= maxPosition)
? ? ? ? throw new NoSuchElementException();
? ? // 將當(dāng)前位置設(shè)置為截取字符串的開始下標(biāo)
? ? int start = currentPosition;
? ? // 獲取下一個(gè)分隔符的索引。并且currentPosition(當(dāng)前位置)變?yōu)榉指舴谖恢玫乃饕?
? ? currentPosition = scanToken(currentPosition);
? ? // 截取字符串,從第一個(gè)非分隔符的索引開始,到下一個(gè)分隔符的索引結(jié)束。
? ? return str.substring(start, currentPosition);
}

nextToken(String delim)根據(jù)新的分隔符獲取下一個(gè)被拆分出來(lái)的字符串

注意:該方法為public修飾的方法

// 根據(jù)新的分隔符獲取下一個(gè)被拆分出來(lái)的字符串
public String nextToken(String delim) {
? ? // 設(shè)置分隔符,字符串中的每個(gè)字符都是一個(gè)分隔符
? ? delimiters = delim;
? ? /* delimiter string specified, so set the appropriate flag.
? ? * 創(chuàng)建對(duì)象后重新設(shè)置分隔符字符串,需要將此標(biāo)志設(shè)置為true。 */
? ? delimsChanged = true;
? ? // 需改分隔符字符串后需要重新設(shè)置設(shè)置maxDelimCodePoint(分隔符中的最高字符,即ASCII碼值最大的的字符)
? ? setMaxDelimCodePoint();
? ? // ?根據(jù)分隔符獲取下一個(gè)拆分出來(lái)的字符串
? ? return nextToken();
}

countTokens()獲取被分割的字符串中還能拆分出幾個(gè)字符串。

注意:該方法為public修飾的方法,隨這nextToken()方法的調(diào)用,該方法返回值會(huì)發(fā)生變化。

// 獲取被分割的字符串中還能拆分出幾個(gè)字符串。隨這nextToken()方法的調(diào)用,該方法返回值會(huì)發(fā)生變化
public int countTokens() {
    int count = 0;
    // currentPosition為成員變量,所以會(huì)隨著其他方法的調(diào)用發(fā)生變化,因此該方法的返回值會(huì)發(fā)生變化
    int currpos = currentPosition;
    // 當(dāng)前位置字符 < 被分割字符串長(zhǎng)度
    while (currpos < maxPosition) {
        // 獲取當(dāng)前位置或當(dāng)前位置之后第一個(gè)非分隔符的字符索引
        currpos = skipDelimiters(currpos);
        // 如果 當(dāng)前位置 >= 被分割字符串長(zhǎng)度 則跳出循環(huán)
        if (currpos >= maxPosition)
            break;
        // 獲取下一個(gè)分隔符的索引
        currpos = scanToken(currpos);
        count++;
    }
    return count;
}

StringTokenizer private修飾的方法

setMaxDelimCodePoint()設(shè)置分隔符中的最高字符,即ASCII碼值最大的的字符。

注意:該方法為private修飾的方法。

// 設(shè)置maxDelimCodePoint的值為分隔符中的最高字符,即ASCII碼值最大的的字符。
private void setMaxDelimCodePoint() {
? ? // 如果分隔符為null,
? ? if (delimiters == null) {
? ? ? ? maxDelimCodePoint = 0;
? ? ? ? return;
? ? }
? ? int m = 0;
? ? int c;
? ? int count = 0;
? ? // Character.charCount(c) 如果c大于等于 Unicode最小補(bǔ)充碼點(diǎn) 返回2,否則返回1
? ? for (int i = 0; i < delimiters.length(); i += Character.charCount(c)) {
? ? ? ? // delimiters分隔符字符串中下標(biāo)為i的字符,使用int接收,返回的是ASCII值
? ? ? ? c = delimiters.charAt(i);
? ? ? ? // 如果 c >= Unicode編碼的最小高代理 并且 c <= Unicode編碼的最大低代理。與UTF-16相關(guān)。
? ? ? ? if (c >= Character.MIN_HIGH_SURROGATE && c <= Character.MAX_LOW_SURROGATE) {
? ? ? ? ? ? // 獲取分隔符字符串 下標(biāo)為i處的字符的Unicode碼點(diǎn)值
? ? ? ? ? ? c = delimiters.codePointAt(i);
? ? ? ? ? ? // 將是否使用代理設(shè)置為true
? ? ? ? ? ? hasSurrogates = true;
? ? ? ? }
? ? ? ? // 比較每個(gè)分隔符的ASCII值,將最大ASCII值賦值給m
? ? ? ? if (m < c)
? ? ? ? ? ? m = c;
? ? ? ? // count表示
? ? ? ? count++;
? ? }
? ? // 將最大ASCII值賦值給maxDelimCodePoint
? ? maxDelimCodePoint = m;
? ? // 如果有代理
? ? if (hasSurrogates) {
? ? ? ? // 如果涉及到UTF-16和Unicode編碼,將所有分隔符轉(zhuǎn)換成 Unicode碼點(diǎn)值
? ? ? ? delimiterCodePoints = new int[count];
? ? ? ? for (int i = 0, j = 0; i < count; i++, j += Character.charCount(c)) {
? ? ? ? ? ? c = delimiters.codePointAt(j);
? ? ? ? ? ? delimiterCodePoints[i] = c;
? ? ? ? }
? ? }
}

skipDelimiters()獲取下一個(gè)要處理字符的索引

注意:該方法為private修飾的方法

// 如果retDelims為false(不將分隔符作為令牌返回的標(biāo)志),則返回當(dāng)前位置或當(dāng)前位置之后第一個(gè)非分隔符的字符索引
// 如果retDelims為true(將分隔符作為令牌返回的標(biāo)志),返回當(dāng)前位置字符的索引
private int skipDelimiters(int startPos) {
? ? // 分隔符字符串非空校驗(yàn)
? ? if (delimiters == null)
? ? ? ? throw new NullPointerException();
? ? // 記錄字符串下標(biāo)位置,即當(dāng)前判斷的位置
? ? int position = startPos;
? ? // retDelims 一般設(shè)置為false,表示不將分隔符作為令牌返回的標(biāo)志。
? ? while (!retDelims && position < maxPosition) {
? ? ? ? // hasSurrogates默認(rèn)為false,表示沒有代理,即不涉及UTF-16和Unicode編碼
? ? ? ? if (!hasSurrogates) {
? ? ? ? ? ? // 從被分割字符串str中獲取當(dāng)前位置的字符
? ? ? ? ? ? char c = str.charAt(position);
? ? ? ? ? ? // 如果 當(dāng)前位置的字符 大于 分隔符中的最大字符 或者 分隔符字符串中沒有當(dāng)前字符
? ? ? ? ? ? if ((c > maxDelimCodePoint) || (delimiters.indexOf(c) < 0))
? ? ? ? ? ? ? ? // 跳出循環(huán)
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? // 當(dāng)前位置 +1
? ? ? ? ? ? position++;
? ? ? ? } else {
? ? ? ? ? ? // 存在代理(涉及UTF-16和Unicode編碼),獲取當(dāng)前位置字符的Unicode碼點(diǎn)值
? ? ? ? ? ? int c = str.codePointAt(position);
? ? ? ? ? ? // 如果當(dāng)前位置的字符碼點(diǎn)值大于分隔符中的最大字符 或者 當(dāng)前碼點(diǎn)至對(duì)應(yīng)的字符不是分隔符
? ? ? ? ? ? if ((c > maxDelimCodePoint) || !isDelimiter(c)) {
? ? ? ? ? ? ? ? // 跳出本次循環(huán)
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? // 如果c大于等于 Unicode最小補(bǔ)充碼點(diǎn) 當(dāng)前位置+2,否則,當(dāng)前位置+1
? ? ? ? ? ? position += Character.charCount(c);
? ? ? ? }
? ? }
? ? return position;
}

isDelimiter()判斷碼點(diǎn)值對(duì)應(yīng)的字符是不是分隔符

注意:該方法為private修飾的方法

// 判斷碼點(diǎn)值對(duì)應(yīng)的字符是不是分隔符,返回true表示當(dāng)前碼點(diǎn)值是一個(gè)分隔符,返回false表示當(dāng)前的碼點(diǎn)值不是分隔符的碼點(diǎn)值
private boolean isDelimiter(int codePoint) {
    // 涉及到代理(即涉及到UTF-16和Unicode編碼),從分隔符成碼點(diǎn)值數(shù)組中遍歷
    for (int delimiterCodePoint : delimiterCodePoints) {
        // 如果分隔符成碼點(diǎn)值數(shù)組中的某一個(gè)值等于當(dāng)前碼點(diǎn)值
        if (delimiterCodePoint == codePoint) {
            // 返回true
            return true;
        }
    }
    // 返回false
    return false;
}

scanToken(int startPos)獲取下一個(gè)分隔符的索引

注意:該方法為private修飾的方法

// 從startPos跳過(guò)并返回遇到的下一個(gè)分隔符字符的索引,如果沒有找到這樣的分隔符,則返回maxPosition。
private int scanToken(int startPos) {
    int position = startPos;
    // 當(dāng)要操作的字符索引小于被分割字符串的長(zhǎng)度
    while (position < maxPosition) {
        // 當(dāng)不包含代理,即不涉及到UTF-16和Unicode編碼。
        if (!hasSurrogates) {
            // 獲取當(dāng)前索引位置的字符
            char c = str.charAt(position);
            // 當(dāng)前字符 <= 分隔符最大字符 并且 當(dāng)前字符是一個(gè)分隔符。找到分隔符時(shí)推出
            if ((c <= maxDelimCodePoint) && (delimiters.indexOf(c) >= 0))
                // 退出循環(huán)
                break;
            // 當(dāng)前索引位置+1
            position++;
        } else {
            // 獲取當(dāng)前索引位置對(duì)應(yīng)的字符的Unicode碼值
            int c = str.codePointAt(position);
            // 當(dāng)前字符 <= 分隔符最大字符 并且 當(dāng)前字符是一個(gè)分隔符。找到分隔符時(shí)推出
            if ((c <= maxDelimCodePoint) && isDelimiter(c))
                break;
            // 涉及到Unicode編碼,需要判斷當(dāng)前字符是占一個(gè)位置還是兩個(gè)位置
            position += Character.charCount(c);
        }
    }
    // 需要將分隔符作為令牌返回的標(biāo)志,并且 當(dāng)前位置與起始位置一直
    if (retDelims && (startPos == position)) {
        // 當(dāng)不包含代理,即不涉及到UTF-16和Unicode編碼。
        if (!hasSurrogates) {
            char c = str.charAt(position);
            // 當(dāng)前字符 <= 分隔符最大字符 并且 當(dāng)前字符是一個(gè)分隔符。
            if ((c <= maxDelimCodePoint) && (delimiters.indexOf(c) >= 0))
                position++;
        } else {
            int c = str.codePointAt(position);
            // 當(dāng)前字符 <= 分隔符最大字符 并且 當(dāng)前字符是一個(gè)分隔符。
            if ((c <= maxDelimCodePoint) && isDelimiter(c))
                // // 涉及到Unicode編碼,需要判斷當(dāng)前字符是占一個(gè)位置還是兩個(gè)位置
                position += Character.charCount(c);
        }
    }
    // 返回分隔符的索引值
    return position;
}

StringTokenizer 類的使用

1、可以使用以下方式創(chuàng)建一個(gè)spring容器

public static void main(String[] args) {
    ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext();
    // 設(shè)置配置文件路徑,多個(gè)位置使用逗號(hào)、分號(hào)、空格、制表符、換行 五種方式分割。    
    classPathXmlApplicationContext.setConfigLocation("classpath*:/*.xml");
    classPathXmlApplicationContext.refresh();
}

2、main方法中創(chuàng)建ClassPathXmlApplicationContext對(duì)象后會(huì)調(diào)用setConfigLocation(String location)方法。
該方法是AbstractRefreshableConfigApplicationContext類中的方法。源代碼如下:

public void setConfigLocation(String location) {
    // 將傳入的字符串,根據(jù)逗號(hào)、分號(hào)、空格、制表符、換行 五種字符拆分成數(shù)組
    setConfigLocations(StringUtils.tokenizeToStringArray(location, CONFIG_LOCATION_DELIMITERS));
}

該方法中的CONFIG_LOCATION_DELIMITERS是ConfigurableApplicationContext接口中定義的常量。

String CONFIG_LOCATION_DELIMITERS = ",; \t\n";

3、setConfigLocation(String location)方法會(huì)調(diào)用StringUtils中的方法。源代碼如下:

// 根據(jù) delimiters字符串中的字符作為分隔符,將str拆分成數(shù)組
public static String[] tokenizeToStringArray(@Nullable String str, String delimiters) {
    return tokenizeToStringArray(str, delimiters, true, true);
}

4、調(diào)用StringUtils中重載的setConfigLocation方法,源代碼如下:
1)該方法中調(diào)用了StringTokenizer類中的hasMoreTokens()方法作為循環(huán)條件。
2)該方法中調(diào)用StringTokenizer類中的nextToken()方法獲取下一個(gè)根據(jù)分隔符拆分的字符串。
通過(guò)這兩個(gè)方法,將設(shè)置配置文件的字符串根據(jù)指定的分隔符拆分。

// str 要處理的字符串
// delimiters 分隔符,每個(gè)字符都是一個(gè)分隔符
// trimTokens 拆分出來(lái)的字符串是否要去掉首尾的空格。true表示去掉
// ignoreEmptyTokens 是否忽略空字符串。true表示忽略
public static String[] tokenizeToStringArray(
?? ??? ?@Nullable String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens) {
?? ?if (str == null) {
?? ??? ?return EMPTY_STRING_ARRAY;
?? ?}
?? ?// 將要操作的字符串和分隔符字符串設(shè)置到StringTokenizer對(duì)象中
?? ?StringTokenizer st = new StringTokenizer(str, delimiters);
?? ?List<String> tokens = new ArrayList<>();
?? ?while (st.hasMoreTokens()) {
?? ??? ?String token = st.nextToken();
?? ??? ?if (trimTokens) {
?? ??? ??? ?token = token.trim();
?? ??? ?}
?? ??? ?if (!ignoreEmptyTokens || token.length() > 0) {
?? ??? ??? ?tokens.add(token);
?? ??? ?}
?? ?}
?? ?// List集合轉(zhuǎn)數(shù)組
?? ?return toStringArray(tokens);
}

5、直接使用ClassPathXmlApplicationContext(String configLocation)有參構(gòu)造,直接設(shè)置了配置文件路徑,拆分方式與無(wú)參構(gòu)造不同。

到此這篇關(guān)于Java StringTokenizer分隔符拆分字符串的文章就介紹到這了,更多相關(guān)Java StringTokenizer拆分字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于SaCheckPermission權(quán)限校驗(yàn)注解

    關(guān)于SaCheckPermission權(quán)限校驗(yàn)注解

    在若依框架(RuoYi)的前后端分離版4.8.x中,SaCheckPermission注解用于權(quán)限校驗(yàn),這個(gè)注解可以應(yīng)用在方法上,以確保只有具有相應(yīng)權(quán)限的用戶才能訪問該方法
    2024-11-11
  • 詳解Spring注解@Autowired的實(shí)現(xiàn)原理和使用方法

    詳解Spring注解@Autowired的實(shí)現(xiàn)原理和使用方法

    在使用Spring開發(fā)的時(shí)候,配置的方式主要有兩種,一種是xml的方式,另外一種是 java config的方式,在使用的過(guò)程中,我們使用最多的注解應(yīng)該就是@Autowired注解了,所以本文就給大家講講@Autowired注解是如何使用和實(shí)現(xiàn)的,需要的朋友可以參考下
    2023-07-07
  • 詳解Spring集成Redis的兩種方式

    詳解Spring集成Redis的兩種方式

    在工作中,我們用到分布式緩存的時(shí)候,第一選擇就是Redis,今天介紹一下SpringBoot如何集成Redis的,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09
  • java實(shí)現(xiàn)猜數(shù)字小游戲(Swing版)

    java實(shí)現(xiàn)猜數(shù)字小游戲(Swing版)

    這篇文章主要介紹了java實(shí)現(xiàn)猜數(shù)字小游戲,Swing編程版的猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • java正則表達(dá)式判斷 ip 地址是否正確解析

    java正則表達(dá)式判斷 ip 地址是否正確解析

    這篇文章主要介紹了java正則表達(dá)式判斷 ip 地址是否正確解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java 文件傳輸助手的實(shí)現(xiàn)(單機(jī)版)

    Java 文件傳輸助手的實(shí)現(xiàn)(單機(jī)版)

    這篇文章主要介紹了Java 文件傳輸助手的實(shí)現(xiàn)(單機(jī)版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java帶復(fù)選框的樹(Java CheckBox Tree)實(shí)現(xiàn)和應(yīng)用

    Java帶復(fù)選框的樹(Java CheckBox Tree)實(shí)現(xiàn)和應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Java帶復(fù)選框的樹實(shí)現(xiàn)和應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java簡(jiǎn)易學(xué)生成績(jī)系統(tǒng)寫法實(shí)例

    Java簡(jiǎn)易學(xué)生成績(jī)系統(tǒng)寫法實(shí)例

    在本篇文章里小編給大家分享的是關(guān)于Java簡(jiǎn)易學(xué)生成績(jī)系統(tǒng)寫法實(shí)例以及相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • 詳解java CountDownLatch和CyclicBarrier在內(nèi)部實(shí)現(xiàn)和場(chǎng)景上的區(qū)別

    詳解java CountDownLatch和CyclicBarrier在內(nèi)部實(shí)現(xiàn)和場(chǎng)景上的區(qū)別

    這篇文章主要介紹了詳解java CountDownLatch和CyclicBarrier在內(nèi)部實(shí)現(xiàn)和場(chǎng)景上的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • IDEA找不到j(luò)dk該如何解決

    IDEA找不到j(luò)dk該如何解決

    這篇文章主要給大家介紹了關(guān)于IDEA找不到j(luò)dk該如何解決的相關(guān)資料,剛安裝好IDEA后,我們運(yùn)行一個(gè)項(xiàng)目時(shí)候,有時(shí)候會(huì)遇到顯示找不到Java的JDK,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

昌吉市| 皮山县| 临猗县| 那曲县| 通城县| 安顺市| 西丰县| 东至县| 兴国县| 株洲县| 鱼台县| 屏南县| 政和县| 肥乡县| 三河市| 昆明市| 乐安县| 万安县| 稷山县| 晋宁县| 芜湖市| 马公市| 隆尧县| 玉屏| 陆良县| 荥经县| 栾川县| 济宁市| 安平县| 湖南省| 鞍山市| 大兴区| 三台县| 车致| 南丹县| 青冈县| 泸西县| 义马市| 梓潼县| 隆德县| 崇仁县|