最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 中String.equals和==的比較

 更新時(shí)間:2017年08月18日 15:01:49   作者:大舒  
這篇文章主要介紹了java 中String.equals和==的比較的相關(guān)資料,需要的朋友可以參考下

 java 中String.equals和==的比較

 初學(xué)java有段時(shí)間了,但是昨晚忽然就被"asd"==getpara("password")搞得不開心了:確實(shí)JAVA很多東西和以前接觸過的語(yǔ)言完全不一樣,比如最簡(jiǎn)單的new String("asd") !=new String ("asd")。

1 一個(gè)最簡(jiǎn)單的程序:

public class A {
  public static void main(String args[]) {
    String s1 = "Hello";
    String s2 = "Hello";
    System.out.println(s1 == s2);
  }
}

肯定很多人說(shuō),輸出true,確實(shí)是輸出true,s1和s2引用的是同一個(gè)東西嘛。但是這個(gè)程序如果換一種寫法,那么肯定就不太一樣了。

2 第一種變體:

public class A {
  public static void main(String args[]) {
    String s1 = "Hello";
    String s2 = new String("Hello");
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));
  }
}

或者:

public class A {
  public static void main(String args[]) {
    String s1 = new String("Hello");
    String s2 = new String("Hello");
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));
  }
}

那么結(jié)果就有點(diǎn)不太確定了,有些人很壞的想到了,單獨(dú)拿出來(lái),肯定至少有一個(gè)不會(huì)相等。

這兩個(gè)程序的結(jié)果都是false true,原因很簡(jiǎn)單,JAVA是一個(gè)基本完全面向?qū)ο蟮恼Z(yǔ)言,s1 == s2 判斷的是他的引用(相當(dāng)于內(nèi)存地址、指針),equals則是使用這個(gè)對(duì)象自身的方法去判斷值是否相等。

在以下表達(dá)式中:

String s1 = "Hello";
String s2 = new String("Hello");

JVM得到的是兩個(gè)不同的信息:

1.我要?jiǎng)?chuàng)建一個(gè)“Hello”字符串。
2.我要?jiǎng)?chuàng)建一個(gè)新的“Hello”字符串,不要跟原來(lái)的一樣的。

于是,s1 != s2.

3 第二種變體:

順序排列:

public class A {
  public static void main(String args[]) {
    String s1 = new String("Hello");
    String s2 = new String("Hello");
    String s3 = "Hello";
    s1=s1.intern();
    s2=s2.intern();
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));
    System.out.println(s3 == s2);
    System.out.println(s3.equals(s2));
  }
}

打亂順序排列:

public class A {
  public static void main(String args[]) {
    String s1 = new String("Hello");
    String s3 = "Hello";
    s1=s1.intern();
    String s2 = new String("Hello");
    s2=s2.intern();
    //也可以String s2 = new String("Hello").intern();
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));
    System.out.println(s3 == s2);
    System.out.println(s3.equals(s2));
  }
}

那么這次應(yīng)該很清楚了=

兩個(gè)object,但是中間加入了一些羞羞的東西,于是答案肯定是true true true true。

那么intern到底是什么。

4 intern作用:

當(dāng)調(diào)用 intern 方法時(shí),如果池已經(jīng)包含一個(gè)等于此 String 對(duì)象的字符串(該對(duì)象由 equals(Object) 方法確定),則返回池中的字符串。

否則,將此 String 對(duì)象添加到池中,并且返回此 String 對(duì)象的引用。

intern的適用情況:多個(gè)相同的大字符串同時(shí)出現(xiàn)的情況,例如可能出現(xiàn)多個(gè)相同消息的消息隊(duì)列的設(shè)計(jì)。

以上就是java 中String.equals和==的比較的實(shí)例詳解,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Java后臺(tái)生成圖片的完整步驟

    Java后臺(tái)生成圖片的完整步驟

    在一些詳情頁(yè)面中,可能需要對(duì)上傳到服務(wù)器中的圖片生成以縮略圖的形式展示,這篇文章主要給大家介紹了關(guān)于Java后臺(tái)生成圖片的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼

    Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • springboot整合redis集群過程解析

    springboot整合redis集群過程解析

    這篇文章主要介紹了springboot整合redis集群過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java PhantomJs完成html圖片輸出功能

    Java PhantomJs完成html圖片輸出功能

    給大家?guī)?lái)一篇關(guān)于用Java PhantomJs完成html圖片輸出功能的教學(xué)內(nèi)容,有興趣的朋友學(xué)習(xí)參考下吧。
    2017-12-12
  • java實(shí)現(xiàn)文件下載的兩種方式

    java實(shí)現(xiàn)文件下載的兩種方式

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件下載的兩種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 掃二維碼自動(dòng)跳轉(zhuǎn)【java】詳解

    掃二維碼自動(dòng)跳轉(zhuǎn)【java】詳解

    這篇文章主要介紹了java掃二維碼自動(dòng)跳轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • java微信延遲支付的實(shí)現(xiàn)示例

    java微信延遲支付的實(shí)現(xiàn)示例

    最近在面試的過程中總會(huì)出現(xiàn)一些關(guān)于微信支付延遲返回結(jié)果的處理方式的問題,本文主要介紹了java微信延遲支付的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 淺談spring中用到的設(shè)計(jì)模式及應(yīng)用場(chǎng)景

    淺談spring中用到的設(shè)計(jì)模式及應(yīng)用場(chǎng)景

    下面小編就為大家?guī)?lái)一篇淺談spring中用到的設(shè)計(jì)模式及應(yīng)用場(chǎng)景。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-08-08
  • Automapper實(shí)現(xiàn)自動(dòng)映射的實(shí)例代碼

    Automapper實(shí)現(xiàn)自動(dòng)映射的實(shí)例代碼

    這篇文章主要介紹了Automapper實(shí)現(xiàn)自動(dòng)映射的實(shí)例代碼,需要的朋友可以參考下
    2017-09-09
  • Spring框架構(gòu)造注入type屬性實(shí)例詳解

    Spring框架構(gòu)造注入type屬性實(shí)例詳解

    這篇文章主要介紹了Spring框架構(gòu)造注入type屬性實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論

通州市| 伽师县| 栾川县| 关岭| 常德市| 长宁区| 汝州市| 巴林左旗| 新宁县| 沅江市| 金湖县| 尼木县| 万源市| 蕉岭县| 新丰县| 沾化县| 五原县| 尼勒克县| 商南县| 醴陵市| 巴林右旗| 正宁县| 明水县| 南川市| 五寨县| 济南市| 新津县| 兰西县| 台北市| 土默特左旗| 江陵县| 贺州市| 凤冈县| 景宁| 如皋市| 嘉义市| 东兴市| 闽清县| 集安市| 永吉县| 元氏县|