string的一些特殊點

2022-09-16 05:00:12 字數 1170 閱讀 5854

無論是string還是new string最終都指向了string constant pool中,只不過是string直接指向了stringconstant pool中。而new string是在heap中建立了乙個指向string constant pool中的引用。

j**a中,如果定義了string型別的字串,最終的都存在string constant pool中。

string constant pool就是jvm規範中所謂的方法區。

乙個物件由物件頭,物件實際資料,以及對齊填充(可能存在)三部分組成。

new乙個物件會有兩個東西占用記憶體,引用和例項。

new乙個object物件占用24個位元組(64位) 或 12個位元組(32位)

在j**a虛擬機器(jvm)中存在著乙個字串池,其中儲存著很多string物件,並且可以被共享使用,因此它提高了效率。由於string類是final的,它的值一經建立就不可改變,因此不用擔心string物件共享而帶來程式的混亂。

string str = new string("abc"); 建立了幾個物件?

乙個或兩個:abc 字串之前沒有用過,這毫無疑問建立了兩個物件,乙個是new  string 建立的乙個新的物件,乙個是常量「abc」物件的內容建立出的乙個新的string物件。

如果之前建立了『abc』字串,則只建立了乙個物件。

建立乙個類的例項(物件)的方法有以下兩種:

一、使用new建立物件。

二、呼叫class類的newinstance方法,利用反射機制建立物件。

string比較特殊,有第三種方式,

string str="abc";

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

string a="abc";,這行**被執行的時候,j**a虛擬機器首先在字串池中查詢是否已經存在了值為"abc"的這麼乙個物件,它的判斷依據是string類equals(object obj)方法的返回值。如果有,則不再建立新的物件,直接返回已存在物件的引用;如果沒有,則先建立這個物件,然後把它加入到字串池中,再將它的引用返回。

棧(stack):主要儲存基本型別(或者叫內建型別)(char、byte、short、int、long、float、double、boolean)和物件的引用,資料可以共享,速度僅次於暫存器(register),快於堆。

堆(heap):用於儲存物件

一些特殊的集合

1.stack集合 棧 stack,先進後出,乙個乙個賦值,乙個乙個取值,按順序。屬性和方法 count 取集合內元素的個數 push 將元素乙個乙個推入集合中 pop 將元素乙個乙個彈出集合 clear 清空集合 2.queue 佇列集合 先進先出,乙個乙個的賦值,乙個乙個的取值,按照順序。屬性和...

學習String相關知識點的一些心得

關於string,平時用的不少,可離完全理解也還差些。string用於 來定義字串,方法也挺多。首先來說說方法 比較類 equals string str equals string str 在string型別進行比較時是比較的字串是否相同如 如果為真則返回true,否則則返回false。strin...

npm的一些特殊使用

package.json scripts指定了執行指令碼命令的npm命令列縮寫,比如start指定了執行npm run start時,所要執行的命令。bin項用來指定各個內部命令對應的可執行檔案的位置。簡要來說,bin是執行乙個可執行檔案,scripts是批量執行一些任務。bin npm會尋找這個檔...