一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

服務(wù)器之家 - 編程語言 - Java教程 - Java中==運算符與equals方法的區(qū)別及intern方法詳解

Java中==運算符與equals方法的區(qū)別及intern方法詳解

2020-09-16 15:42StellaAh Java教程

這篇文章主要介紹了Java中==運算符與equals方法的區(qū)別及intern方法詳解的相關(guān)資料,需要的朋友可以參考下

Java中==運算符equals方法的區(qū)別及intern方法詳解

1.  ==運算符與equals()方法
2. hashCode()方法的應(yīng)用
3. intern()方法

?
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
Come from xixifeng.com
Author: 習(xí)習(xí)風(fēng)(StellAah)
*/
public class AboutString2 
{
  public static void main(String[]arsgs)
  {
    String myName="xixifeng.com";
    String myName3="xixifeng"
    String myName4=".com";
    String myName5=myName3+myName4;
    String myName6="xixifeng.com";
     
    if(myName==myName5)
    {
       
      System.out.println("myName==myName5");
    }
    else
    {
      System.out.println("myName="+myName);
      System.out.println("myName5="+myName5);
      System.out.println("myName!=myName5");
    }
    //經(jīng)運行打印出: myName!=myName5
     
    if(myName==myName6)
    {
      System.out.println("myName==myName6");
    }
    else
    {
      System.out.println("myName!=myName6");
    }
    //經(jīng)運行得出: myName!=myName5,myName==myName6
     
    //myName,myName5(myName5的值是由myName3+myName4得到的),myName6 這三個對象的值是相等的, 為什么 它們之間用==進行運算的結(jié)果是 myName!=myName5,myName==myName6呢?
    //原因在于==運算符
    //顯然==參與String運算中不是用來比較值的,而是用來比較對象是否相等的.
    //那么在String運算中,通過什么方法來比較它們的值是否相等呢,java 提供了equals()方法 ,主要用于比較對象的值是否相等
    //示例如下:
    //myName==myName5 是false (不是同一個對象)
    if(myName.equals(myName5))
    {
      System.out.println("myName.equals(myName5) 比較的結(jié)果是true !");
    }
    else
    {
      System.out.println("myName.equals(myName5) 比較的結(jié)果是false !");
    }
    //經(jīng)運行輸出:myName.equals(myName5) 比較的結(jié)果是true ! 在由于myName與myName5不是同一個對象,充分說明:
    //equals()方法[是用來比較對象的值是否相等]
     
    //再拋出疑問:是不是兩個對象的哈希值相等就說明這兩個對象相等呢?
    //(由上述測試myName==myName5 得出false ①表明myName與myName5不是同一個對象)
    System.out.println(myName.hashCode());
    System.out.println(myName5.hashCode());
    //經(jīng)測試 ②myName與myName5的哈希值相等
    //由①,② 得出: 兩個對象的hashCode值相等,不能表明其對象也相等.
 
    //拋出疑問: 怎樣使myName與myName5的對象相等呢?
    //引入intern()方法
    myName5=myName5.intern();
    if(myName==myName5)
    {
       
      System.out.println("(myName==myName5) 得true");
    }
    else
    {
      System.out.println("(myName==myName5) 得false");
    }
    //經(jīng)運行打印出: (myName==myName5) 得true
    //結(jié)論: intern()方法能使兩個(對象不相等而值相等的)對象變得相等
    //myName5.intern();的意思,可以解釋為: myName5在內(nèi)存中查找對象嫁給自己,條件是,該對象要與自己的值相等. 找到了,就指定該對象.
    //myName5找到對象,并認定,就不必再創(chuàng)建對象了,所以說這樣做,可以節(jié)約內(nèi)存資源.
     
    //拋出疑問: 什么樣的對象建議使用intern()呢?
    // myName="xixifeng.com" myName6="xixifeng.com", myName與myName6的對象是相等的,上述已經(jīng)證實.
    // 所以說,對象在直接賦予同樣的值的時候沒有必要用intern().
    //myName="xixifeng.com" myName5=myName3+myName4,它們的值相等,但是對象不相等,上述已經(jīng)證實.
    //所以說, 對象在間接賦予(有可能與已有對象)同樣的值的時候,建議用一下intern()方法,從而可公用內(nèi)存中存在的對象.
     
     
    //==參與int型運算中,也營造類似的比較
    int i=8;
    int j=3;
    int k=5;
    int m=j+k;
    int n=8;
    if(i==m)
    {
      System.out.println("i="+i);
      System.out.println("m="+m);
      System.out.println("i==m");
    }
    else
    {
      System.out.println("i!=m");
    }
     
    if(i==n)
    {
      System.out.println("... ... ... ...");
      System.out.println("i="+i);
      System.out.println("n="+n);
      System.out.println("i==n");
    }
    else
    {
      System.out.println("i!=n");
    }
    //經(jīng)運行得出i=m(m的值由j+k得到),i=n
    //i,m,n的值都相等 , 由于i==m 得出true i==n得出true 
    //所以可以得出結(jié)論: ==參與非對象類型運算時,是用來比較常量的值是否相等   
  }
}

綜上所屬,得出如下結(jié)論:

1) ==運算符參與對象類型運算時是用來比較對象是否想得的.
2) ==運算符參與非對象類型運算時是用來比較值是否相等的.
3) equals()方法用于比較兩個對象的值是否相等
4) 兩個對象的hashCode()值相等,并不代表其對象也相等
5) intern()方法能使兩個(對象不相等而值相等的)對象變得相等,從而可以公用內(nèi)存已有的對象,這樣做可以節(jié)約內(nèi)存資源.
6) 對象在間接賦予(有可能與已有對象)同樣的值的時候,建議用一下intern()方法,從而可公用內(nèi)存中存在的對象.

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本色午夜 | 亚洲精品国产精品麻豆99 | 疯狂伦交1一6小说 | 国产成人高清精品免费观看 | 99久久国产综合精品女不卡 | 五月婷婷伊人网 | 福利三区| 日本中文字幕在线观看视频 | 国产日韩欧美在线一二三四 | 国产高清自拍 | 99热这里只有精品久久免费 | 亚洲春黄在线观看 | 成人丁香乱小说 | 虎四免费入口 | 日韩有码| 法国贵妇一级伦理hd | 久久久精品免费免费直播 | 天天做天天爱天天综合网 | 欧美怡红院视频一区二区三区 | 久99久热只有精品国产99 | 久久国产加勒比精品无码 | 激情视频在线播放 | 久青草国产观看在线视频 | 国亚洲欧美日韩精品 | 色婷婷婷丁香亚洲综合不卡 | 纲手被强喷水羞羞漫画 | 国产精品热久久毛片 | 97蝌蚪自拍自窝 | 日本人泡妞18xxⅹ | 亚洲精品91| 97国产自拍| 蜜桃久久久亚洲精品成人 | 日本护士handjob | 国产精品亚洲w码日韩中文 国产精品香蕉在线观看不卡 | 日本视频在线免费播放 | 美国女孩毛片 | 日韩在线 在线播放 | 甜蜜惩罚小说 | 亚洲成年人免费网站 | 性欧美videofree中文字幕 | 视频高h|