<abbr id="ciwa6"><option id="ciwa6"></option></abbr>
  • <sup id="ciwa6"><kbd id="ciwa6"></kbd></sup>
    <small id="ciwa6"></small>
  • 千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:成都千鋒IT培訓  >  技術干貨  >  從零開始學Java之包裝類有哪些?

    從零開始學Java之包裝類有哪些?

    來源:千鋒教育
    發布人:gxy
    時間: 2023-04-14 14:56:30

      一. 包裝類

    包裝類

      概念

      我們知道,Java中的數據類型總體上分為基本數據類型和引用數據類型。引用類型的數據可以通過對象操作的形式進行使用,也就是說,我們可以通過對象的屬性和方法來進行操作。但如果是基本數據類型的數據,我們能不能像操作對象那樣來操作呢?為了實現這個目標,Java為8種基本數據類型分別設計了對應的類,我們稱其為包裝類(Wrapper Classes),或者稱其為外覆類或數據類型類。因為這些包裝類都是引用類型,所以我們就可以方便地操作這些數據的屬性和方法了。

      其實之所以為8種基本數據類型都設計出對應的包裝類,從深層分析,主要是為了配合Java 5之后出現的泛型。在泛型的使用中,基本數據類型和泛型不能配合使用,即Primitive Types 和Generic不能混用。舉個簡單的例子,比如我們想使用ArrayList、HashMap等集合時,這些集合都需要指明集合中數據的泛型。而int、double等基本類型是不允許被使用的,因為這些集合容器的泛型都必須是Object類型,所以就需要這些包裝類型了,如下圖所示:

      

     

      8個包裝類

      有了這8個包裝類,我們就可以按照面向對象的思維來操作數據了,可以操作對象的屬性和方法,也可以給對象賦null值,這是基本類型做不到的。我們來看看Java中的基本類型與其對應的包裝類,如下表所示:

      

     

      從上面的表中我們可以看出,基本上包裝類的類名,就是把基本類型的首字母變成大寫,除了Integer和Character特殊一點。另外,Byte、Short、Integer、Long、Float、Double這六個類,都是Number的子類,它們具有一些共同的類型轉換方法,方便我們進行類型之間的轉換。

      二. 常用包裝類

      為了讓大家更好地掌握這些包裝類的用法及特性,小編在這里只把幾個常用的包裝類給大家介紹一下。

      Integer簡介

      Integer類中包含了一個int類型的字段。該類提供了一些可以方便處理int類型的常量,比如獲取整型的最大值和最小值等。另外該類還提供了多個方法,可以在 int類型和 String類型之間互相轉換。

      1.1 Integer中的常量

      Integer類包含以下4個常量:

      ● MAX_VALUE:是一個常量值,值為 231-1,代表int類型能夠表示的最大值;

      ● MIN_VALUE:是一個常量值,值為 -231,代表int類型能夠表示的最小值;

      ● SIZE:以二進制補碼的形式,表示 int值的比特位數;

      ● TYPE:代表基本類型 int 的 Class 實例對象。

      1.2 Integer中的方法

      Integer類中提供的常用方法如下表所示:

      

     

      我們要注意,在將字符串轉換為 int類型數值的過程中,如果字符串為非數值型的內容,轉換時可能會出現NumberFormatException異常。

      2. Byte簡介

      Byte類中內含了一個byte類型的字段,該類提供了一些可以方便處理byte值的常量和方法,方便了我們的操作。

      2.1 Byte中的常量

      Byte類中提供的常量如下:

      ● MIN_VALUE:byte類的最小值,-128;

      ● MAX_VALUE:byte類的最大值,127;

      ● SIZE:以二進制補碼形式表示的 byte值位數;

      ● TYPE:表示byte的Class實例對象。

      2.2 Byte中的方法

      Byte類中的常用方法如下:

      

     

      Float簡介

      Float類中內含了一個float類型的字段,該類提供了一些可以方便處理float值的常量和方法,方便了我們的操作。

      3.1 Float中的常量

      Float類的常量值如下所示:

      ● MAX_VALUE:表示float的最大值,為 1.4E38;

      ● MIN_VALUE:表示float的最小值,為3.4E-45;

      ● MAX_EXPONENT:float變量可能具有的最大指數;

      ● MIN_EXPONENT:float變量可能具有的最小指數;

      ● MIN_NORMAL:保存float類型值的最小標準值常量,即 2-126;

      ● NaN:保存float類型的非數值常量;

      ● SIZE:以二進制補碼形式表示的float值的比特位數;

      ● TYPE:表示float類型的Class對象實例。

      3.2 Float中的方法

      Float類中的常用的方法如下表所示:

      

     

      Double簡介

      Double類中內含了一個double類型的字段,該類提供了一些可以方便處理double值的常量和方法,方便了我們的操作。

      4.1 Double中的常量

      Double類中的常量如下所示:

      ● MAX_VALUE:表示double類型的最大值,1.8E308;

      ● MIN_VALUE:表示double類型的最小值,4.9E-324;

      ● NaN:表示double類型的非數字值;

      ● NEGATIVE_INFINITY:表示double類型負無窮大的常量值;

      ● POSITIVE_INFINITY:表示double類型正無窮大的常量值;

      ● SIZE:以二進制補碼形式表示的double值的比特位數;

      ● TYPE:表示double類型的Class實例對象。

      4.2 Double中的方法

      Double類中的常用方法如下表所示:

      

     

      Character簡介

      Character類用于對單個字符進行操作,內含了一個char類型的字段,該類提供了一些可以方便處理char值的方法,方便了我們的操作。

      5.1 Character中的方法

      Character類中的常用方法如下表所示:

      

     

      5.2 代碼案例

      Character類的方法比較多,小編給大家設計了如下代碼案例進行演示:

      public class CharacterTest {

      public static void main(String[] args) {

      //構造一個Character對象,該方式已過時

      Character character = new Character('A');

      //比較兩個對象是否相同,0表示相同;正數表示前者大于后者;負數表示前者小于后者

      int result = character.compareTo(new Character('B'));

      System.out.println(result); // 輸出 -1,表示A小于B

      //獲取Character對象的第2種方式,注意參數必須是單引號括起來的字符型,

      Character char02 = Character.valueOf('B');

      //獲取Character對象的第3種方式,常用該方式

      Character char03='C';

      //將大寫字符轉為小寫字符

      char lowerCase = Character.toLowerCase('Y');

      System.out.println("lowerCase="+lowerCase);

      String str="hello666";

      for(int i=0;i

      //判斷每一個字符是否是字母

      boolean isLetter = Character.isLetter(str.charAt(i));

      System.out.println(str.charAt(i)+", 是字母嗎?="+isLetter);

      }

      }

      }

      復制代碼

      Boolean簡介

      Boolean類中內含了一個boolean類型的字段,該類提供了一些可以方便處理boolean值的常量和方法,方便了我們的操作。

      6.1 Boolean中的常量

      Boolean類包含的常量如下所示:

      ● TRUE:代表值為true的常量;

      ● FALSE:代表值為false的常量;

      ● TYPE:表示boolean類型的Class實例對象。

      6.2 Boolean中的方法

      Boolean類中常用的方法如下表所示:

      

     

      基本用法

      現在我們已經知道有哪些包裝類了,那么這些包裝類怎么用呢?接下來我們就通過一些代碼,來學習常用的包裝類吧。

      7.1 Integer的用法

      我們先通過一段代碼,來了解一下Integer的用法,因為在實際開發中,Integer是比較常用的包裝類。

      public class WrapperTest {

      public static void main(String[] args) {

      //Integer變量的幾種定義方式

      Integer i001 = new Integer(50);

      Integer i002=new Integer("100");

      //注意:將字符串轉為數值型時,也要注意待轉換的類型必須匹配,我們不能將非數字的字符串轉為數值型,否則會出現NumberFormatException

      //Integer i007=new Integer("hello");

      Integer i003 = 100;

      //利用靜態方法,返回一個指定int值的Integer對象

      Integer i004=Integer.valueOf(200);

      //利用靜態方法,返回指定String值的Integer對象

      Integer i005=Integer.valueOf("300");

      //第2個參數radix,表示基數,即當前采用的進制

      Integer i006=Integer.valueOf("400",16);

      System.out.println("i006="+i006);

      //獲取Integer的最大值與最小值

      System.out.println(Integer.MAX_VALUE);

      System.out.println(Integer.MIN_VALUE);

      }

      }

      復制代碼

      valueOf()方法是一個靜態方法,用于返回給定參數的原生Number對象,其參數可以是原生數據類型和String等。如果該方法帶有兩個參數,那么第一個是字符串,第二個則是基數,用于表明要轉換成的進制。

      7.2 Double的用法

      接下來我們再來看看Double的用法。

      public class WrapperTest {

      public static void main(String[] args) {

      //Double類型的用法

      //將數值型或字符串類型轉為Double類型

      Double d001 = new Double(100.1);

      Double d002 = new Double("200.2");

      //Double d007 = new Double("hello");

      Double d003 = 300.3;

      Double d004 =Double.valueOf(400.4);

      //通過doubleValue()方法取double值

      System.out.println("d004="+d004.doubleValue());

      Double d005 =Double.valueOf("500.5");

      //直接使用

      System.out.println("d005="+d005);

      //獲取最大值和最小值

      System.out.println(Double.MAX_VALUE);

      System.out.println(Double.MIN_VALUE);

      }

      }

      復制代碼

      7.3 字符串轉包裝類

      有了包裝類,我們就可以將字符串類型的數值轉換成Integer或者是Double等類型。在下面的案例中,我們可以利用包裝類提供的各個parseXXX()方法,來將字符串轉為對應的包裝類型。

      public class WrapperTest {

      public static void main(String[] args) {

      //字符串轉Integer或Double類型

      String s1 = "123";

      //方式1:

      int i007 = Integer.parseInt(s1);

      System.out.println("i007="+i007);

      //方式2:

      int i008 = Integer.valueOf(s1);

      System.out.println("i008="+i008);

      String s2 = "20.5";

      //方式1:

      double d006 = Double.parseDouble(s2);

      System.out.println("d006="+d006);

      //方式2:

      double d007 = Double.valueOf(s2);

      System.out.println("d007="+d007);

      //java.lang.NumberFormatException,數字格式化異常

      //String s3 = "hello";

      String s3 = null;

      System.out.println(Integer.parseInt(s3));

      }

      }

      復制代碼

      在以上代碼中,除了有Integer.parseInt()、Double.parseDouble()方法之外,還有Float.parseFloat()、Byte.parseByte()、Short.parseShort()、Boolean.parseBoolean()等方法可以將字符串轉為對應的包裝類。

      但是我們要注意,在將字符串轉為Integer或Double等類型時,并不是所有的字符串內容都可以轉換成功,有可能會出現NumberFormatException異常,如下所示:

      Exception in thread "main" java.lang.NumberFormatException: For input string: "hello"

      

     

      7.4 類型間轉換

      Byte、Short、Integer、Long、Float、Double這六個類,有一個共同的父類Number。其中,Number提供了一組xxxValue()方法,可以用于將某種類型轉換成其他的類型,案例如下:

      

      public class WrapperTest {

      @SuppressWarnings("null")

      public static void main(String[] args) {

      //類型間轉換

      Integer a = 100;

      //將Integer轉為Byte類型

      Byte b = a.byteValue();

      //將Integer轉為Short類型

      Short c = a.shortValue();

      //將Integer轉為Long類型

      Long d = a.longValue();

      //將Integer轉為Float類型

      Float e = a.floatValue();

      //將Integer轉為Double類型

      Double f = a.doubleValue();

      //取出數值的整數部分,將Integer轉為int

      int g = a.intValue();

      System.out.println("a="+a+",b="+b+",c="+c+",d="+d+",e="+e+",f="+f+",g="+g);

      //包裝類轉字符串,默認是按照10進制進行轉換

      String intStr = Integer.toString(1000);

      String dobuleStr = Double.toString(200.5);

      Byte by=126;

      String byteStr=Byte.toString(by);

      //將數字轉換成二進制

      String str1 = Integer.toBinaryString(num);

      // 將數字轉換成八進制

      String str2 = Integer.toHexString(num);

      // 將數字轉換成十六進制

      String str3 = Integer.toOctalString(num);

      }

      }

      復制代碼

      每種包裝類之間,都可以使用這些方法進行類型的轉換。另外每種包裝類都提供了對應的toString()或toBinaryString()/toHexString()/toOctalString()方法,可以將該包裝類轉為十進制、二進制、八進制和十六進制的String字符串,比如Integer.toString()、Double.toString()等,這里小編就不再一一贅述了。

    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    實現垂直居中的幾種方法,不知道寬高的情況下如何實現元素水平垂直居中?

    2023-04-12

    小程序路由跳轉

    2023-04-06

    經典面試題:static加載機制你知道嗎?

    2023-03-23

    最新文章NEW

    從零開始學Java之包裝類有哪些?

    2023-04-14

    說說React中onClick綁定后的工作原理

    2023-04-07

    說說gulp和webpack的區別

    2023-04-06

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>