一文讀懂之 與equals的區別

2021-09-29 21:34:03 字數 1352 閱讀 5476

答案是沒有區別。

是不是很吃驚!

我們一般認為的區別是:==進行數值比較。equals進行物件(字串、內容)比較。

直接用equals比較兩個物件,比較的是物件在堆記憶體中的首位址。所以除非棧種引用的是同乙個首位址,否則都不想等。

來看jdk原始碼。

sun公司的程式設計師底層也是用" = ="來定義equals方法的,所以他倆沒區別,真的不是譁眾取寵。

那麼我們如何來用equals來實現物件內容或者字串比較呢?

答案是重寫sun公司提供的equals方法,其實我們也能想到,當我們進行物件間屬性的比較的時候,sun公司怎麼能知道任何乙個程式設計師定義什麼屬性。

如下,我定義了乙個student類,這個類裡邊有name,age,score成績屬性

class

student

public

intgetage()

public

intgetscore()

public

student

(string name,

int age,

int score)

}

那麼當我建立多個物件的時候,如何判斷他們內容是否相同呢?

//重寫equals

@override

public

boolean

equals

(object obj)if(

!(obj ==

this))

student stu =

(student) obj;

//多型if(

!(this

.age == stu.age))if

(!(this

.name == stu.name))if

(!(this

.score == stu.score)

)return

true

;}

最後想說的是,這麼麻煩的是,其實idea有快捷工具,不用我們每次手動重寫,

還有就是string本身已經重寫了equals方法,所以字串比較直接用就行。

一文讀懂Nginx

問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...

一文讀懂SpringMVC

主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...

堆疊 一文讀懂

堆疊 stack 是一種先進後出的 操作受限的線性表,也可以直接稱為棧。可以把棧想象成乙個桶一樣,往這個桶裡面一層一層的放東西,先放進去的在裡面,後放進去的東西依次在外面。但取東西的時候就是先取靠近外面的,再依次一層層取裡面的。這就是 後進先出 last in first out 的原則。因此 棧 ...