一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java中equals和==的區別詳解

Java中equals和==的區別詳解

2022-01-21 11:48BarneyZhang Java教程

這篇文章主要介紹了詳解 Java 中 equals 和 == 的區別的相關資料,equals 和 == 都是用來檢測兩個字符串是否相等,返回值也都是布爾型,但是兩者在內部比較的處理中卻不盡相同需要的朋友可以參考下

1.java中的數據類型,可分為兩類:

1.基本數據類型,也稱原始數據類型。

byte,short,char,int,long,float,double,boolean

他們之間的比較,應用雙等號(==),比較的是他們的值。

2.復合數據類型(類)

當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址,所以,除非是同一個new出來的對象,他們的比較后的結果為true,否則比較后結果為false。JAVA當中所有的類都是繼承于Object這個基類的,在Object中的基類中定義了一個equals的方法,這個方法的初始行為是比較對象的內存地址,但在一些類庫當中這個方法被覆蓋掉了,如String,Integer,Date在這些類當中equals有其自身的實現,而不再是比較類在堆內存中的存放地址了。

對于復合數據類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是基于他們在內存中的存放位置的地址值的,因為Object的equals方法也是用雙等號(==)進行比較的,所以比較后的結果跟雙等號(==)的結果相同。

?
1
2
3
4
5
6
7
8
9
10
11
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = "Monday";
if (s1 == s2)
{
System.out.println("s1 == s2");}
else{
System.out.println("s1 != s2");}
}
}

編譯并運行程序,輸出:s1 == s2說明:s1 與 s2 引用同一個 String 對象 -- "Monday"!

2.再稍微改動一下程序,會有更奇怪的發現:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = new String("Monday");
if (s1 == s2)
{System.out.println("s1 == s2");}
else
{System.out.println("s1 != s2");}
if (s1.equals(s2)) {System.out.println("s1 equals s2");}
else{
System.out.println("s1 not equals s2");}
}
}

我們將s2用new操作符創建

程序輸出:

s1 != s2

s1 equals s2

說明:s1 s2分別引用了兩個"Monday"String對象

3. 字符串緩沖池

原來,程序在運行的時候會創建一個字符串緩沖池當使用 s2 = "Monday" 這樣的表達是創建字符串的時候,程序首先會在這個String緩沖池中尋找相同值的對象,在第一個程序中,s1先被放到了池中,所以在s2被創建的時候,程序找到了具有相同值的 s1

將s2引用s1所引用的對象"Monday"

第二段程序中,使用了 new 操作符,他明白的告訴程序:"我要一個新的!不要舊的!"于是一個新的"Monday"Sting對象被創建在內存中。他們的值相同,但是位置不同,一個在池中游泳一個在岸邊休息。哎呀,真是資源浪費,明明是一樣的非要分開做什么呢?

4.再次更改程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = new String("Monday");
s2 = s2.intern();
if (s1 == s2)
{System.out.println("s1 == s2");}
else
{System.out.println("s1 != s2");}
if (s1.equals(s2)) {System.out.println("s1 equals s2");}
else{
System.out.println("s1 not equals s2");}
}
}

這次加入:s2 = s2.intern();

程序輸出:

s1 == s2

s1 equals s2

原來,(java.lang.String的intern()方法"abc".intern()方法的返回值還是字符串"abc",表面上看起來好像這個方法沒什么用處。但實際上,它做了個小動作:檢查字符串池里是否存在"abc"這么一個字符串,如果存在,就返回池里的字符串;如果不存在,該方法會把"abc"添加到字符串池中,然后再返回它的引用。

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

原文鏈接:https://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 国产亚洲福利一区二区免费看 | www.俺去啦| 帅老头恋帅老头同性tv | 精品国产自在在线在线观看 | 2022国产麻豆剧传媒古装 | 女人用粗大自熨喷水在线视频 | 人人人人人看碰人人免费 | 国产亚洲女在线精品 | 青草视频在线观看免费视频 | 国产亚洲视频在线 | 久久亚洲免费视频 | 久久久黄色片 | 草莓视频幸福宝 | www.国产一区二区三区 | 日韩国产成人精品视频 | 免费看男人使劲躁女人小说 | 精品一区二区三区视频日产 | 四虎成人免费视频 | 亚洲精品一区制服丝袜 | chinesemature丰满成熟 | 日本在线播放视频 | 无限国产资源 | 亚洲人成在线播放 | 亚洲国产精品久久网午夜小说 | 成人网欧美亚洲影视图片 | 亚洲国产精品线在线观看 | 欧美男同猛男 videos 同性 | 午夜看片a福利在线观看 | 摸咪网在线影院在线观看 | 亚洲国产午夜看片 | 久久黄色精品视频 | 99热这里只有精品在线 | 高清在线一区二区 | 日韩天堂网 | 精品图区| 九九精品影院 | 2020国产精品亚洲综合网 | 国产馆精品推荐在线观看 | 99久久99热久久精品免费看 | www.亚洲天堂| 男生和老师一起差差差 |