Java基礎14: 基本數據類型的封裝類


基本類型

封裝類型

字節長度

默認值

boolean

Boolean

1

false

byte

Byte

1

0

char

Character

2

'u0000'

short

Short

2

0

int

Integer

4

0

float

Float

4

0.0F

long

Long

8

0L

double

Double

8

0.0

注意點:

  1. 因爲JVM屏蔽了硬件之間的差異性, 所以Java中的數值都是有符號的, 他們的取值範圍都是固定的
  2. 封裝之後的類型, 默認值爲null
  3. 基本類型和封裝類型的比較:

        public static void main(String[] args) {

             int num1 = 999;

             Integer num2 = new Integer("999");

             Integer num3 = new Integer("999");

             System.out.println("num1 == num2: " + (num1 == num2));

             System.out.println("num2.equals(num1): " + num2.equals(num1));

             System.out.println("num3 == num2 : " + (num3 == num2));

             System.out.println("num3.equals(num2): " + num3.equals(num2));

        }

        運行結果:

             num1 == num2: true

                 num2.equals(num1): true

                 num3 == num2 : false

                 num3.equals(num2): true

        運行結果分析:

                - 基本類型和封裝類型進行"=="比較的時候, 封裝類型會自動拆箱, 然後變成基本類型就行比較

                - 兩個封裝類型進行 "=="比較的時候, 判斷的是兩個對象是否是同一個對象, 所以要用equals就行比較

                - 封裝類型調用equals方法, 但是參數是基本類型的時候, 會先將基本類型裝箱爲封裝類型


  1. Boolean, Byte, Character, Short, Integer, Long使用了Java的常量池, 也就是說當數據範圍在 -128~127的時候, 會使用緩存,Float和Double沒有使用常量池

        public static void main(String[] args) {

             int num1 = 120;

             Integer num2 = new Integer("120");

             System.out.println("num1 == num2: " + (num1 == num2));

             System.out.println("num2.equals(num1): " + num2.equals(num1));

        }

        運行結果:

            num1 == num2: true

               num2.equals(num1): true

        緩存源碼:

            public static Integer valueOf(int i) {

                    if (i >= IntegerCache.low && i <= IntegerCache.high)

                        return IntegerCache.cache[i + (-IntegerCache.low)];

                        return new Integer(i);

                }

  1. 泛型只能使用封裝類型, 而不能使用基本數據類型
                                                    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章