Java學習筆記 基礎知識學習8 字串比較

2021-06-16 20:53:12 字數 935 閱讀 2735

我們現在來看看字串的比較,先看一段**:

void stringcompare()

輸出的結果是true,true

也就是兩種方法比較都是得到相等的結論。

astring==bstring這種我們習慣用的方法是第一種方法;

astring.equals(bstring)是另一種方法,是肯定不會出問題的。

如果astring和bstring中的內容相同,就會得到true的結論。如果使用的是「astring==bstring」這種判斷方式,有可能兩個字串相同,得到的結論卻是「兩個字串不相等」;

下面的例子可以說明這點,下面的**由上面的**修改得到:

void stringcompare()
上面的這個**就會得到乙個完全相反的結論:

123=123:false

using equals:true

明明astring和bstring一樣的啊,為什麼又不同了?前面的例子為什麼又不一樣了?

其實,第

一、二個例子中,string astring="123";這個語句都是實現建立乙個string類的變數。又兩個都是等於「123」,所以,這兩個變數實際上指向同乙個記憶體區,這個記憶體區儲存著「123」這個常量。

所以,由於他們指向的是同乙個記憶體區域,所以,前面的那個例子一中「astring==bstring」能夠為true,實際上是因為他們都是指向同乙個位址。而:

第二個例子中,由於我是使用「

"we hate japen's"+j+" army";來合成的字串,並不是將記憶體中固定的哪個位址區域給了這兩個變數名。所以,他們指向記憶體中的是不同的區域了,而且,其中的文字內容又是相同的。

所以,前後兩個示例**中,astring.equals(bstring)這個判斷方法始終給出了正確的答案,即二者內容相等。

Java學習筆記 基礎知識學習13 Map

接下來是map介面的資訊,常用的方法 put key k,value v 將乙個鍵和乙個值,傳入map containskey object key 返回邏輯值,如果key存在,則返回true,否則返回false containsvalue object value 返回邏輯值,如果value存在,...

Java學習筆記 基礎知識學習10 繼承與多型

繼承的重要意義就不多廢話的,簡單來說就是通過繼承某個類,可以避免重複寫 例如。寫好了人這個類。接下來,要寫乙個廚師的類,於是,因為我知道廚師是人,所以我看可以在人這個類的基礎上,加上一些東西,形成廚師這個類,所以,我就決定繼承人這個類,加上一些特性,形成廚師。繼承的時候,涉及到繼承的許可權的問題,會...

Python學習筆記 基礎知識

coding cp936 此行是為了和linux的平台保持相容,是用來告訴shell執行時,去用 bin python來解釋執行 bin python 此行指明了編碼方式,預設是utf 8,如果我們要輸出中文或者採用中文的注釋,就會出現錯誤 coding gb2312 python特色一 三引號注釋...