激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - Java教程 - Java中的==使用方法詳解

Java中的==使用方法詳解

2022-01-21 11:43It一zhai男 Java教程

這篇文章主要給大家介紹了關于Java中的==使用方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Java中的==

Java中的==表示的是什么呢?有時候很令人費解。比如,以下例子輸出是什么?

		// 例一
		String str = "wo";
		String str1 = "wo";
		System.out.println("例一:" + (str == str1));

		// 例二
		String str2 = new String("wo");
		String str3 = new String("wo");
		System.out.println("例二:" + (str2 == str3));

		// 例三
		int i1 = 1;
		int i2 = 1;
		System.out.println("例三:" + (i1 == i2));

		// 例四
		TestObject t1 = new TestObject();
		TestObject t2 = new TestObject();
		System.out.println("例四:" + (t1 == t2));

其中,TestObject是自定義的一個類,結構如下:

package com.yds.test;

public class TestObject {
	public TestObject(){
		
	}
}

最終的結果輸出什么呢?結果如下:

例一:true
例二:false
例三:true
例四:false

其實,在Java中,如果是基本數據類型,則 == 比較的是值;如果是對象類型,則 == 比較的是對象的地址。但是,有時候會疑惑,String不是對象類型么?為什么例一是true呢?這個就要談談字符串常量池的問題。

 

2 字符串常量池

String類是我們平常項目中使用頻率非常高的一種對象類型,JVM為了提升性能和減少開銷,避免字符串的重復創建,維護了一塊特殊的內存空間,即字符串常量池。當需要使用字符串時,先去字符串常量池查看該字符串是否已經存在,如果存在,則可直接使用;如果不存在,初始化,并將該字符串放入到字符串常量池中。

在JDK1.6及之前版本,字符串常量池在方法區中

在JDK1.7及以后版本,字符串常量池移到了堆中

使用String str=“wo”,可能創建一個或者不創建對象。如果“wo”在字符串常量池中已經存在,則不會再創建String類型的值為“wo”的對象,而是將str指向這個“wo”對象內存地址,后續無論用這種方式創建多少個指向“wo”的引用,在內存中,都只有一個“wo”內存地址被分配。而==判斷的是對象內存的地址,所以例一返回true。下圖是用這種方式創建字符串的示例圖。

Java中的==使用方法詳解

對象存放在堆中,字符串常量池是堆中一塊特殊區域,new出來的是對象,字符串可以通過直接賦值創建一個對象,如上所述。

對象的引用存放在棧中,String str是對象的引用

在上圖中,棧存放的是字符串的引用,str和str1存放的都是對象“wo”的內存地址,==判斷對象時,判斷的是他們存儲的內存地址是否相同,由上圖可見,他們的內存地址是相同的,所以例一輸出的是true。

Java中的==使用方法詳解

例二的兩個字符串都是通過new的方式創建對象的,所以在堆上有兩個String對象,且這兩個對象指向字符串常量池中的同一個對象“wo”,如上圖所示,此時str2和str3存儲的對象地址就不相同,所以例二返回的是false。

String str = new String(“wo”)創建了幾個對象?如果字符串常量池中沒有“wo”,則該句創建了兩個對象,首先會創建一個“wo”存放在字符串常量池中,其本身就是一個對象;然后會new 一個字符串對象,并將“wo”的引用返回給new出來的對象;如果字符串常量池中有“wo”,則該句只創建了一個對象,因為該句首先會查找字符串常量池中是否存在“wo”,如果存在則直接返回"wo"的引用給new出來的對象。

 

3 總結

==使用總結

如果是基本數據類型,==判斷的是值

如果是對象類型,==判斷的是對象的地址

通過直接賦值而不是new的方式給String賦值,如果字符串常量池中有該對象,則不會再創建,此時通過 == 判斷,返回的是true。如:String str=“wo”;String str1=“wo”;str == str1為true.
在JDK1.6及以前版本,字符串常量池在方法區中;在JDK1.7及以后,字符串常量池在堆中。
對象的引用保存在棧中

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

原文鏈接:https://blog.csdn.net/u013293125/article/details/95922847

延伸 · 閱讀

精彩推薦
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

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

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一個注意事項

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

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

    阿杜7482021-02-04
  • Java教程20個非常實用的Java程序代碼片段

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

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

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

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

    富貴穩中求8032021-07-12
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

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

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

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

    大行者10067412021-08-30
  • Java教程升級IDEA后Lombok不能使用的解決方法

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

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

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

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

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

    spcoder14552021-10-18
主站蜘蛛池模板: 国产精品美女一区二区 | 亚洲天堂在线电影 | 亚洲精品aⅴ中文字幕乱码 中文字幕欧美在线 | 国产日产精品久久久久快鸭 | 久久久精品视频在线观看 | 久久精品一区二区三区不卡牛牛 | 亚洲3atv精品一区二区三区 | 精品国产一区二区久久 | 91中文字幕在线观看 | 色啪综合 | 免费国产wwwwwww网站 | 青青久在线视频 | av成人免费| 一级黄片毛片免费看 | 欧美福利视频一区二区三区 | 免费日本一区二区 | 国产成人自拍av | 国产精品视频免费在线观看 | 依人网站 | 欧美精品激情视频 | 在线 日本 制服 中文 欧美 | 亚洲视频在线观看免费 | 久久天| 色污视频| 精品在线视频观看 | 国产精品区在线12p 午夜视频色 | 伊人午夜| 国av在线 | 久久久久久久一区 | 久操免费在线视频 | 一区二区免费网站 | 欧美三级一级 | 欧美性猛交一区二区三区精品 | 一区二区久久精品66国产精品 | 九色激情网 | 美国一级黄色毛片 | 亚洲欧洲日产v特级毛片 | 激情小说激情电影 | 欧美一区二区三区久久综合 | 色成人在线 | 看片一区 |