久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      java中int與integer的區(qū)別

      java中int與integer的區(qū)別

      一、java基本數(shù)據(jù)類型及其封裝類

      java中int與integer的區(qū)別

      java數(shù)據(jù)類型有基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,為了方便將基本數(shù)據(jù)類型當作對象處理,java引入了基本數(shù)據(jù)類型相對應的封裝類,如int封裝類是Integer。

      在線教學視頻分享:java教學視頻

      二、java自動拆箱和自動裝箱

      1、自動裝箱

      自動裝箱其實就是將基本數(shù)據(jù)類型轉換為引用數(shù)據(jù)類型(對象)

      2、自動拆箱

      自動拆箱其實就是將引用數(shù)據(jù)類型轉化為基本數(shù)據(jù)類型

      代碼如下:

          public static void main(String[] args) {         Integer a = 1;//這里就用到了自動裝箱;等同于Integer a = new Integer(1);          int b = a - 1;//對象不能直接進行計算,所以這里有自動拆箱的操作,將a對象轉換成基本數(shù)據(jù)類型,然后-1         System.out.println(a);         System.out.println(b);     }

      打印結果:

      1 0

      三、int和Interger的區(qū)別

      從上面我們就能看出int和Interger的區(qū)別:

      int是基本數(shù)據(jù)類型,Integer是引用數(shù)據(jù)類型;

      int默認值是0,Integer默認值是null;

      int類型直接存儲數(shù)值,Integer需要實例化對象,指向對象的地址。

      說到這,是不是認為就這么完事了,其實它們之間還有一些細節(jié)方面的區(qū)別:如下

          public static void main(String[] args) {         Integer a = new Integer(1);         Integer b = new Integer(1);          int c = 1;         int d = 1;          Integer e = 1;         Integer f = 1;                  Integer g = 130;         Integer h = 130;                  Integer i = new Integer(130);         int j = 130;     }

      1:a == b 嗎? 廢話,肯定不相等。兩個new出來的對象地址不一樣。

      2:c == d 嗎? 這個也是廢話,都是基本數(shù)據(jù)類型的值肯定相等。

      3:現(xiàn)在的關鍵問題是 e == f 嗎? g == h 嗎?

      答案是:e == f; g != h。

      為什么會出現(xiàn)這種情況?因為ava在進行編譯時 Integer g = 130會被編譯成 Integer.valueOf(130) ,這個可以通過反編譯class文件看到。而通過Integer源碼可以得出,Integer.valueOf() 方法會在數(shù)值-128~127之間會對Integer進行緩存,不會再重新new一個,所以 e==f ;當數(shù)值二大于127或者小于-128的時候則會重新new一個,所以g != h 。

      Integer的valueOf方法如下:

          public static Integer valueOf(int i) {          //IntegerCache.low == -128  ;IntegerCache.high == 127          //當數(shù)值大于-128小于127時,進行緩存;否則重新new一個。         if (i >= IntegerCache.low && i <= IntegerCache.high)             return IntegerCache.cache[i + (-IntegerCache.low)];         return new Integer(i);     }

      4:c == e 嗎, i == j 嗎?

      答案都是相等的。因為封裝類和基本數(shù)據(jù)類型進行比較的時候,java會自動拆箱,然后比較數(shù)值是否相等。

      總結:

      1、都是封裝類,都是new出來的,肯定不相等。因為對象的內存地址不一樣。

      2、都是封裝類,都不是new出來的,如果值在-128~127之間,那就相等,否則不相等。

      3、如果是封裝類和基本類型進行比較,只要數(shù)值相等那就相等,否則就不相等。因為封裝類和基本數(shù)據(jù)類型進行比較的時候會有一個自動拆箱操作。

      4、都是基本數(shù)據(jù)類型,如果數(shù)值相等,那就相等;否則不相等。

      想了解

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號