91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 中String.equals與==有什么不同

發布時間:2020-12-02 16:22:55 來源:億速云 閱讀:170 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關java 中String.equals與==有什么不同,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

 java 中String.equals和==的比較

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

1 一個最簡單的程序:

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

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

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));
  }
}

那么結果就有點不太確定了,有些人很壞的想到了,單獨拿出來,肯定至少有一個不會相等。

這兩個程序的結果都是false true,原因很簡單,JAVA是一個基本完全面向對象的語言,s1 == s2 判斷的是他的引用(相當于內存地址、指針),equals則是使用這個對象自身的方法去判斷值是否相等。

在以下表達式中:

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

JVM得到的是兩個不同的信息:

1.我要創建一個“Hello”字符串。
2.我要創建一個新的“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));
  }
}

那么這次應該很清楚了=

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

那么intern到底是什么。

4 intern作用:

當調用 intern 方法時,如果池已經包含一個等于此 String 對象的字符串(該對象由 equals(Object) 方法確定),則返回池中的字符串。

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

intern的適用情況:多個相同的大字符串同時出現的情況,例如可能出現多個相同消息的消息隊列的設計。

以上就是java 中String.equals與==有什么不同,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

娄烦县| 舞钢市| 苍南县| 鄂尔多斯市| 元谋县| 磐石市| 南投县| 灌阳县| 瓮安县| 馆陶县| 永修县| 镇康县| 江源县| 乌审旗| 嘉兴市| 辽阳县| 稷山县| 札达县| 吴川市| 济南市| 左权县| 临邑县| 万盛区| 邯郸县| 扶余县| 英德市| 澄江县| 南皮县| 平定县| 哈尔滨市| 新宾| 隆安县| 夹江县| 六枝特区| 山阳县| 台东市| 新竹县| 墨玉县| 昆明市| 岑溪市| 界首市|