equals 和的區別,equals 和 到底有什麼區別啊?

時間 2022-02-02 19:35:14

1樓:郝林梅

==  和 equals 的區別

1. == 是乙個運算子。

2.equals則是string物件的方法,可以.(點)出來。

我們比較無非就是這兩種 1、基本資料型別比較  2、引用物件比較

1、基本資料型別比較

==和equals都比較兩個值是否相等。相等為true 否則為false;

2、引用物件比較

==和equals都是比較棧記憶體中的位址是否相等 。相等為true 否則為false;

需注意幾點:

1、string是乙個特殊的引用型別。對於兩個字串的比較,不管是 == 和 equals 這兩者比較的都是字串是否相同;

2、當你建立兩個string物件時,記憶體中的位址是不相同的,你可以賦相同的值。

所以字串的內容相同。引用位址不一定相同,(相同內容的物件位址不一定相同),但反過來卻是肯定的;

3、基本資料型別比較(string 除外) == 和 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操作符,意味著將在記憶體中產生兩個內容為 "foo "的字串,既然是「兩個」,它們自然位於不同的記憶體位址。a和b的值其實是兩個不同的記憶體位址的值,所以使用 "== "操作符,結果會是false。

誠然,a和b所指的物件,它們的內容都是 "foo ",應該是「相等」,但是==操作符並不涉及到物件內容的比較。

物件內容的比較,正是equals方法做的事。

2樓:匿名使用者

public class ckeef}

3樓:

簡單的說:==表示比較的是位址,而equals比較的是內容如:string s1 = new string ("a");

string s2 = new string ("a");

syso(s1==s2)//輸出false,因為建立了兩個string物件,存在棧中的位址不一樣

syso(s1.equals(s2))//輸出true,因為裡面的內容都是「a」

4樓:龍哥哥

誰教的你比較字串用等號啊,以後別這麼寫,要不你發生錯誤累死 你找不到 ,

以後比較字串就用equals, 學習的時候給你舉個例子,讓你明白就好,

比如說string name =new string("tom");

if(name=="tom")

你如果這麼這麼寫肯定是錯的,因為name=="tom"判斷結果是false,而你肯定以為它是ture,累死你也找不到這樣的錯誤,強烈要求你以後比較字串別用==。除非你很厲害,這種粗心造成的問題往往是致命的

5樓:匿名使用者

因為s1和s4都是從新new過的,記憶體位址不可能一樣,所以為false,可懂?

6樓:

這個確實是容易引起混亂的。。。讓人疑惑的。。。

關鍵在於。。。你要理解s1=new string("we are students");

s2="we are students";

這兩個是不一樣的。。。。new是用新建乙個物件的方法。。。。而後一種是放在常量池中的。。。你一下次再用這種方法去建立的時候。。。就會去常量池裡面找,所以

s2="we are students";

s3="we are students";

這兩個是相同的。。。指向常量池中的"we are students";。。。

而s1=new string("we are students");

s4=new string(s1);

這兩個是不同的物件。。。。。儘管他們的內容是一樣的。。。

就像有兩個人。。。他們的名字是相同的。。。。但是並不是一樣的人。。。。

希望能幫到你。。。這個需要慢慢體會。。。。我剛開始的時候也比較混亂。。。不太理解。。。

7樓:宋柯派帝

乙個是"we are students",乙個是"we are students",你是有意還是無意?

equals()和==到底有什麼區別啊?

8樓:

在基本資料型別中用的都是「==」比較的是兩個物件的內容(包括數值和資料型別)

舉個例子:int i=2; int j=2; char m='2';

system.out.println(i==j) true system.out.print(i==m) false

在引用資料型別中"=="和「equals」比較的都是兩個物件的位址值如果重寫了equals方法,比較的就是兩個物件的內容是否一致。

9樓:匿名使用者

凡是比較基本型別只能用==,比較結果你看到的字面值相等就會相等,什麼叫基本型別? byte,short,int,long,char,float,double這幾種就是基本型別.基本型別不是物件所以不存在用equals比較.

凡是比較引用型別(物件),==比較的是兩個引用是不是指向同乙個記憶體位址,equals比較的是兩個引用的字面值是不是相同,什麼叫字面值?你能看到的值就是字面值,比如:string s="abc"; abc就是字面值.

基本型別的包裝型別是物件型別,所以除非兩個相同字面值的引用指向同一記憶體位址,值才會相等,比如:

integer a=new integer(3);integer b=a;//互相賦值

這樣用等號或equals比較都會得出true,記住一點,凡是兩個引用都用了new去初始化,那==比較的結果都只會是false,互相之間有了賦值,比較結果就為true.

比較不好理解的一點:

string a="abc";

string b="abc";

a==b和a.equals(b);結果都會為true,因為沒有用new去新建物件,其實a和b都指向的是同乙個string物件"abc",改成:

string a=new string("abc");

string b=new string"abc");

後==的結果就是false了.總之參照上面的說明,不難理解.

10樓:

在比較字元型資料時,==比較的是記憶體中的位址,是物件的控制代碼

而equals()比較的是位址內的內容,比較的是物件.

11樓:匿名使用者

例子:你叫 張三 你同學也叫張三

== 相當於問 你倆是乙個人不?

equal 相當於問 你倆名字一樣不

12樓:匿名使用者

equals ;是比較兩個物件的值是否相同

==: 是比較兩個物件的hashcode是否相同

13樓:匿名使用者

只是==是個運算子,equals是個方法,其實沒什麼區別。

然後==用於基礎資料型別的時候,比較的值是否相等用於引用型別的時候,==和equals一樣都是比較位址值。

他們說的equals比較的是內容是否相等,那只是因為string類以及還有一些類重寫了equals方法所體現出來的。在object類中,equals方法內部實現就是用的==,也就是說乙個引用型別如果在沒有重寫equals方法,卻用equals進行比較的時候,用的就是object類的equals方法,比較的是位址值。

所以嚴格來說,你可以理解為某些回答講的是string的equals方法和==的區別,但是其實也不準確,因為string重寫的equals方法要求型別相同,也就是說即使兩個字串內容相等,但是乙個是string,乙個是stringbuffer,那麼用equals的結果也是false。

14樓:匿名使用者

買東西的時候選擇就可以了

equals和==的區別是什麼?

15樓:淡口味的

「==」是關係運算子,equals()是方法,同時他們的結果都返回布林值;

「==」使用情況如下:

1) 基本型別,比較的是值

2) 引用型別,比較的是位址

3) 不能比較沒有父子關係的兩個物件

equals()方法使用如下:

1) 系統類一般已經覆蓋了equals(),比較的是內容。

2) 使用者自定義類如果沒有覆蓋equals(),將呼叫父類的equals (比如是object),而object的equals的比較是位址(return (this == obj);)

3) 使用者自定義類需要覆蓋父類的equals()注意:object的==和equals比較的都是位址,作用相同

equals和==的區別

16樓:能動手別

==是乙個比較運算子,基本資料型別比較的是值,引用資料型別比較的是位址值。

(比較位址值即是指是否為同乙個物件的引用)

equals()是乙個方法,只能比較引用資料型別。重寫前比較的是位址值,重寫後比一般是比較物件的屬性。

17樓:匿名使用者

首先要了解到位址和內容的區別,在計算機記憶體管理中,是通過位址來查詢內容的。舉個例子,計算機中的位址好比現實中的家庭位址,而內容相當於家裡的某個人,當我們想要查詢某個變數的內容時,首先通過位址找到變數的儲存位置,然後再從記憶體中取出內容比較。

對於重寫了equals方法的類庫(string, integer等),== 判斷兩個物件是否指向同乙個引用,比較的是堆記憶體中的位址;而equals出了比較位址還比較「內容」是否一致。

對於只是簡單繼承object類equals方法的類庫,equals和==的作用是相同的,因為在object類中equals方法只是用==來進行判斷,如果位址相同則返回true

==可以用來比較基本型別和引用型別,而equals只能用於引用型別的比較。

j**a中==和equal有什麼區別

18樓:匿名使用者

==比較的是物件的位址,也就是是否是同乙個物件;

equal比較的是物件的值。

integer r1 = new integer(900);//定義r1整型物件

integer r2 = new integer(900);//定義r2整型物件

system.out.println(r1==r2);//返回false

system.out.println(r1.equal(r2));//返回true

誰介紹下E qual日本的,誰能詳細介紹一下日本的組合COLOR

還有 這個是verbo essere 就是 是 的意思 讀音稍微比e強一點不過聽不怎麼出來 可能剛開始不太好區分不過要是有一點基礎之後就懂了 quale 是 哪個di 是 的nel 是 在.裡in也差不多 d800e qual單反如何設定 按住qual按鈕,撥動旋轉盤選擇 格式用的,有raw,jpg...

和有啥區別, 和 的區別

青菜愛豆腐 和 主要從含義不同 執行動作的人不同和語氣不同來區別。一 含義不同 意思是 我一下,表示請對方做某事。例如 私 山田先生 日本語 教 我請山田老師教日語。意思是請允許我做.表示請對方允許自己做某事。二 執行動作的人不同 表示請對方做某事,執行動作的人是別人,是請別人做事。例如 教 你能教...

請問和的區別,日語語法。 和 的區別。

小貝貝老師 和 的區別為 指代不同 用法不同 側重點不同。一 指代不同 1 變成。例句 彼女 寛容 好 她變得寬容多了,也愛說話了。2 成為 例句 彼 說教 好 他變得更喜歡說教了。二 用法不同 1 意思是 成為,變得 狀況 開始 発展 終了 変化 表 悪 向 2 意為 成為,變成 正式用語 良 指...