官术网_书友最值得收藏!

5.2.1 字符串的賦值與轉換

無論是基本的char字符型,還是包裝字符類型Character,它們的每個變量只能存放一個字符,無法滿足對一串字符的加工需求。為了能夠直接操作一連串的字符,Java設計了專門的字符串類型String,該類型允許保存一整串字符,并對字符串進行各種處理。

字符串類型不屬于基本類型,它的用法與包裝類型更為接近。例如給字符串變量賦初始值,就有多達4種賦值形式(包裝類型只有3種賦值),分別介紹如下:

(1)被雙引號包裹著的字符串可直接用等號賦值給字符串變量,代碼示例如下:

    // 第一種方式:用雙引號把字符串引起來
    String fromQuote="Hello";
    System.out.println("fromQuote="+fromQuote);

(2)調用String類型的valueOf方法把整型、浮點型、布爾型、字符型、字符數組等變量轉換為字符串,方法調用的代碼示例如下:

    // 第二種方式:使用String的valueOf方法把數值、布爾、字符、字符數組等變量轉換為字符串
    String fromValueOf=String.valueOf(111);
    System.out.println("fromValueOf="+fromValueOf);

(3)對于字符數組來說,可通過new關鍵字創建字符串變量,此時賦值代碼如下:

    // 第三種方式:對于字符數組來說,還能通過new關鍵字創建字符串變量
    char[] array={'A', 'B', 'C'};
    String fromArray=new String(array);
    System.out.println("fromArray="+fromArray);

(4)對于基本變量類型(數組除外)來說,也可以利用加號連接基本變量和空串,下面的代碼便是一個例子:

    // 第四種方式:對于基本變量類型(數組除外)來說,也可以利用加號連接基本變量和空串
    // 注意,數值變量之間的加號為算術上的相加運算,而字符串之間的加號為兩個字符串的合并操作
    String fromPlus=true+"";
    System.out.println("fromPlus="+fromPlus);

以上給字符串變量的賦值方式不多不少正好4種,恰似茴香豆的茴有4種寫法那樣。既然知曉了字符串的4種賦值,不妨溫習一下魯迅筆下“茴”的4種寫法,看看你還記得幾個?茴字上邊為草頭,下邊為回家的回,其實有4種寫法的是“回”字,包括:回、囘、囬,還有一種是“口”字里面有一個“目”字。回頭再復習剛才提到的字符串的4種賦值方式,如果還記得具體是哪4種,那么恭喜你已經掌握了字符串的入門訣竅。

既然能夠把各種基本類型的變量賦值給字符串變量,那么公平起見,也要求字符串變量允許轉換成其他類型的變量。然而字符串類型不支持直接轉換為基本類型,必須先轉換成包裝類型,再從包裝類型轉換成基本類型。像包裝整型Integer提供了parseInt方法,可將輸入的字符串變量轉換成包裝整型變量并返回。類似的字符串轉換方法還有:包裝長整型Long的parseLong方法,包裝浮點型Float的parseFloat方法,包裝雙精度型Double的parseDouble方法,包裝布爾型Boolean的parseBoolean方法。但是包裝字符型并沒有相應的parse***方法,這是怎么回事呢?仔細想想字符串內部由一串連續的字符組成,然而一個字符型變量只能容納一個字符,由于一串字符無法轉換成一個字符,必須拆開變為多個字符,因此字符串類型不能轉換成字符型,只允許轉換成字符數組。要想把字符串變量轉換為字符數組,則需調用字符串變量的toCharArray方法,該方法的輸出參數即為字符數組類型char[]。

下面的代碼例子將演示如何將字符串類型轉換成包裝類型和字符數組類型的變量(完整代碼見本章源碼的src\com\string\string\StrAssign.java):

        String number="13456";
        Integer packInt=Integer.parseInt(number);  // 將字符串變量轉換成包裝整型變量
        System.out.println("packInt=" + packInt);
        Long packLong=Long.parseLong(number);  // 將字符串變量轉換成包裝長整型變量
        System.out.println("packLong=" + packLong);
        Float packFloat=Float.parseFloat(number);  // 將字符串變量轉換成包裝浮點型變量
        System.out.println("packFloat=" + packFloat);
        Double packDouble=Double.parseDouble(number);  // 將字符串變量轉換成包裝雙精度型變量
        System.out.println("packDouble=" + packDouble);
        String zhen="true";
        Boolean packBoolean=Boolean.parseBoolean(zhen);  // 將字符串變量轉換成包裝布爾型變量
        System.out.println("packBoolean=" + packBoolean);
        char[] numberArray=number.toCharArray();  // 將字符串轉換成字符數組
        for (char item : numberArray) {  // 遍歷并打印字符數組中的各元素
            System.out.println("item=" + item);
        }

前面介紹大數字類型的時候,提到可以通過valueOf方法給大數字變量賦值,但是該方法的輸入參數要求為基本數字類型,因為基本類型可表達的數值范圍存在限制,比如長整型long表示的數字大小為19位整數,雙精度型double表示的有效數字大小只有15~16位,所以一旦某個巨大的整數或者長尾巴的小數超出有效位數,這個數字就無法通過valueOf方法賦值給大數字類型。

為了解決超大數字的賦值問題,BigInteger和BigDecimal提供了第二種賦值方式:先利用字符串變量保存超大數字,再使用關鍵字new創建該字符串對應的大數字變量,具體的超大數字賦值代碼示例如下:

        String bigNumber="134567890134567890134567890";
        BigInteger bigInt=new BigInteger(bigNumber);  // 將字符串變量轉換成大整數變量
        System.out.println("bigInt=" + bigInt);
        BigDecimal bigDec=new BigDecimal(bigNumber);  // 將字符串變量轉換成大小數變量
        System.out.println("bigDec=" + bigDec);

既然字符串變量能夠轉換成包裝類型和大數字類型,那么反過來,包裝變量和大數字變量也能轉換成字符串類型,并且轉換為字符串的方式很簡單,只要由包裝變量和大數字變量調用自身的toString方法即可。

主站蜘蛛池模板: 芮城县| 太保市| 靖江市| 南平市| 华宁县| 项城市| 清水河县| 东源县| 和静县| 怀来县| 黄山市| 周宁县| 全椒县| 邹城市| 凉山| 宿迁市| 林口县| 绥滨县| 永济市| 衡阳市| 吴川市| 新邵县| 阿拉善左旗| 宁德市| 新营市| 汉川市| 瑞安市| 莱阳市| 正阳县| 郎溪县| 游戏| 上思县| 孝义市| 韶关市| 滨海县| 博兴县| 华阴市| 淅川县| 和硕县| 富锦市| 当阳市|