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

2.7 包裝類

Java不是純面向對象的程序設計語言,這是因為它有byte、short、int、long、float、double、char和boolean這些基本類型。Java保留它們是出于效率方面的原因。但有時候,確實需要將這些基本類型作為類來處理。例如在調用方法時,若采用int數據作為參數,在被調方法中就不能改變調用方法中對應參數的值,因為它是按值傳送的。但是,若將一個含有int數據的對象作為參數,那么,調用方法中對應參數中int值就可以被改變。

Java語言中專門提供了所謂的包裝類(wrapper class)。這些類將以上基本類型包裝成類。基本類型與它們對應的包裝類見表2.17。

表2.17 基本類型與包裝類

使用包裝類的方法與其他類一樣,定義對象的引用、用new運算符創建對象,用方法來對對象進行操作等。

例如:Ⅰnteger i = new Ⅰnteger(10); // i是 Ⅰnteger類的一個對象,值為10

Ⅰnteger j = new Ⅰnteger(20); // j是 Ⅰnteger類的一個對象,值為20

【例2.7】輸出int類型的最大值與最小值和double類型絕對值的最大值與最小值。

              class WrapperDemo{
                public static void main(String args[]){
                  System.out.println(Integer.MAX_VALUE); // int類型的最大值
                  System.out.println(Integer.MIN_VALUE); // int類型的最小值
                  System.out.println(Double.MAX_VALUE); // double類型絕對值的最大值
                  System.out.println(Double.MIN_VALUE); // double類型絕對值的最小值
                }
              }

程序運行結果如下:

              2147483647
              -2147483648
              1.7976931348623157E308
              4.9E-324

包裝類中各類的方法雖然不完全相同,但有一些是類似的。下面的例子以 Ⅰnteger類為例,其他類請讀者理解這些類中方法名稱的構成規律,舉一反三。

【例2.8】包裝類Ⅰnteger類常用方法的使用以及與int數據進行混合運算的例子。

              class UseWrapper {
                public static void main(String args[]) {
                  int num = 2005;
                  System.out.println(num + " 的二進制是: " +
                    Integer.toBinaryString(num));  // 轉換十進制數為二進制數
                  System.out.println(num + " 的八進制是: " +
                    Integer.toOctalString(num));   // 轉換十進制數為八進制數
                  System.out.println(num + " 的十六進制是: " +
                    Integer.toHexString(num));     // 轉換十進制數為十六進制數
                  Integer iobj = Integer.valueOf("123");
                  Integer iobj1 = new Integer(234);
                  Integer iobj2 = new Integer("234");
                  int i = iobj.intValue();
                  System.out.println("iobj = " + iobj);
                  System.out.println("i = " + i);
                  System.out.println("iobj1==iobj2 ? " + iobj1.equals(iobj2));
                  // 比較兩個對象是否相等
                  iobj = iobj + num;         // int數據和Integer數據可以混合運算
                  System.out.println("iobj = " + iobj);
                  num = iobj + num;
                  System.out.println("num = " + num);
                }
              }

程序運行結果如下:

              2005 的二進制是: 11111010101
              2005 的八進制是: 3725
              2005 的十六進制是: 7d5
              iobj = 123
              i = 123
              iobj1==iobj2 ? true
              iobj = 2128
              num = 4133
主站蜘蛛池模板: 赤城县| 确山县| 南皮县| 南通市| 通辽市| 泽普县| 德昌县| 浮梁县| 广水市| 桓仁| 安化县| 郸城县| 南召县| 诸城市| 定远县| 乌兰察布市| 开远市| 江津市| 嘉鱼县| 汽车| 娱乐| 颍上县| 兴隆县| 余庆县| 江陵县| 合川市| 桑植县| 虎林市| 普安县| 龙南县| 刚察县| 宜都市| 玉溪市| 包头市| 兴宁市| 扎鲁特旗| 永修县| 尉犁县| 中西区| 清流县| 延寿县|