欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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很多東西和以前接觸過的語言完全不一樣,比如最簡(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);
  }
}

肯定很多人說,輸出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ú)拿出來,肯定至少有一個(gè)不會(huì)相等。

這兩個(gè)程序的結(jié)果都是false true,原因很簡(jiǎn)單,JAVA是一個(gè)基本完全面向?qū)ο蟮恼Z言,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”字符串,不要跟原來的一樣的。

于是,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中布隆過濾器(Bloom Filter)原理及其使用場(chǎng)景

    詳解Java中布隆過濾器(Bloom Filter)原理及其使用場(chǎng)景

    布隆過濾器是1970年由布隆提出的,它實(shí)際上是一個(gè)很長(zhǎng)的二進(jìn)制向量和一系列隨機(jī)映射函數(shù),它的作用是檢索一個(gè)元素是否存在我們的集合之中,本文給大家詳細(xì)的講解一下布隆過濾器,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • Java多線程Future實(shí)現(xiàn)優(yōu)雅獲取線程的執(zhí)行結(jié)果

    Java多線程Future實(shí)現(xiàn)優(yōu)雅獲取線程的執(zhí)行結(jié)果

    這篇文章主要為大家詳細(xì)介紹了Java如何利用Future實(shí)現(xiàn)優(yōu)雅獲取線程的執(zhí)行結(jié)果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • Java簡(jiǎn)單驗(yàn)證身份證功能示例

    Java簡(jiǎn)單驗(yàn)證身份證功能示例

    這篇文章主要介紹了Java簡(jiǎn)單驗(yàn)證身份證功能,涉及java針對(duì)字符串的截取、判斷相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • Java撲克牌速算24的方法

    Java撲克牌速算24的方法

    這篇文章主要為大家詳細(xì)介紹了Java撲克牌速算24的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • springboot Jpa多數(shù)據(jù)源(不同庫(kù))配置過程

    springboot Jpa多數(shù)據(jù)源(不同庫(kù))配置過程

    這篇文章主要介紹了springboot Jpa多數(shù)據(jù)源(不同庫(kù))配置過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Maven打包沒有指定主類問題(xxx.jar中沒有主清單屬性)

    Maven打包沒有指定主類問題(xxx.jar中沒有主清單屬性)

    這篇文章主要介紹了Maven打包沒有指定主類問題(xxx.jar中沒有主清單屬性),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • java高效文件流讀寫操作詳解

    java高效文件流讀寫操作詳解

    這篇文章主要介紹了java高效文件流讀寫操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • SpringBoot環(huán)境屬性占位符解析和類型轉(zhuǎn)換方式

    SpringBoot環(huán)境屬性占位符解析和類型轉(zhuǎn)換方式

    這篇文章主要介紹了SpringBoot環(huán)境屬性占位符解析和類型轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 關(guān)于MyBatis plus條件構(gòu)造器的逐條詳解

    關(guān)于MyBatis plus條件構(gòu)造器的逐條詳解

    什么是條件構(gòu)造器呢?簡(jiǎn)單來說,條件構(gòu)造器就是用來生成我們查數(shù)據(jù)庫(kù)的sql。它可以簡(jiǎn)化sql代碼的編寫,靈活、方便且易于維護(hù)
    2021-09-09
  • java關(guān)鍵字super的騷操作詳解

    java關(guān)鍵字super的騷操作詳解

    關(guān)鍵字super在Java中用于引用當(dāng)前類的父類(即超類)的構(gòu)造方法、訪問父類的成員變量和方法,它提供了一種方便的方式來處理繼承關(guān)系中的父類操作,下面我們就來看看它有哪些騷操作吧
    2023-09-09

最新評(píng)論