日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

String s=new String(abc)创建了2个对象的原因

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 String s=new String(abc)创建了2个对象的原因 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:String str=new String(“abc”); 這行代碼究竟創建了幾個String對象呢?

相信大家對這道題并不陌生,答案也是眾所周知的,2個。

接下來我們就從這道題展開,一起回顧一下與創建String對象相關的一些JAVA知識。

一句話說明

第一次創建是因為傳進的參數“abc”會創建一個對象,相當于String param=“abc”,

第二次創建是因為使用new String() 來創建字符串,此時將第一次創建的對象param=”abc”,作為參數傳給String的構造方法。相當于 String str = new String(param).


—————詳細分析如下—————

分析1:我們可以把上面這行代碼分成如下四部分來看待:

String str = "abc" new String()

String str 只是定義了一個名為str的String類型的變量名,因此它并沒有創建對象;

= 是對變量str進行初始化,將某個對象的引用(或者叫句柄)賦值給它,顯然也沒有創建對象;

現在只剩下new String(“abc”)了。

分析2:那么,new String(“abc”)為什么又能被看成”abc”和new String()呢?

我們來看一下被我們調用了的String的構造器:

public String(String original) { //other code … }

大家都知道,我們常用的創建一個類的實例(對象)的方法有以下兩種:

一、使用new創建對象。 二、調用Class類的newInstance方法,利用反射機制創建對象。

我們正是使用new調用了String類的上面那個構造器方法創建了一個對象,并將它的引用賦值給了str變量。同時我們注意到,被調用的構造器方法接受的參數也是一個String對象,這個對象正是”abc”。

由此我們又要引入另外一種創建String對象的方式的討論——引號內包含文本。

這種方式是String特有的,并且它與new的方式存在很大區別。

String str=”abc”;

毫無疑問,這行代碼創建了一個String對象。

String a=”abc”; String b=”abc”; 那這里呢?

答案還是一個。

String a=”ab”+”cd”; 再看看這里呢?

答案是三個。

說到這里,我們就需要引入對字符串池相關知識的回顧了。

在JAVA虛擬機(JVM)中存在著一個字符串池,其中保存著很多String對象,并且可以被共享使用,因此它提高了效率。由于String類是final的,它的值一經創建就不可改變,因此我們不用擔心String對象共享而帶來程序的混亂。字符串池由String類維護,我們可以調用intern()方法來訪問字符串池。

我們再回頭看看String a=”abc”;,這行代碼被執行的時候,JAVA虛擬機首先在字符串池中查找是否已經存在了值為”abc”的這么一個對象,它的判斷依據是String類equals(Object obj)方法的返回值。如果有,則不再創建新的對象,直接返回已存在對象的引用;如果沒有,則先創建這個對象,然后把它加入到字符串池中,再將它的引用返回。因此,我們不難理解前面三個例子中頭兩個例子為什么是這個答案了。

只有使用引號包含文本的方式創建的String對象之間使用“+”連接產生的新對象才會被加入字符串池中。對于所有包含new方式新建對象(包括null)的“+”連接表達式,它所產生的新對象都不會被加入字符串池中,對此我們不再贅述。因此我們提倡用引號包含文本的方式來創建String對象提高效率,實際上這也是我們在編程中常采用的。

棧(stack):主要保存基本類型(或者叫內置類型)(char、byte、short、int、long、float、double、boolean)和對象的引用,數據可以共享,速度僅次于寄存器(register),快于堆。

堆(heap):用于存儲對象

總結

以上是生活随笔為你收集整理的String s=new String(abc)创建了2个对象的原因的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av电影一区二区 | 国产精品午夜未成人免费观看 | 欧洲精品免费一区二区三区 | av片子在线观看 | 动漫一区二区 | 中文字幕一区二区三区免费看 | 国产视频aaa | 少妇高清精品毛片在线视频 | 久久婷婷一区 | 找个毛片看看 | 在线永久看片免费的视频 | 琪琪色av | 一区二区久久精品66国产精品 | 91手机视频 | 欧美在线激情 | 国产视频久久 | 国产毛片一区二区三区 | 欧美日韩国产免费一区二区三区 | 国产精品99久久久久久动医院 | 国产精品69久久久久孕妇欧美 | 91国内产香蕉 | 精品日韩av | 亚洲精久| av网站天堂| 穿越异世荒淫h啪肉np文 | 国产亚洲制服欧洲高清一区 | 性生交生活片1 | 欧美日韩国产免费一区二区三区 | 999热| 精品人妻一区二区三区久久 | 男人插女人的网站 | 亚洲熟妇色自偷自拍另类 | 午夜在线你懂的 | 国产传媒在线观看 | 一区二区三区精品国产 | 福利视频一区二区三区 | 香蕉成人在线视频 | 新版天堂资源中文8在线 | jizjiz中国少妇高潮水多 | 东方影库av | 九九99久久 | 欧美性猛交ⅹ乱大交3 | 亚洲一级一区 | 成人黄色片网站 | porn麻豆 | 按摩ⅹxxx性hd中国 | 中文字幕手机在线视频 | 精品久久久久久久久久久国产字幕 | 在线观看你懂的网站 | 成年人的视频网站 | 三上悠亚一区二区在线观看 | 国产欧美精品一区二区色综合 | 日本中文字幕在线视频 | 伊人影视久久 | 精品人妻无码一区二区三区换脸 | 制服丝袜先锋影音 | 天堂福利视频 | 欧美亚洲综合视频 | 一呦二呦三呦精品网站 | 美女被出白浆 | 肥臀av | 日本免费一区二区三区 | 日韩黄色a级片 | 欧美骚视频 | 国产欧美一区二区精品性色 | 亚洲精品乱码久久久久久国产主播 | 91国产免费视频 | 91精品大片 | 成人av影院 | sese在线视频| 久久艹av| 国产手机在线 | 国产欧美一区在线观看 | 黄色亚洲网站 | 久久视 | 美国黄色片网站 | 精品人妻一区二区三区久久夜夜嗨 | 亚洲免费一区 | av观看在线免费 | 亚洲一卡二卡三卡四卡 | 中文在线字幕免费观 | 久久91| 爱情岛亚洲论坛入口 | 亚洲欧美在线观看 | 黄色小视频免费观看 | 波多野结衣1区 | 欧美激情一区二区三区在线 | 超碰免费公开 | 婷婷久久综合网 | 欧美精品在线视频观看 | 九九九九九伊人 | 国产精品免费一区二区三区 | 中国精品一区二区 | 免费极品av一视觉盛宴 | 蜜臀av性久久久久蜜臀aⅴ麻豆 | 国产欧美日韩精品区一区二污污污 | 春闺艳妇(h)高h产乳 | 亚洲一二三精品 | 香蕉伊人网 |