Java String的兩種賦值方式及區別

2021-06-28 17:27:25 字數 777 閱讀 7356

1、string s ="abc"(採用字面值方式賦值)

(1)查詢string pool中是否存在「abc」這個物件,如果不存在,則在stringpool 中建立乙個「abc」物件,然後將string pool中的這個「abc」物件的位址返回來,賦給引用變數s,這樣s會指向string pool中的這個「abc」字串物件

(2)如果存在,則不建立任何物件,直接將string pool中的這個「abc」物件位址返回來,賦給s引用

example:

string s1 = "abc";

string s2 = "abc";

system.out.println( s1 == s2);

2、string  s = new string("abc");(使用new的方式賦值)

(1)首先在string pool 中查詢 有沒有「abc」這個字串物件,如果有,則不在string pool中建立「abc」這個物件了,直接在堆中建立乙個「abc」字串物件,然後將堆中的這個「abc」物件的位址返回來,賦給s引用,導致s指向了堆中建立的這個「abc」字串物件。

(2)如果沒有,則首先在string pool中建立乙個「abc」物件,然後再在堆中建立乙個「abc」物件,然後將堆中的這個「abc」物件的位址返回來,賦給s引用,導致s指向了堆中所建立的這個「abc」物件

example:

string s1 = new string("abc");

string s2 = 「abc」;

system.out.println( s1 == s2);

陣列中的兩種賦值方式

我們知道,變數的三要素是 資料型別 變數名 值,那麼賦值給b變數有兩種賦值方式有兩種,分別是值傳賦值和用賦值,那麼兩者之間有什麼區別呢?1 傳值賦值 傳值賦值是將變數的值複製出乙份新的值 值是一樣的 只是在記憶體中出現兩份不同的記憶體空間。將新值記憶體空間位址賦值給新的變數名字。修改兩個變數的值時還...

字串賦值的兩種形式的區別

字串的表現形式有兩種 一種是以字元陣列的形式,如char buf 20 i love china 另一種是以字元指標的形式,如char str i love china 現將乙個字串賦值給乙個字元陣列或乙個字元指標 char buf 20 char str buf i love china strc...

mysql的兩種引擎 mysql的兩種儲存引擎

背景 最近在使用spring data jpa操作mysql,在使用jpa的自動建表功能之後,處理多對多關係 manytomany的時候,spring data jpa會給中間表的兩個欄位都加上外來鍵引用。當前使用的版本預設的資料庫儲存引擎為myisam。這種儲存引擎是為資料庫查詢效能而生的,不支援...