課程
/后端開發
/Java
/Java入門第三季
還是沒有明白為什么s3==s4返回false
2017-01-09
源自:Java入門第三季 2-2
正在回答
內存地址是不同的,s4在s3之后將"I love imooc "+s1 賦值給s4.此時開辟了新的內存空間./.
以上為個人理解.錯誤之處望各位斧正
粗略來説,“==”是看兩個字符串的內存地址是不是相同,”equals“ 就是看它們的字符是不是相同的
你可以看看相關博客好好研究一下內存分析
比較值是否相等應該用equal,但是這里用equal卻不行,這是我為什么
public class HelloWorld {
? ? public static void main(String[] args) {
// 定義一個字符串
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
? ? ? ??
? ? ? ? // 出現次數
int num = 0;
? ? ? ? ?// 循環遍歷每個字符,判斷是否是字符 a ,如果是,累加次數
for ( int i=0;i<=s.length()-1;i++)
{
? ? ? ? ? ? // 獲取每個字符,判斷是否是字符a
if (charAt(i).equal('a')) {
? ? ? ? ? ? ? ? // 累加統計次數
num++;?
}
System.out.println("字符a出現的次數:" + num);
}?
凌晨四點D洛杉磯
String類型或其他的引用類型的變量中存放的是對象的地址,并不是對象本身,這點和int,char等一些基本數據類型是不同的,由于s3和s4存儲的并不是同一個對象,所以s3和s4存儲的對象的地址值也就不同,s3也就不等于s4了,但s3.equals(s4)不同,s3.equals(s4)是將s3和s4所引用的對象分別給取出來,比較的是對象本身,當s3和s4所指向的對象相同時,s3.equals(s4)也就相同了,要是不好理解請看下圖更直觀
沒有夢想的咸魚
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答各位大神請幫忙
3 回答求各位大神幫忙
1 回答求大神幫忙解釋
4 回答各位大佬幫忙看下
1 回答哪位大神能幫忙詳細解答下
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-04-04
內存地址是不同的,s4在s3之后將"I love imooc "+s1 賦值給s4.此時開辟了新的內存空間./.
以上為個人理解.錯誤之處望各位斧正
2017-03-29
粗略來説,“==”是看兩個字符串的內存地址是不是相同,”equals“ 就是看它們的字符是不是相同的
你可以看看相關博客好好研究一下內存分析
2017-01-10
比較值是否相等應該用equal,但是這里用equal卻不行,這是我為什么
public class HelloWorld {
? ? public static void main(String[] args) {
// 定義一個字符串
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
? ? ? ??
? ? ? ? // 出現次數
int num = 0;
? ? ? ??
? ? ? ? ?// 循環遍歷每個字符,判斷是否是字符 a ,如果是,累加次數
for ( int i=0;i<=s.length()-1;i++)
{
? ? ? ? ? ? // 獲取每個字符,判斷是否是字符a
if (charAt(i).equal('a')) {
? ? ? ? ? ? ? ? // 累加統計次數
num++;?
}
}
System.out.println("字符a出現的次數:" + num);
}
}?
2017-01-09
String類型或其他的引用類型的變量中存放的是對象的地址,并不是對象本身,這點和int,char等一些基本數據類型是不同的,由于s3和s4存儲的并不是同一個對象,所以s3和s4存儲的對象的地址值也就不同,s3也就不等于s4了,但s3.equals(s4)不同,s3.equals(s4)是將s3和s4所引用的對象分別給取出來,比較的是對象本身,當s3和s4所指向的對象相同時,s3.equals(s4)也就相同了,要是不好理解請看下圖更直觀