第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么不可以調用equals方法

為什么不可以設置一個字符串,字符串內容是“a”(String ch = "a"),然后調用equals方法,與s.charAt(i)進行比較( ?ch.equals(s.charAt(i)) ?)?不也是一樣的內容嗎?為什么一定是同一個字符,而不能是內容相同呢??求解

正在回答

9 回答

s.charAt(i)返回的值是char是一個基本類型,用==比較就可以了,只有當是引用類型的時候用equals會比較好

19 回復 有任何疑惑可以回復我~
#1

楊云亭

引用類型是?
2015-01-08 回復 有任何疑惑可以回復我~
#2

慕娘2181525 回復 楊云亭

String類型的就是引用類型,你也可以s.charAt(i)+""這樣轉化成String類型,然后(s.charAt(i)+"").equals("a")就可以比較了。
2016-08-23 回復 有任何疑惑可以回復我~
#3

不看6324不混吃等死 回復 慕娘2181525

???
2017-01-06 回復 有任何疑惑可以回復我~
#4

城序圓 回復 慕娘2181525

軟軟問句,為什么加了“”就變成string?
2019-03-11 回復 有任何疑惑可以回復我~
查看1條回復

equals表示兩個字符串完全相同,是來自同一對象的引用,地址相同。而==表示僅僅是字符串內容相同,地址不一定一樣。

1 回復 有任何疑惑可以回復我~
#1

月影下

說反了
2017-05-24 回復 有任何疑惑可以回復我~

public static void main(String[] args) {

/* String str="學習 JAVA 編程 ";

System.out.println("獲取1位置字符"+str.charAt(1));

byte[]b=str.getBytes();

for(byte a:b){

System.out.print(a+" ");

*/

String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

? ??

? ? // 出現次數

int num = 0;

? ??

? ? ?// 循環(huán)遍歷每個字符,判斷是否是字符 a ,如果是,累加次數

for (int i=0;i<s.length();i++ ? ? ? ? ? ? ? ? ? ? ? )

{String b=s.substring(i,i+1);

? ? ? ? // 獲取每個字符,判斷是否是字符a

if (b.equals("a") )

//(s.charAt(i) +" ").equals("a"))

{

? ? ? ? ? ? // 累加統(tǒng)計次數

num++;?

}

}

System.out.println("字符a出現的次數:" + num);

}

這樣子也行


0 回復 有任何疑惑可以回復我~
#1

tigerAndBull

為什么直接用s[i]不行
2017-05-16 回復 有任何疑惑可以回復我~
#2

慕娘4342957 回復 tigerAndBull

數組才能用s[i]呀,s是字符串
2017-08-12 回復 有任何疑惑可以回復我~
#3

城序圓

想問下,就是if給您注釋的那一段,去掉“”怎么就不行了?萌新不太懂,可以回復下嗎哈
2019-03-11 回復 有任何疑惑可以回復我~

字符的比較會不會是比較ASCII碼的值呢,因為感覺s.charAt(i)= = 'a'不太可能是同一個內存地址

0 回復 有任何疑惑可以回復我~
#1

慕容6636443

另外equals()在object類里最初是用來比較是否指向同一內存空間,只在個別類里重寫/覆蓋成比較值是否相等(比如String,Integer,Date等),基本類型可以用= = 判斷,應該就沒有重寫/覆蓋equals吧。然后我不太確定(s.charAt(i)).equals(‘a’)有沒有給s.charAt(i)或a分配內存空間,但是如果有的話應該返回false吧,因為指向的內存空間不一樣
2016-09-01 回復 有任何疑惑可以回復我~

equal方法是String類型的方法,而char是基本數據類型,不是一個類,是沒有equal方法的,多想想類的概率,對象的該類,Java是面向對象的語言,需要慢慢體會,String源碼也非常簡單,可以自己看看找出定義的equal方法

1 回復 有任何疑惑可以回復我~

public class HelloWorld {

? ? public static void main(String[] args) {

// 定義一個字符串

String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";


? ? ? ? // 出現次數

int num = 0;

? ? ? ??

? ? ? ? ?// 循環(huán)遍歷每個字符,判斷是否是字符 a ,如果是,累加次數

for (int i = 0 ; i < s.length(); i++){

? ? ? ? ? ? // 獲取每個字符,判斷是否是字符a

if ((s.charAt(i) + "").equals("a")) {

? ? ? ? ? ? ? ? // 累加統(tǒng)計次數

num ++;?

}

}

System.out.println("字符a出現的次數:" + num);

}

}


2 回復 有任何疑惑可以回復我~

equals 是引用類型String的方法,而s.charAt(i)返回的是一個字符,是一個基本數據類型的數據,不是一個對象,所以沒有equals方法。(有問題請批評指出啊,3q)

20 回復 有任何疑惑可以回復我~
#1

qq_卡卡羅特_5

對對對,equals()方法需要對象來引用。。。
2017-10-15 回復 有任何疑惑可以回復我~

因為.equals 只能比較類型相同的兩個對象內容,如果你把char轉換成string就可以用了,比如:

if ((s.charAt(i)+"").equals("a"))

1 回復 有任何疑惑可以回復我~
#1

長頸鹿在附近

你這樣是不行的。char不能轉成String
2015-12-06 回復 有任何疑惑可以回復我~
#2

波浪波浪海海 回復 長頸鹿在附近

可以的 你試一試~
2016-02-01 回復 有任何疑惑可以回復我~

equals方法是比較兩個字符串是否相等,而這里charAt()方法返回的是一個字符型,兩個類型都不相同的變量,如何用equals比較?所以這里用字符型的數據采用==進行比較

2 回復 有任何疑惑可以回復我~
#1

楊云亭

equals方法比較的是兩個字符串的內容是否相同,==比較的是兩個字符串的內存地址,比較的都是字符串,那==也可比較字符型,equals不能嗎?
2015-01-08 回復 有任何疑惑可以回復我~
#2

武當王也 回復 楊云亭

你應該補補基礎,首先你得明白==是用來干嘛的,第二你得了解,java語言中有哪些數據類型,就兩種,自己百度,或者看書,char屬于基本類型,==對于基本數據類型來說,作用只是比較他們是否一樣,例如1==1,'a'=='a',而string是屬于引用類型,==運算符就不是比較他們的值,而是比較虛地址,比較值,有專門的equals方法。
2015-09-09 回復 有任何疑惑可以回復我~
#3

君未知 回復 武當王也

講的透徹!
2018-01-14 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么不可以調用equals方法

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號