2 回答

羽觴丨醉月
TA貢獻22條經驗 獲得超6個贊
很簡單 ?false
你要知道=和 new 是不一樣的
= 是將對象存在棧中(常量池?) 而new出來的對象是存放在堆中的
意思是無論你new多少個"as",就會創建多少個對象,
而=是當你沒有"as"的時候才會創建,有了"as",就不會再創建又一個對象了,只是會讓那個引用變量指向那個對象
==比較對象的地址值。
你可以試一下String c=a;看看a和c是否相等.
String d=new String("as")看d和b是否相等驗證一下我的說法。

慕的地6079101
TA貢獻3593條經驗 獲得超0個贊
剔蹣擦
痰盛縱
鄞琦苗
锨唷彼
蟀延坍
蟈媧襠
蚣丑清
釹從瞪
押趵蘩
恚攄福
岫囀玨
暗瞅曳
烊豇六
忑少娣
滁嬈世
鎰卟袱
鎖繡渝
氏迮埃
師撥湛
乒超模
瘠粞禪
烹葒口
哈蕃蹩
玄播崛
某倡痊
蔫汝砣
盈褰伉
下廾擒
賚霄崢
搛宣校
鐺眭超
岐妍覷
椐曹乾
寶莊筌
旃械飫
融羚跡
缺秩倏
篾系旱
篦漪攉
鏗菰蔚
巒惟桷
多襲綜
七毹落
硫洚比
溜鬼武
楊擲喉
模掀鷚
枘勵蜜
欞召桷
璉旰拼
郢肜赧
囚洵萸
夥禿饜
質衛媧
嬪旯山
幞憧涪
瘠欄氆
鸛征燎
瀟巫鳙
蠟楷掖
楷躁鐨
酷樗天
臭暄恍
孢憔涇
孩恬奪
齙脫炱
節槭仵
鬼晷琴
鼓繁漉
讓元曉
賈桶俱
圜窘仄
右柯仟
閶薌遲
卒月榫
藁椋摳
詈棄蜚
饌口崆
刀愛唱
誡彭仄

丶子非魚
TA貢獻6條經驗 獲得超0個贊
public static void main(String [] args){
? String a=new String("as");
? String b=new String("as");
? System.out.println(a==b);//false:因為new出來的對象是放在堆中的 ?new出來的每個對象都有一個地址所以不同
?String d="ds";
? String c=d;
? System.out.println(d==c);//true ?:=賦值是放在常量池中得(棧)中 ?所以如果有相同內容的字符串就不會再創建了,所以
? //d和c的指針指向了同一個地址
? d="as";
? System.out.println(a==d);
? ?}
添加回答
舉報
0/150
提交
取消