包裝器型別

2022-06-25 15:18:08 字數 1454 閱讀 8345

1.基本資料型別和包裝器型別

包裝器型別都重寫了equals方法

boolean   boolean

byte          byte

short         short

char           character

int              integer

long           long

float           float

double       double

2.有了基本型別為什麼還要有包裝型別

基本型別並不具有物件的性質,為了讓基本型別也具有物件的特徵,就出現了包裝型別(我們在使用集合型別collection時就一定要使用包裝型別而非基本型別)

當需要往arraylist,hashmap中放東西時,像int,double這種基本型別是放不進去的,因為容器都是裝object的,這是就需要這些基本型別的包裝器類。

3.相互轉換

int i = 0;  

integer ii = new integer(i);//int型別轉換為integer型別

integer ii = new integer(0);  

int i = ii.intvalue();  //integer轉換為int型別

基本型別是直接將變數值儲存在棧中,而包裝型別是將物件放在堆中,然後通過引用來使用;

4.自動裝箱和自動拆箱

integer i1 = 128;  ---->  integer i1 = integer.valueof(128);

自動裝箱 int型別強轉成integer

int a2 = i2;       ---->  int a2 = i2.intvalue();

自動拆箱 integer型別強轉成int

自動裝箱的時候,如果這個數字在[-128~127]之間那麼就是從快取中獲取資料。

如果這個數字不在範圍內,那麼就是利用new關鍵字建立integer物件

5.問題一:integer a =  128 ,  integer b = 128;a == b ?--->true/false   false

integer a =  127 ,  integer b = 127;a == b ?--->true/false     true

integer類快取了-128-127之間的數,在這之間的數直接放到快取池,超過128的integer值

都是new出來的物件,比較兩個物件的位址值肯定不相同。

6.intvalue(): 以 int 型別返回該 integer 的值。即返回的是棧中 字面量同的位址。

7.什麼時候會發生自動裝箱/拆箱問題

當int 和 integer互相轉換的時候回發生。

什麼時候自動拆箱和自動裝箱不起作用?

integer  int作為方法的引數發生過載時。

8.integer.parseint("全數字字串");

包裝型別和非包裝型別問題

在公司開發中遇到乙個就是非包裝型別和包裝型別的空指標異常問題 大概如下 package com.itstyle.mail.repository classname demo2 description auther cxy date 2017 5 19 14 57 version v1.0 publi...

基本包裝型別

好久之前看的高程,最近有些忘記了,疑惑基本包裝型別存在的意義,下面總結一下 為了便於操作基本型別,ecmascript提供了三個特殊的引用型別 boolean number string。實際上,每當讀取乙個基本型別值的時候,後台就會建立乙個對應的基本包裝型別的物件,從而讓我們能夠呼叫一些方法來操作...

基本包裝型別

為了便於操作基本資料型別,提供了三個特殊的引用型別,boolean,number和string,這些型別和其他引用型別相似,但是同時也具備和自己相應的資料型別的特殊行為,實際上每當讀取乙個基本型別的數值後,後台都會為我們建立對應的基本包裝型別的物件,從而能夠呼叫一些方法處理這些資料。var box ...