欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

你知道Java判斷字符串是否為數(shù)字的多種方式嗎

 更新時(shí)間:2022年07月06日 08:38:14   作者:Alphathur  
在編程的時(shí)候經(jīng)常遇到要判斷一個(gè)字符串中的字符是否是數(shù)字(0-9),所以下面這篇文章主要給大家介紹了關(guān)于Java判斷字符串是否為數(shù)字的多種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

判斷一個(gè)字符串是否為數(shù)字是Java開(kāi)發(fā)中很常見(jiàn)的業(yè)務(wù)需求,實(shí)現(xiàn)這個(gè)判斷有很多種方式,大體上分為異常處理,正則表達(dá)式,數(shù)字字符,NumberFormat工具類(lèi),外部工具類(lèi)這五大類(lèi),不同類(lèi)型下的實(shí)現(xiàn)方式其實(shí)略有不同,那么究竟選擇哪種方式才是最好的呢?本文將一一列舉出這5類(lèi)中具體8個(gè)方案,并通過(guò)豐富的測(cè)試用例來(lái)并對(duì)比這些方案的差異,相信看完本文,你將會(huì)有自己的思考。

異常處理

使用異常處理的本質(zhì)是基于java自身對(duì)于字符串定義而實(shí)現(xiàn)的,如果我們的字符串能夠被轉(zhuǎn)換為數(shù)字,那么這個(gè)字符串就是數(shù)字,如果轉(zhuǎn)換失敗則會(huì)拋出異常,所以我們?nèi)绻軌虿东@異常,就可以認(rèn)為它不是數(shù)字,這個(gè)方案很簡(jiǎn)單:

    public static boolean isNumeric1(String str) {
        try {
            Double.parseDouble(str);
            return true;
        } catch(Exception e){
            return false;
        }
    }

如果我們的業(yè)務(wù)只要求判斷字符串是否為整數(shù),那么只需要將Double.parseDouble(str);換成Integer.parseInt(str);即可。但是這個(gè)方案有個(gè)致命缺陷,由于判斷失敗會(huì)拋異常出來(lái),當(dāng)判斷失敗的頻率比較高,將產(chǎn)生較大的性能損耗。

正則表達(dá)式

使用正則表達(dá)式也是一種常見(jiàn)的判斷方式,以下的正則表達(dá)式將判斷輸入字符串是否為整數(shù)或者浮點(diǎn)數(shù),涵蓋負(fù)數(shù)的情況。

    public static boolean isNumeric2(String str) {
        return str != null && str.matches("-?\\d+(\\.\\d+)?");
    }

當(dāng)然,為了性能考量,這個(gè)方法最好優(yōu)化成以下方式,因?yàn)樯厦娴膶?xiě)法每次調(diào)用時(shí)都會(huì)在matches內(nèi)部間接創(chuàng)建一個(gè)Pattern實(shí)例。

    private static final Pattern NUMBER_PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");
    public static boolean isNumeric2(String str) {
        return str != null && NUMBER_PATTERN.matcher(str).matches();
    }

使用NumberFormat

通常使用NumberFormat類(lèi)的format方法將一個(gè)數(shù)值格式化為符合某個(gè)國(guó)家地區(qū)習(xí)慣的數(shù)值字符串,例如我們輸入18,希望輸出18¥,使用這個(gè)類(lèi)再好不過(guò)了,這里可以了解它的具體用法。但是也可以用該類(lèi)的parse方法來(lái)判斷輸入字符串是否為數(shù)字。

    public static boolean isNumeric3(String str) {
        if (str == null) return false;
        NumberFormat formatter = NumberFormat.getInstance();
        ParsePosition pos = new ParsePosition(0);
        formatter.parse(str, pos);
        return str.length() == pos.getIndex();
    }

數(shù)字字符

字符串的底層實(shí)現(xiàn)其實(shí)就是字符數(shù)組,如果這個(gè)字符數(shù)組中每個(gè)字符都是數(shù)字,那么這個(gè)字符串不就是數(shù)字字符串了嗎?利用java.lang.Character#isDigit(int)判斷所有字符是否為數(shù)字字符從而達(dá)到判斷數(shù)字字符串的目的:

    public static boolean isNumeric4(String str) {
        if (str == null) return false;
        for (char c : str.toCharArray ()) {
            if (!Character.isDigit(c)) return false;
        }
        return true;
    }

如果你的java版本是8以上,以上的寫(xiě)法可以替換成如下Stream流的方式,從而看起來(lái)更優(yōu)雅。所以,茴香豆的‘茴’又多了一種寫(xiě)法!

    public static boolean isNumeric4(String str) {
        return str != null && str.chars().allMatch(Character::isDigit);
    }

外部工具類(lèi)

使用外部工具類(lèi)通常需要引入外部jar文件,一般的依賴(lài)是apache的comons-lang:

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

在使用外部工具類(lèi)時(shí),我們通常使用NumberUtils或者StringUtils,具體如下:

使用NumberUtils時(shí),我們通常會(huì)選擇其靜態(tài)方法isParsable和isCreatable其中的一種,它們的不同點(diǎn)在于isCreatable不僅可以接受十進(jìn)制數(shù)字字符串,還可以接受八進(jìn)制,十六進(jìn)制以及科學(xué)計(jì)數(shù)法表示的數(shù)字字符串,isParsable只接受十進(jìn)制數(shù)字字符串。

1.NumberUtils.isParsable

    public static boolean isNumeric5(String str) {
        return NumberUtils.isParsable(str);
    }

2.NumberUtils.isCreatable

    public static boolean isNumeric6(String str) {
        return NumberUtils.isCreatable(str);
    }

如果使用StringUtils,那么要考慮到底該使用isNumeric還是isNumericSpace。二者的唯一差異在于,isNumeric會(huì)認(rèn)為空字符串為非法數(shù)字,isNumericSpace則認(rèn)為空字符串也是數(shù)字。

3.StringUtils.isNumeric

    public static boolean isNumeric7(String str) {
        return StringUtils.isNumeric(str);
    }

4.StringUtils.isNumericSpace

    public static boolean isNumeric8(String str) {
        return StringUtils.isNumericSpace(str);
    }

測(cè)試并比較

默認(rèn)情況下,文章中的數(shù)字都指的是十進(jìn)制的阿拉伯?dāng)?shù)字(0 ,1,2 … 9),測(cè)試時(shí)會(huì)擴(kuò)展范圍??紤]以下幾個(gè)方向:

1)null或者空字符串

2)常規(guī)的數(shù)字,整數(shù),浮點(diǎn)數(shù)以及負(fù)數(shù)

3)包含非法的字符,例如包含多余的小數(shù)點(diǎn),包含多余的負(fù)號(hào),以及其它非常規(guī)格式

4)非阿拉伯?dāng)?shù)字,例如印度數(shù)字 ???,阿拉伯文 ???,以及羅馬數(shù)字Ⅰ、Ⅱ、Ⅲ

5)非十進(jìn)制的數(shù)字,例如二進(jìn)制,八進(jìn)制,十六進(jìn)制,科學(xué)計(jì)數(shù)法表示的數(shù)字

主體測(cè)試方法如下:

    public static void check(String str) {
        System.out.println ( "----------checking:【" + str + "】---------" );
        System.out.println(isNumeric1(str));
        System.out.println(isNumeric2(str));
        System.out.println(isNumeric3(str));
        System.out.println(isNumeric4(str));
        System.out.println(isNumeric5(str));
        System.out.println(isNumeric6(str));
        System.out.println(isNumeric7(str));
        System.out.println(isNumeric8(str));
        System.out.println( "---------------end-------------------" );
    }

測(cè)試用例:

    public static void main(String[] args) throws ParseException {
        //1)null或者空字符串
        check(null);
        check("");
        check(" ");

        //2)正常的數(shù)字,整數(shù)或者浮點(diǎn)數(shù)
        check("123");
        check("0.123");
        check("-12.3");
        check("07");   //普通十進(jìn)制7 or 八進(jìn)制7

        //3)包含非法的字符,例如包含多余的小數(shù)點(diǎn),包含多余的負(fù)號(hào),以及其它非常規(guī)格式
        check("123.");
        check(".123");
        check("1.2.3");
        check("--12.3");
        check("-1-2.3");
        check("-12.3-");
        check(" 123");
        check("1 23");
        check("123 ");
        check("1a2b3c");
        check("10.0d");  //double類(lèi)型
        check("1000L");  //long類(lèi)型
        check("10.0f");  //float類(lèi)型

        //4)非阿拉伯?dāng)?shù)字,例如印度數(shù)字 ???,阿拉伯文 ???,以及羅馬數(shù)字Ⅰ、Ⅱ、Ⅲ
        check("???");
        check("???");
        check("Ⅲ");

        //5)非十進(jìn)制的數(shù)字,例如二進(jìn)制,八進(jìn)制,十六進(jìn)制,科學(xué)計(jì)數(shù)法表示的數(shù)字
        check("0b100");  //二進(jìn)制
        check("09");     //十進(jìn)制9 or 非法的八進(jìn)制
        check("0xFF");   //十六進(jìn)制
        check("2.99e+8");//科學(xué)計(jì)數(shù)法
    }

由于篇幅原因,這里就不將控制臺(tái)的打印結(jié)果貼上來(lái)了,有興趣的同學(xué)可以根據(jù)我的代碼自己嘗試一下。

下面是將測(cè)試用例的打印結(jié)果做了個(gè)表格匯總,表頭為方法名,第一列是具體的輸入字符串,表格中其它單元格表示該方法判斷是否為數(shù)字字符串的結(jié)果。

用例isNumberic1isNumberic2isNumberic3isNumberic4isNumberic5isNumberic6isNumberic7isNumberic8
nullfalsefalsefalsefalsefalsefalsefalsefalse
“”falsefalsetruetruefalsefalsefalsetrue
" "falsefalsefalsefalsefalsefalsefalsetrue
“123”truetruetruetruetruetruetruetrue
“0.123”truetruetruefalsetruetruefalsefalse
“-12.3”truetruetruefalsetruetruefalsefalse
“07”truetruetruetruetruetruetruetrue
“123.”truefalsetruefalsefalsetruefalsefalse
“.123”truefalsetruefalsetruetruefalsefalse
“1.2.3”falsefalsefalsefalsefalsefalsefalsefalse
“–12.3”falsefalsefalsefalsefalsefalsefalsefalse
“-1-2.3”falsefalsefalsefalsefalsefalsefalsefalse
“-12.3-”falsefalsefalsefalsefalsefalsefalsefalse
" 123"truefalsefalsefalsefalsefalsefalsetrue
“1 23”falsefalsefalsefalsefalsefalsefalsetrue
"123 "truefalsefalsefalsefalsefalsefalsetrue
“1a2b3c”falsefalsefalsefalsefalsefalsefalsefalse
“10.0d”truefalsefalsefalsefalsetruefalsefalse
“1000L”falsefalsefalsefalsefalsetruefalsefalse
“10.0f”truefalsefalsefalsefalsetruefalsefalse
“???”falsefalsetruetruetruefalsetruetrue
“???”falsefalsetruetruetruefalsetruetrue
“Ⅲ”falsefalsefalsefalsefalsefalsefalsefalse
“0b100”falsefalsefalsefalsefalsefalsefalsefalse
“09”truetruetruetruetruefalsetruetrue
“0xFF”falsefalsefalsefalsefalsetruefalsefalse
“2.99e+8”truefalsefalsefalsefalsetruefalsefalse

通過(guò)這個(gè)表格,可以看出不同的判斷方法,對(duì)于非常規(guī)的字符串來(lái)說(shuō),差異還是比較大的。

1)null或者空字符串

在處理null時(shí)所有方法保持一致,這也是一個(gè)工具類(lèi)該滿(mǎn)足的基本素養(yǎng)。

對(duì)于空字符串來(lái)說(shuō),無(wú)論空字符串長(zhǎng)度是否大于0,基于StringUtils.isNumericSpace的isNumberic8均會(huì)返回true,因?yàn)樗旧碚J(rèn)為空字符串就是數(shù)字。

對(duì)于長(zhǎng)度大于0的空字符串來(lái)說(shuō),基于NumberFormat的isNumberic3和基于java.lang.Character#isDigit(int)的isNumberic4 這兩種判斷方法都正常返回了false。

但是對(duì)于長(zhǎng)度為0的空字符串來(lái)說(shuō),isNumberic3和isNumberic4 這兩種判斷方法出了點(diǎn)小插曲,它們返回了false。這是因?yàn)?,?duì)于isNumberic3來(lái)說(shuō),toCharArray或者chars方法返回長(zhǎng)度為0的字符數(shù)組,它并沒(méi)有做一個(gè)有效的遍歷。對(duì)于isNumberic4來(lái)說(shuō),NumberFormat的起始位置和終點(diǎn)位置一致。

所以為了讓isNumberic3和isNumberic4更加健壯,建議對(duì)其實(shí)現(xiàn)內(nèi)部再加一層空字符串的判斷,優(yōu)化后的代碼如下。

    public static boolean isNumeric3(String str) {
        if (str == null || str.trim ().length() == 0) return false;
        NumberFormat formatter = NumberFormat.getInstance();
        ParsePosition pos = new ParsePosition(0);
        formatter.parse(str, pos);
        return str.length() == pos.getIndex();
    }
    public static boolean isNumeric4(String str) {
        if (str == null || str.trim ().length() == 0) return false;
        for (char c : str.toCharArray ()) {
            if (!Character.isDigit (c)) return false;
        }
        return true;
    }

2)常規(guī)的數(shù)字,整數(shù),浮點(diǎn)數(shù)以及負(fù)數(shù)

常規(guī)數(shù)字指業(yè)務(wù)中常用的數(shù)字,譬如用于表示金額的浮點(diǎn)數(shù),用于統(tǒng)計(jì)數(shù)量的整數(shù)等。這種情況下,isNumberic1,isNumberic2,isNumberic3,isNumberic5,isNumberic6 均表現(xiàn)出一致性,它們判斷出來(lái)的結(jié)果都是相同的,而且也是符合我們常規(guī)預(yù)期的,是我們認(rèn)為正確的結(jié)果。

對(duì)于浮點(diǎn)數(shù),isNumberic4認(rèn)為這不是有效數(shù)字,因?yàn)閖ava.lang.Character#isDigit(int)認(rèn)為小數(shù)點(diǎn)并不是數(shù)字字符。同樣的,基于StringUtils.isNumeric的 isNumberic7 和基于StringUtils.isNumericSpace的 isNumberic8 也返回了false。

如果我們查看以上兩個(gè)方法的底層實(shí)現(xiàn),就可以發(fā)現(xiàn) isNumberic7,isNumberic8 和 isNumberic4 的底層實(shí)現(xiàn)邏輯都是一樣的,它們都是通過(guò)判斷字符是否為數(shù)字字符來(lái)實(shí)現(xiàn)的。以下是StringUtils.isNumeric和StringUtils.isNumericSpace的源碼:

    public static boolean isNumeric(CharSequence cs) {
        if (isEmpty(cs)) {
            return false;
        } else {
            int sz = cs.length();

            for(int i = 0; i < sz; ++i) {
                if (!Character.isDigit(cs.charAt(i))) {
                    return false;
                }
            }

            return true;
        }
    }

    public static boolean isNumericSpace(CharSequence cs) {
        if (cs == null) {
            return false;
        } else {
            int sz = cs.length();

            for(int i = 0; i < sz; ++i) {
                if (!Character.isDigit(cs.charAt(i)) && cs.charAt(i) != ' ') {
                    return false;
                }
            }

            return true;
        }
    }

這里尤其注意 “07“這個(gè)字符串。在某些語(yǔ)境下,07是十進(jìn)制的7,在另一些語(yǔ)境下,07是八進(jìn)制的7。例如我們直接將07賦值個(gè)int變量,它確實(shí)可以通過(guò)編譯,但是把07換成09呢?一定會(huì)編譯失敗,這是因?yàn)樽兞柯暶鞯膱?chǎng)景下,07作為八進(jìn)制對(duì)待,它滿(mǎn)足八進(jìn)制的范圍要求,而八進(jìn)制無(wú)法表示09,它太大了,所以編譯失敗。

但是Double.parseDouble卻可以將“09”轉(zhuǎn)化成9.0,因?yàn)檫@種場(chǎng)景下,輸入的數(shù)字作為十進(jìn)制對(duì)待,0被忽略了。

        int j = 07;
        int k = 09;   //編譯失敗,非法的八進(jìn)制
        System.out.println (Double.parseDouble ("09")); //打印9.0,以十進(jìn)制對(duì)待

盡管以0開(kāi)頭的數(shù)字字符串,在使用Double.parseDouble 的語(yǔ)境中被當(dāng)作十進(jìn)制對(duì)待,可以被正確解析。但是從某些業(yè)務(wù)角度或者某種特定思維上來(lái)說(shuō),數(shù)字怎么能以0開(kāi)始呢?你能接受一個(gè)以0開(kāi)頭的整數(shù)或者浮點(diǎn)數(shù)嗎?如果你不能接受這是一個(gè)合法的數(shù)字字符串,那么很遺憾,現(xiàn)有的案例均不滿(mǎn)足需求。你似乎只能通過(guò)正則表達(dá)式來(lái)實(shí)現(xiàn),重新定義你的正則表達(dá)式,來(lái)過(guò)濾掉這類(lèi)不恰當(dāng)?shù)淖址?/p>

同時(shí)還需要注意,表格倒數(shù)第三行的用例是“09”,和“07”這一行類(lèi)似,但isNumberic6在這兩行表現(xiàn)的不一致。這是由于isNumberic6使用了NumberUtils.isCreatable,它把以“0”開(kāi)頭的數(shù)字認(rèn)為是八進(jìn)制數(shù),符合八進(jìn)制范圍的返回true,不符合的返回false。所以"07"會(huì)返回true,“09”會(huì)返回false。

特別注意,當(dāng)輸入為“10.0d”, “1000L”和“10.0f”時(shí),在某種程度上也認(rèn)為這是有效的數(shù)字,因?yàn)榛绢?lèi)型中聲明double,long和float類(lèi)型的變量時(shí),分別在字面量后面添加一個(gè)‘d’(‘D’) ,‘l’(‘L’) 和 ‘f’(‘F’)是一個(gè)很常見(jiàn)的操作。 這類(lèi)聲明一般用來(lái)處理強(qiáng)制轉(zhuǎn)換,但對(duì)于這類(lèi)數(shù)字字符串來(lái)說(shuō),使用 isNumberic1 的局限性就出來(lái)了,本例中基于 Double.parseDouble 來(lái)做判斷,它可以接受‘d’(‘D’) 和 ‘f’(‘F’) 結(jié)尾的數(shù)字字符串,但是不能接受以 ‘l’(‘L’) 結(jié)尾的數(shù)字字符串,以下是Double.parseDouble的部分源碼片段。

if (var6 >= var5 || var6 == var5 - 1 && (var0.charAt(var6) == 'f' || var0.charAt(var6) == 'F' || var0.charAt(var6) == 'd' || var0.charAt(var6) == 'D')) {
    if (var13) {
        return var1 ? A2BC_NEGATIVE_ZERO : A2BC_POSITIVE_ZERO;
    }

    return new FloatingDecimal.ASCIIToBinaryBuffer(var1, var3, var21, var8);
}

那是不是意味著,如果我們將isNumberic1的內(nèi)部實(shí)現(xiàn)換成Long.parseLong,它就可以接受 “1000L” 了呢?答案是否定的,如果我們運(yùn)行以下的代碼,系統(tǒng)將拋出異常。

System.out.println (Long.parseLong ("5562L"));

這是因?yàn)長(zhǎng)ong.parseLong的底層還是用到了Character.digit方法。以下是Long.parseLong的部分源碼片段,上述的打印將在第一個(gè)”if“塊拋出異常。

            while (i < len) {
                // Accumulating negatively avoids surprises near MAX_VALUE
                digit = Character.digit(s.charAt(i++),radix);
                if (digit < 0) {
                    throw NumberFormatException.forInputString(s);
                }
                if (result < multmin) {
                    throw NumberFormatException.forInputString(s);
                }
                result *= radix;
                if (result < limit + digit) {
                    throw NumberFormatException.forInputString(s);
                }
                result -= digit;
            }

因此,如果你需要接受以‘d’(‘D’),‘f’(‘F’) 和 ‘l’(‘L’)結(jié)尾的數(shù)字字符串,只有isNumberic6是最優(yōu)解。

3)包含非法的字符,例如包含多余的小數(shù)點(diǎn),包含多余的負(fù)號(hào),以及其它非法格式

這部分的用例就相對(duì)靈活很多了。極端情況下,比如多一個(gè)小數(shù)點(diǎn),或者多一個(gè)負(fù)號(hào),或者純粹的摻入非數(shù)字字符,isNumberic1 ~ isNumberic8均能做出有效的判斷。

但是,如果只有一個(gè)小數(shù)點(diǎn),且小數(shù)點(diǎn)的位置不合時(shí)宜的情況下,比如“123.”,“.123”,使用異常處理的isNumberic1和使用NumberFormat的isNumberic3行為一致,均返回了true。

你可能驚呆了,這怎么能算是有效字符串呢,這種情況其實(shí)和07這個(gè)測(cè)試用例是一樣的,Java可以將它們轉(zhuǎn)換成浮點(diǎn)數(shù)123.0或者整數(shù)123。所以返回true對(duì)于java來(lái)說(shuō)這就是合理的。如果你不滿(mǎn)意,那只能考慮正則這條路了。

4)非阿拉伯?dāng)?shù)字,例如印度數(shù)字 ???,阿拉伯文 ???,以及羅馬數(shù)字Ⅰ、Ⅱ、Ⅲ

所有的判斷方法,均認(rèn)為羅馬數(shù)字為非法數(shù)字。

使用印度數(shù)字或者阿拉伯文數(shù)字,其中 isNumberic3,isNumberic4,isNumberic5,isNumberic7,isNumberic8 能夠做出有效判斷。其它方案均無(wú)效。

如果是做國(guó)際業(yè)務(wù)的同學(xué),你可能就要留意了,他們用本地語(yǔ)言填寫(xiě)的電話(huà)號(hào)碼你涵蓋了嗎?

等等,那漢字表示的數(shù)字,“一”,“二”,“三”… 該用什么方法來(lái)判斷呢? 很遺憾,本文列舉的方法均不滿(mǎn)足,需要自己開(kāi)發(fā)相關(guān)工具類(lèi)或查找有效資料。

5)非十進(jìn)制的數(shù)字,例如二進(jìn)制,八進(jìn)制,十六進(jìn)制,科學(xué)計(jì)數(shù)法表示的數(shù)字

前面的測(cè)試用例均是十進(jìn)制數(shù),但是一些少數(shù)場(chǎng)景不免會(huì)出現(xiàn)十進(jìn)制以外的數(shù)據(jù)。二進(jìn)制變量以 0b或0B 開(kāi)始,八進(jìn)制以 0開(kāi)始,十六進(jìn)制以0X或0x開(kāi)始。

通過(guò)倒數(shù)第二行和倒數(shù)第三行可以看出來(lái),只有 isNumberic6 可以準(zhǔn)確的判斷出八進(jìn)制和十六進(jìn)制。

通過(guò)倒數(shù)第四行可以看出來(lái),任何方法都不能判斷二進(jìn)制。

通過(guò)最后一行可以看出來(lái),isNumberic1和isNumberic6 可以用來(lái)判斷科學(xué)計(jì)數(shù)法。

小結(jié)

判斷一個(gè)字符串是否為數(shù)字看起來(lái)是一項(xiàng)很簡(jiǎn)單的業(yè)務(wù),但是它涉及的場(chǎng)景卻是非常多的,從業(yè)務(wù)角度來(lái)看,沒(méi)有哪個(gè)方法是完美的。

有人說(shuō)異常處理的方式不好,性能低,但是它能處理開(kāi)頭和結(jié)尾為空字符串的輸入,還能處理科學(xué)計(jì)數(shù)法。

有人說(shuō)正則最好,但他們用的正則表達(dá)式基本都是從網(wǎng)上扒下來(lái)的吧,只能判斷阿拉伯?dāng)?shù)字吧,而且不能處理以0開(kāi)始的字符吧。

有人說(shuō)使用數(shù)字字符的方式最好,但是它無(wú)法判斷浮點(diǎn)數(shù)。

還有人說(shuō)使用StringUtils最好,那他們有對(duì)比過(guò)NumberUtils嗎?

總之,沒(méi)有什么方法是最好的, 最適合的才是最好的。這就和找對(duì)象一個(gè)道理,你說(shuō)劉亦菲美吧,她很美,但不適合呀。

總結(jié)

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

相關(guān)文章

  • Spring Boot 的創(chuàng)建和運(yùn)行示例代碼詳解

    Spring Boot 的創(chuàng)建和運(yùn)行示例代碼詳解

    Spring Boot 的誕生是為了簡(jiǎn)化Spring程序的開(kāi)發(fā),今天給大家介紹下Spring Boot 的創(chuàng)建和運(yùn)行,主要包括Spring Boot基本概念和springboot優(yōu)點(diǎn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-07-07
  • Java中的三元運(yùn)算(三目運(yùn)算)以后用得到!

    Java中的三元運(yùn)算(三目運(yùn)算)以后用得到!

    Java提供了一個(gè)三元運(yùn)算符,可以同時(shí)操作3個(gè)表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于Java中三元運(yùn)算(三目運(yùn)算)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Java使用pulsar-flink-connector讀取pulsar catalog元數(shù)據(jù)代碼剖析

    Java使用pulsar-flink-connector讀取pulsar catalog元數(shù)據(jù)代碼剖析

    這篇文章主要介紹了Java使用pulsar-flink-connector讀取pulsar catalog元數(shù)據(jù)代碼剖析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Mybatis自關(guān)聯(lián)查詢(xún)一對(duì)多查詢(xún)的實(shí)現(xiàn)示例

    Mybatis自關(guān)聯(lián)查詢(xún)一對(duì)多查詢(xún)的實(shí)現(xiàn)示例

    這篇文章主要介紹了Mybatis自關(guān)聯(lián)查詢(xún)一對(duì)多查詢(xún)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 基于Java SSM框架開(kāi)發(fā)圖書(shū)借閱系統(tǒng)源代碼

    基于Java SSM框架開(kāi)發(fā)圖書(shū)借閱系統(tǒng)源代碼

    本文給大家介紹了基于Java SSM框架開(kāi)發(fā)圖書(shū)借閱系統(tǒng),開(kāi)發(fā)環(huán)境基于idea2020+mysql數(shù)據(jù)庫(kù),前端框架使用bootstrap4框架,完美了實(shí)現(xiàn)圖書(shū)借閱系統(tǒng),喜歡的朋友快來(lái)體驗(yàn)吧
    2021-05-05
  • struts2數(shù)據(jù)處理_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    struts2數(shù)據(jù)處理_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Struts2框架框架使用OGNL語(yǔ)言和值棧技術(shù)實(shí)現(xiàn)數(shù)據(jù)的流轉(zhuǎn)處理。下面通過(guò)本文給大家分享struts2數(shù)據(jù)處理的相關(guān)知識(shí),感興趣的朋友參考下吧
    2017-09-09
  • java開(kāi)發(fā)微信分享接口的步驟

    java開(kāi)發(fā)微信分享接口的步驟

    這篇文章主要為大家詳細(xì)介紹了java開(kāi)發(fā)微信分享接口的步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • xxl-job 帶參數(shù)執(zhí)行和高可用部署方法

    xxl-job 帶參數(shù)執(zhí)行和高可用部署方法

    這篇文章主要介紹了xxl-job 帶參數(shù)執(zhí)行和高可用部署,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Spring Boot中l(wèi)ombok的安裝與使用詳解

    Spring Boot中l(wèi)ombok的安裝與使用詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot中l(wèi)ombok安裝與使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • mybatis中使用not?in與?in的寫(xiě)法說(shuō)明

    mybatis中使用not?in與?in的寫(xiě)法說(shuō)明

    這篇文章主要介紹了mybatis中使用not?in與?in的寫(xiě)法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論