日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 双等号(==) 与equals方法的介绍和区别

發布時間:2024/9/27 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 双等号(==) 与equals方法的介绍和区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java 雙等號(==) 與equals方法的介紹和區別

1.基本數據類型與equals方法

  • == 用于比較基本數據類型時,比較的是值
  • ==用于比較引用數據類型時,比較的是地址
  • equals方法在Object類中比較的也是地址,因為在低層也是使用==進行比較
  • String類調用equals方法比較的內容,因為String類對equals方法進行了重寫,改為了比較字符串的內容
  • package com.qfedu.test2; /*** == 與 equals方法區別* @author **/ public class Person {private String name;private String idCard;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getIdCard() {return idCard;}public void setIdCard(String idCard) {this.idCard = idCard;}public Person(String name, String idCard) {this.name = name;this.idCard = idCard;}public Person() {}public static void main(String[] args) {Person p1 = new Person("張三","abcd");Person p2 = new Person("張三","abc");//== 比較的是地址 falseSystem.out.println(p1 == p2);//Object類中equals方法低層使用的也是 == 所以比較的也是地址 打印false System.out.println(p1.equals(p2));System.out.println("======================");//String 也是一個類 可以創建對象并賦值String str1 = new String("abc");String str2 = new String("abc");//==比較的是地址 falseSystem.out.println(str1 == str2);//String 中重寫的equals方法 比較的是內容 輸出trueSystem.out.println(str1.equals(str2));}}

    2.String類中:

  • String 對象直接使用等號賦值,會將值存儲在方法區的字符串常量池中

  • String使用等號直接賦值時,在存放之前,會先檢查常量池中是否有相同的字符串內容,如果存在,直接使用已存在字符串內容,如果不存在,將以一個新的地址存放在常量中

    注意:如果通過new對象進行賦值,每個對象都會是一個新的地址

  • public class Test1 {public static void main(String[] args) {//String 在方法區有一個存儲字符串的常量池,存放之前會檢查常量池是否存在,//存在的話直接使用,所以地址相同String str1 = "121";String str2 = "121";//new 對象直接在堆中 每次創建都會產生一個地址String str3 = new String("121");String str4 = new String("121");System.out.println(str1 == str2);System.out.println(str3 == str4);System.out.println(str2 == str3);} }

    3.整數包裝類中

  • 數值包裝類,取值在byte(-128~127)之間,直接使用等號(=)賦值時,多個對象比較,結果為true,超過范圍為false
  • char類型也遵循這個規則
  • public class Test1 {public static void main(String[] args) {Integer i1 = 12;Integer i2 = 12;System.out.println(i1==i2);//true//浮點型不適用Double d1 = 12D;Double d2 = 12D;System.out.println(d1 == d2);//falseLong l1 = 123L;Long l2 = 123L;System.out.println(l1 == l2);//true} }

    總結

    以上是生活随笔為你收集整理的java 双等号(==) 与equals方法的介绍和区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。