課程
/后端開發
/Java
/Java入門第三季
String S1=“imooc”;
String S2=new String("imooc");
請問S1與S2區別在哪?
2016-08-11
源自:Java入門第三季 2-1
正在回答
沒區別,一個是直接定義,另一個是通過創建一個對象的方式進行定義
菜鳥的羽毛 提問者
是有區別,學語言最怕得過且過。
區別在于,第一個在字符串常量池中創建。第二個實際在堆上。如果用==來比較兩個字符串返回的是false。應為==是比較地址。字符串常量池不是棧哦
這實例化種方法一般會在堆內存中開辟兩個空間,只用一個,比較浪費資源;所以一般采用直接賦值法
個人感覺是通過S1的方式創建的字符串是存放在棧區中的,而S2的創建方式是創建在堆中的,所以二者地址不一樣,使用==得到的也是false
木吉他__秋 回復 菜鳥的羽毛 提問者
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答字符串,字符串
5 回答空字符串問題
2 回答字符串截取問題
1 回答字符串2的問題
1 回答字符串轉換為字符型
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-08-11
沒區別,一個是直接定義,另一個是通過創建一個對象的方式進行定義
2016-09-08
是有區別,學語言最怕得過且過。
2016-08-30
區別在于,第一個在字符串常量池中創建。第二個實際在堆上。如果用==來比較兩個字符串返回的是false。應為==是比較地址。字符串常量池不是棧哦
2016-08-21
2016-08-11
個人感覺是通過S1的方式創建的字符串是存放在棧區中的,而S2的創建方式是創建在堆中的,所以二者地址不一樣,使用==得到的也是false