什麼都不說了, 一切都在**裡:
1string
a1 =
"aaa
";
//在堆中分配"aaa"
2string
a2 =
"aaa
";
//堆中已有"aaa", 則不再給"aaa"分配新空間,a2指向a1的位址
3string
a3 =
newstring("
aaa"
.tochararray());
//new產生新的物件,分配新的空間45
console.writeline(
object
.referenceequals(a1,
"aaa
"));
//ture
6console.writeline(
object
.referenceequals(a1, a2));
//true
7console.writeline(
object
.referenceequals(a1, a3));
//false89
string
b1 =
"bbb";
1011
string
c1 =
"aaabbb
";
//定義"aaabbb"
12string
c2 =
"aaa"+
"bbb
";
//"aaa"和"bbb"都是常量, 合成為"aaabbb"指向c1
13string
c3 =
a1 +
"bbb
";
//a1是變數, 則給c3分配新的空間
14string
c4 =
a1 +
b1;
//同上, c4分配新的空間
15string
c5 =
a1 +
b1;
//同上, c5分配新的空間
1617
console.writeline(
object
.referenceequals(c1, c2));
//true
18console.writeline(
object
.referenceequals(c1, c3));
//false
19console.writeline(
object
.referenceequals(c1, c4));
//false
20console.writeline(
object
.referenceequals(c3, c4));
//false
21console.writeline(
object
.referenceequals(c5, c4));
//false
關於String中建立物件的區別
string的建立方式一般有兩種,一種是常見的new string 如string s1 new string ab 另一種是字面量賦值,如string s2 ab 第一種物件的建立方式會建立兩個物件,乙個是new建立的物件,乙個是在字串常量池中建立 ab 字串。第二種方式是直接在字串常量池中建立 ...
String返回引用
string str2 new string str new string 01 str2.intern string str1 str01 system.out.println str2 str1 在jdk 1.7下,當執行str2.intern 時,因為常量池中沒有 str01 這個字串,所以會...
關於js物件引用的小例子
看完下面的 相信對js物件引用又有了新的認識,直接上 1 split 把字串分割成字串陣列2 reverse 會改變陣列本身,並返回原陣列的引用 3var arr1 john split arr1 j o h n 45 var arr2 arr1.reverse arr1 arr2 n h o j ...