成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

14.java 基本數(shù)據(jù)類型的包裝類

yanbingyun1990 / 816人閱讀

摘要:但是基本數(shù)據(jù)類型不是對象,不具備對象的特性不攜帶屬性沒有方法可調(diào)用。自動裝箱即直接賦值將會比使用構(gòu)造方法的方式節(jié)省一塊堆內(nèi)存空間,并自動入對象池。而手動裝箱使用構(gòu)造方法會產(chǎn)生兩塊堆內(nèi)存,而且不會保存在對象池中。

概念

java在設(shè)計(jì)之初,有一個(gè)基本原則:一切皆對象。但是基本數(shù)據(jù)類型不是對象,不具備“對象”的特性——不攜帶屬性、沒有方法可調(diào)用。為了解決此類問題,Java為每種基本數(shù)據(jù)類型分別設(shè)計(jì)了對應(yīng)的類,稱之為包裝類(Wrapper Classes).

基本數(shù)據(jù)類型及對應(yīng)的包裝類
基本數(shù)據(jù)類型 對應(yīng)的包裝類
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

每個(gè)包裝類的對象可以封裝一個(gè)相應(yīng)的基本類型的數(shù)據(jù),并提供了其它一些有用的方法。包裝類對象一經(jīng)創(chuàng)建,其內(nèi)容(所封裝的基本類型數(shù)據(jù)值)不可改變.

包裝類雖然都是object的子類,但嚴(yán)格來說又可分為兩種:

對象包裝類(object直接子類):Character、Boolean

數(shù)值包裝類(Number直接子類):Byte、Short、Integer、Long、Float、Double

Number繼承了Object類,是一個(gè)抽象類。里面定義了六個(gè)抽象方法:byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue()。

數(shù)據(jù)的裝箱與拆箱

基本類型和對應(yīng)的包裝類可以相互裝換:

由基本類型向?qū)?yīng)的包裝類轉(zhuǎn)換稱為裝箱,例如把 int 包裝成 Integer 類的對象;

包裝類向?qū)?yīng)的基本類型轉(zhuǎn)換稱為拆箱,例如把 Integer 類的對象重新簡化為 int;

示例:

public class testDemo {
    public static void main(String[] args) {
        int m = 500;
        Integer obj = new Integer(m); // 手動裝箱
        int n = obj.intValue(); // 手動拆箱
        System.out.println("n = " + n);
        Integer obj1 = new Integer(500);
        System.out.println("obj 等價(jià)于 obj1?" + obj.equals(obj1));
    }
}
輸出結(jié)果:
n = 500
obj 等價(jià)于 obj1?true
自動拆箱和裝箱

上面的例子都需要手動實(shí)例化一個(gè)包裝類,稱為手動拆箱、裝箱。Java 1.5 之前必須手動拆箱裝箱。
Java 1.5 之后可以自動拆箱裝箱,也就是在進(jìn)行基本數(shù)據(jù)類型和對應(yīng)的包裝類轉(zhuǎn)換時(shí),系統(tǒng)將自動進(jìn)行,并且可以直接利用包裝類進(jìn)行數(shù)學(xué)計(jì)算。

示例:

public class testDemo {
    public static void main(String[] args) {
        Integer obj = 10; // 自動裝箱
        int n = obj; // 自動拆箱
        System.out.println("n = " + n);
        System.out.println(obj * 2);  //包裝類直接進(jìn)行數(shù)學(xué)計(jì)算。
        Integer obj1 = 10;
        System.out.println("obj 等價(jià)于 obj1?" + obj.equals(obj1));
    }
}
輸出結(jié)果:
n = 10
20
obj 等價(jià)于 obj1?true

由于存在自動裝箱,那么object可以接收一切數(shù)據(jù)類型了,包括基本數(shù)據(jù)類型。

流程:基本數(shù)據(jù)類型--> 自動裝箱--> 向上轉(zhuǎn)型為object

但object類型不能直接轉(zhuǎn)為基本數(shù)據(jù)類型,要先轉(zhuǎn)為對應(yīng)的包裝類,然后自動拆箱。

手動裝箱與自動裝箱的區(qū)別

手動裝箱與自動裝箱與String兩種實(shí)例化方式的區(qū)別是一樣的。

自動裝箱(即直接賦值)將會比使用構(gòu)造方法的方式節(jié)省一塊堆內(nèi)存空間,并自動入對象池。而手動裝箱(使用構(gòu)造方法)會產(chǎn)生兩塊堆內(nèi)存,而且不會保存在對象池中。

但是和String不同的是包裝對象沒有intern()方法,無法手動入池。

示例:

public class testDemo {
    public static void main(String[] args) {
      Integer obja = 10;//直接賦值,自動裝箱
      Integer objb = 10; //直接賦值,自動裝箱
      Integer objc = new Integer(10); //手動裝箱
      
      System.out.println(obja == objb);
      System.out.println(obja == objc);
      System.out.println(objb == objc);
      System.out.println(obja.equals(objc));
    }
}
輸出結(jié)果:
true
false
false
true
數(shù)據(jù)類型的轉(zhuǎn)換

包裝類提供了基本數(shù)據(jù)類型和String類型相互轉(zhuǎn)換的功能。

將 String 轉(zhuǎn)為基本數(shù)據(jù)類型
Integer類:
public static int parseInt(String s)

Double類:
public static double parseDouble(String s)

Boolean類:
public static boolean parseBoolean(String s)
.....

需要注意的是Character類里面并不存在將字符串變?yōu)樽址姆椒?,因?yàn)镾tring類有一個(gè)charAt()的方法,可以根據(jù)索引取出字符。

基本數(shù)據(jù)類型轉(zhuǎn)為String

有兩種方式:

任何基本數(shù)據(jù)類型與字符串使用了"+"操作之后都將轉(zhuǎn)為String類型。

在String類中定義有valueOf()方法,該方法可以接收所有的基本數(shù)據(jù)類型。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77608.html

相關(guān)文章

  • 深入淺出 Java包裝

    摘要:前陣子,我們分享了中的基本數(shù)據(jù)類型轉(zhuǎn)換這篇文章,對許多粉絲還是有帶來幫助的,今天講一下包裝類的的由來,及自動裝箱拆箱的概念和原理。下面是基本數(shù)據(jù)類型與對應(yīng)的包裝類型。 showImg(https://segmentfault.com/img/remote/1460000016537706); 前陣子,我們分享了《Java中的基本數(shù)據(jù)類型轉(zhuǎn)換》這篇文章,對許多粉絲還是有帶來幫助的,今天講...

    ytwman 評論0 收藏0
  • JAVA學(xué)習(xí)之路 (九)包裝

    摘要:包裝類基本數(shù)據(jù)類型如等。它們并不具備對象的特性,比如不能調(diào)用方法。為了讓基本數(shù)據(jù)類型也能具有對象的特性,為每個(gè)基本數(shù)據(jù)類型提供了包裝類。 包裝類 基本數(shù)據(jù)類型:如 int、float、double、boolean、char 等。它們并不具備對象的特性,比如不能調(diào)用方法。為了讓基本數(shù)據(jù)類型也能具有對象的特性,java為每個(gè)基本數(shù)據(jù)類型提供了包裝類。 基本類型和包裝類之間的對應(yīng)關(guān)系: sh...

    MockingBird 評論0 收藏0
  • Java知識點(diǎn)總結(jié)(常用-包裝

    摘要:知識點(diǎn)總結(jié)常用類包裝類知識點(diǎn)總結(jié)常用類包裝類是一個(gè)面向?qū)ο蟮恼Z言,但是中的基本數(shù)據(jù)類型卻不是面向?qū)ο蟮?。但是我們在?shí)際使用中經(jīng)常將基本數(shù)據(jù)類型轉(zhuǎn)換成對象,便于操作。 Java知識點(diǎn)總結(jié)(常用類-包裝類) @(Java知識點(diǎn)總結(jié))[Java, Java常用類] [toc] 包裝類(wrapper) Java是一個(gè)面向?qū)ο蟮恼Z言,但是Java中的基本數(shù)據(jù)類型卻不是面向?qū)ο蟮?。但是我們在?shí)際...

    AlanKeene 評論0 收藏0
  • 基本包裝簡單入門

    摘要:第三階段常見對象的學(xué)習(xí)基本類型包裝類我們提出一個(gè)需求,將的二進(jìn)制八進(jìn)制十六進(jìn)制算出來,對于這種基本類型的一些操作,包裝類就可以很好地解決這些問題。 第三階段 JAVA常見對象的學(xué)習(xí) 基本類型包裝類 我們提出一個(gè)需求,將520的二進(jìn)制、八進(jìn)制、十六進(jìn)制算出來,對于這種基本類型的一些操作,包裝類就可以很好地解決這些問題。 public class IntegerDemo { pub...

    ShevaKuilin 評論0 收藏0
  • Java 學(xué)習(xí)點(diǎn)滴2

    摘要:實(shí)際上,中還存在另外一種基本類型,它也有對應(yīng)的包裝類,不過我們無法直接對它們進(jìn)行操作。這些變量在聲明時(shí)被指定為一個(gè)特定的類型,比如等。對象數(shù)組都是引用數(shù)據(jù)類型。語言支持一些特殊的轉(zhuǎn)義字符序列。 實(shí)例 對于數(shù)值類型的基本類型的取值范圍,我們無需強(qiáng)制去記憶,因?yàn)樗鼈兊闹刀家呀?jīng)以常量的形式定義在對應(yīng)的包裝類中了。請看下面的例子: **public class PrimitiveTypeTes...

    nicercode 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<