java中equals與 區別分析

2021-07-02 14:51:46 字數 926 閱讀 5069

一.

equals()方法是string方法之一: public boolean equals(object obj)

函式功能:當引數obj引用的物件與當前物件為同乙個物件時,就返回true,否則返回false

由此理解:equals被用來檢測兩個物件是否相等,即兩個物件的內容是否相等。

二. ==用於比較引用和比較基本資料型別:

1)比較基本資料型別,如果兩個值相同,則結果為true

2)比較引用時,如果引用指向記憶體中的同一物件,結果為true

例如:

string s1=new string(「aaa」);//建立字串物件

system.out.println(s1.equals(「aaa」));//返回true

system.out.println(s1==」aaa」);//返回false

若string s2=」aaa」;

system.out.println(s2==」aaa」);//返回true

三.舉例說明

a.equals(b)是判斷字串常量a是不是和b在內容上一樣

比如:

string a=」123」;

a.equals(「123」)就是對的,因為兩者字串內容一樣。

a==b是判斷字串常量a在物理記憶體位址上是不是和b一樣

比如:

string a=」123」,b=」123」;// a,b都指向了」123」的記憶體區域,所以a,b所指向的實體地址一樣,因而a==b是對的

string a=new string(「123」),b=new string(「123」);// a建立了自己的」123」,b也是;a,b所指向各自的區域,所以a==b是錯誤的

一般對於兩個字串a,b來說,a==b沒什麼意義的,一般都用a.equals(b)來判斷字串是否匹配

java中equals()與 區別

int a 10 int b 10 則a b將是true。但不好理解的地方是 string a new string foo string b new string foo 則a b將返回false。物件變數其實是乙個引用,它們的值是指向物件所在的記憶體位址,而不是物件本身。a和b都使用了new操作...

java中「 」 與 equals 區別

首先這是乙個很經典的例子,我們可以編寫乙個簡單的例子如下 有上述例子我們可以知道,是比較的我們資料位址,而equals則比較的是資料內容,a b,因為a,b為常量在常量池中為同意資料塊,所以相等,a1,b1是不同物件,在堆中儲存在不同區域,位址不同,所以a1 b1為false 那麼有些就奇怪了,為什...

java中equals 與 的區別

public class teststring 這個程式真是簡單啊!可是有什麼問題呢?1.來自 string 的憂慮 上面這段程式中,到底有幾個物件呢?可能很多人脫口而出 兩個,s1 和 s2 為什麼?string 是 final 類,它的值不可變。看起來似乎很有道理,那麼來檢測一下吧,稍微改動一下...