国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 代碼詳解java里的“==”和“equels”區(qū)別

代碼詳解java里的“==”和“equels”區(qū)別

2021-04-04 14:39Haker_楓 Java教程

本篇文章通過實(shí)例代碼給大家詳細(xì)解釋了java里的“==”和“equels”區(qū)別,對(duì)此有興趣的朋友跟著小編一起學(xué)習(xí)下。

測(cè)試1:

先看一組String類型比較,廢話不多說,直接上代碼:

java" id="highlighter_339495">
?
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
45
public class Test {
 
  public static void main(String[] args) {
    String a = "java書苑";
    String b = "java書苑";
    String c = new String("java書苑");
    String d = new String("java書苑").intern();
 
    if(a == b){
      System.out.println("a == b");
    }else{
      System.out.println("a != b");
    }
 
    if(a.equals(b)){
      System.out.println("a.equals(b)");
    }else{
      System.out.println("!a.equals(b)");
    }
 
    if(a == c){
      System.out.println("a == c");
    }else{
      System.out.println("a != c");
    }
 
    if(a.equals(c)){
      System.out.println("a.equals(c)");
    }else{
      System.out.println("!a.equals(c)");
    }
 
    if(a == d){
      System.out.println("a == d");
    }else{
      System.out.println("a != d");
    }
 
    if(a.equals(d)){
      System.out.println("a.equals(d)");
    }else{
      System.out.println("a.equals(d)");
    }
  }
}

輸出結(jié)果:

?
1
2
3
4
5
6
a == b
a.equals(b)
a != c
a.equals(c)
a == d
a.equals(d)

總結(jié):

結(jié)果a == b:程序在運(yùn)行的時(shí)候會(huì)創(chuàng)建一個(gè)字符串緩沖池,在String a = “java書苑”時(shí), “java書苑”被放到了字符串緩沖池中,當(dāng) String b = “java書苑” 創(chuàng)建字符串的時(shí)候,程序首先會(huì)在這個(gè)String緩沖池中尋找相同值的對(duì)象,所以在b被創(chuàng)建的時(shí)候,程序找到了具有相同值的a,將b 引用 a 所引用的對(duì)象。所以a和b引用的同一個(gè)對(duì)象,故a == b。

結(jié)果a != c:String c = new String(“java書苑”)時(shí)new了一個(gè)新的對(duì)象,故不從String緩沖池尋找,二十直接創(chuàng)建一個(gè)新的對(duì)象。所以a != c。

結(jié)果a == d :當(dāng)調(diào)用 intern 方法時(shí),如果池已經(jīng)包含一個(gè)等于此 String 對(duì)象的字符串(該對(duì)象由 equals(Object) 方法確定),則返回池中的字符串。否則,將此 String 對(duì)象添加到池中,并且返回此 String 對(duì)象的引用。所有d調(diào)用的同樣是a的對(duì)象。
equals比較的是值,故值一樣時(shí)便相等。

測(cè)試2:

這是一組int類型和Integer類型的測(cè)試:

?
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
public class Test {
 
  public static void main(String[] args) {
 
    int a = 127;
    int a1 = 127;
 
    int b = 128;
    int b1 = 128;
 
 
    Integer c = 127;
    Integer c1 = 127;
 
    Integer d = 128;
    Integer d1 = 128;
 
    if(a == a1){
      System.out.println("a == a1");
    }else{
       System.out.println("a != a1");
    }
 
    if(b == b1){
      System.out.println("b == b1");
    }else{
       System.out.println("b != b1");
    }
 
    if(c == c1){
      System.out.println("c == c1");
    }else{
       System.out.println("c != c1");
    }
 
    if(d == d1){
      System.out.println("d == d1");
    }else{
       System.out.println("d != d1");
    }
  }
}

輸出的結(jié)果:

?
1
2
3
4
a == a1
b == b1
c == c1
d != d1

結(jié)果”a == a1”和”b == b1”:int 是基本類型,直接存數(shù)值,而integer是對(duì)象,用一個(gè)引用指向這個(gè)對(duì)象,多以比較的時(shí)候”a == a1”和”b == b1”。

結(jié)果“c == c1”和“d != d1”這里可能有人會(huì)有疑問,為什么“d != d1”.我們一起看一下Integer的源碼。

?
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
   * 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 -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) {
        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);
      }
      high = h;
 
      cache = new Integer[(high - low) + 1];
      int j = low;
      for(int k = 0; k < cache.length; k++)
        cache[k] = new Integer(j++);
    }
 
    private IntegerCache() {}
  }
 
  /**
   * Returns an {@code Integer} instance representing the specified
   * {@code int} value. If a new {@code Integer} instance is not
   * required, this method should generally be used in preference to
   * the constructor {@link #Integer(int)}, as this method is likely
   * to yield significantly better space and time performance by
   * caching frequently requested values.
   *
   * This method will always cache values in the range -128 to 127,
   * inclusive, and may cache other values outside of this range.
   *
   * @param i an {@code int} value.
   * @return an {@code Integer} instance representing {@code i}.
   * @since 1.5
   */
  public static Integer valueOf(int i) {
    assert IntegerCache.high >= 127;
    if (i >= IntegerCache.low && i <= IntegerCache.high)
      return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
  }

結(jié)論:這里 Integer 會(huì)初始化一個(gè)[-128,127]的常量池,如果數(shù)值在這個(gè)范圍時(shí),則引用的是同一個(gè)對(duì)象,如果不在這個(gè)范圍,通過源碼可以看出返回的是new了一個(gè)新的對(duì)象: return new Integer(i);

所以,結(jié)果“c == c1”是引用了同一個(gè)對(duì)象,結(jié)果“d != d1”,是new了一個(gè)新的對(duì)象,故不等。

原文鏈接:http://blog.csdn.net/qq_34988304/article/details/78711473

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 婷婷精品久久久久久久久久不卡 | 黄色免费在线观看 | 99精品欧美一区二区三区综合在线 | 色吊丝在线永久观看最新版本 | 91国产视频在线 | 成人免费大片黄在线播放 | 久久新| 国产精品久久久久久久9999 | 精品久久久久久久久久久久久久 | 亚洲午夜激情 | 欧美国产日韩精品 | 中文字幕在线观看免费 | 一级色视频 | 国产精品视频一二三 | 日本中文字幕在线观看 | 日韩在线观看中文字幕 | 91久久 | 欧美精品在线一区二区三区 | 日韩一区二区三区在线视频 | www一区 | 日韩在线观看一区二区 | 狠狠色噜噜狠狠狠8888米奇 | 国变精品美女久久久久av爽 | 久久久青草婷婷精品综合日韩 | 久久中文字幕一区二区 | 天天干天天搞天天射 | 亚洲一区二区视频 | 欧美专区在线观看 | 欧美成人精精品一区二区频 | 日韩小视频 | 久久久久久一区 | 免费成人在线网站 | 日本激情视频一区二区三区 | 国产色黄视频 | 日韩av手机版 | jizz亚洲女人高潮大叫 | 女同另类 | 欧美亚洲91 | 啪啪网站免费 | 伊人激情综合网 | 一区二区在线免费观看 |