奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

java語言

Java面試實(shí)例int和Integer有什么區(qū)別?

時(shí)間:2024-06-09 07:13:49 java語言 我要投稿
  • 相關(guān)推薦

Java面試實(shí)例int和Integer有什么區(qū)別?

  引導(dǎo)語:越是貌似簡單的面試題其中的玄機(jī)就越多,需要面試者有相當(dāng)深厚的功力。以下是百分網(wǎng)小編分享給大家的Java面試實(shí)例int和Integer有什么區(qū)別?歡迎閱讀學(xué)習(xí)!

Java面試實(shí)例int和Integer有什么區(qū)別?

  int和Integer有什么區(qū)別?

  答:Java是一個(gè)近乎純潔的面向?qū)ο缶幊陶Z言,但是為了編程的方便還是引入了基本數(shù)據(jù)類型,但是為了能夠?qū)⑦@些基本數(shù)據(jù)類型當(dāng)成對(duì)象操作,Java為每一個(gè)基本數(shù)據(jù)類型都引入了對(duì)應(yīng)的包裝類型(wrapper class),int的包裝類就是Integer,從Java 5開始引入了自動(dòng)裝箱/拆箱機(jī)制,使得二者可以相互轉(zhuǎn)換。

  Java 為每個(gè)原始類型提供了包裝類型:

  - 原始類型: boolean,char,byte,short,int,long,float,double

  - 包裝類型:Boolean,Character,Byte,Short,Integer,Long,F(xiàn)loat,Double

1
2
3
4
5
6
7
8
9
10
class AutoUnboxingTest {
 
    public static void main(String[] args) {
        Integer a = new Integer(3);
        Integer b = 3;                  // 將3自動(dòng)裝箱成Integer類型
        int c = 3;
        System.out.println(a == b);     // false 兩個(gè)引用沒有引用同一對(duì)象
        System.out.println(a == c);     // true a自動(dòng)拆箱成int類型再和c比較
    }
}

  最近還遇到一個(gè)面試題,也是和自動(dòng)裝箱和拆箱有點(diǎn)關(guān)系的,代碼如下所示:

1
2
3
4
5
6
7
8
9
public class Test03 {
 
    public static void main(String[] args) {
        Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
 
        System.out.println(f1 == f2);
        System.out.println(f3 == f4);
    }
}

  如果不明就里很容易認(rèn)為兩個(gè)輸出要么都是true要么都是false。首先需要注意的是f1、f2、f3、f4四個(gè)變量都是Integer對(duì)象引用,所以下面的==運(yùn)算比較的不是值而是引用。裝箱的本質(zhì)是什么呢?當(dāng)我們給一個(gè)Integer對(duì)象賦一個(gè)int值的時(shí)候,會(huì)調(diào)用Integer類的靜態(tài)方法valueOf,如果看看valueOf的源代碼就知道發(fā)生了什么。

1
2
3
4
5
public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

  IntegerCache是Integer的內(nèi)部類,其代碼如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
     * Cache to support the object identity semantics of autoboxing for values between
     * -128 and 127 (inclusive) as required by JLS.
     *
     * The cache is initialized on first usage.  The size of the cache
     * may be controlled by the {@code -XX:AutoBoxCacheMax=<size>} option.
     * During VM initialization, java.lang.Integer.IntegerCache.high property
     * may be set and saved in the private system properties in the
     * sun.misc.VM class.
     */
 
    private static class IntegerCache {
        static final int low = -128;
        static final int high;
        static final Integer cache[];
 
        static {
            // high value may be configured by property
            int h = 127;
            String integerCacheHighPropValue =
                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
            if (integerCacheHighPropValue != null) {
                try {
                    int i = parseInt(integerCacheHighPropValue);
                    i = Math.max(i, 127);
                    // Maximum array size is Integer.MAX_VALUE
                    h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
                } catch( NumberFormatException nfe) {
                    // If the property cannot be parsed into an int, ignore it.
                }
            }
            high = h;
 
            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);
 
            // range [-128, 127] must be interned (JLS7 5.1.7)
            assert IntegerCache.high >= 127;
        }
 
        private IntegerCache() {}
    }

  簡單的說,如果整型字面量的值在-128到127之間,那么不會(huì)new新的Integer對(duì)象,而是直接引用常量池中的Integer對(duì)象,所以上面的面試題中f1==f2的結(jié)果是true,而f3==f4的結(jié)果是false。

【Java面試實(shí)例int和Integer有什么區(qū)別?】相關(guān)文章:

java調(diào)用c函數(shù)的實(shí)例04-03

Java面試經(jīng)典試題和答案12-05

Java中的多態(tài)用法實(shí)例分析04-04

Java隊(duì)列類編寫實(shí)例11-30

Unix和Linux有什么區(qū)別11-17

java讀取解析xml文件實(shí)例12-01

主板大板和小板有什么區(qū)別07-03

Java 異步回調(diào)機(jī)制實(shí)例解析03-18

java中通用的線程池實(shí)例代碼08-27

主站蜘蛛池模板: 巧家县| 耿马| 东山县| 焉耆| 宾川县| 太保市| 丰都县| 莫力| 仁化县| 永德县| 博野县| 五峰| 英吉沙县| 彰化市| 湘乡市| 扎赉特旗| 江油市| 通化县| 泸州市| 仁寿县| 石家庄市| 三台县| 景洪市| 阿荣旗| 綦江县| 昌黎县| 黄山市| 自贡市| 昌都县| 平顺县| 永安市| 丰都县| 南宁市| 富蕴县| 桦甸市| 丰城市| 沙坪坝区| 贵德县| 女性| 本溪市| 杨浦区|