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

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

加粗斜體部分為什么只能用 == 而不能用equals()?不是說==比較的是引用地址嗎? a 字符應該是內容吧

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)=='a') {

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

num++;?

}

}

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

}

}


正在回答

5 回答

java中的數據類型,可分為兩類:
1.基本數據類型,也稱原始數據類型。byte,short,char,int,long,float,double,boolean
?他們之間的比較,應用雙等號(==),比較的是他們的值。
2.復合數據類型(類)
?當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址,所以,除非是同一個new出來的對象,他們的比較后的結果為true,否則比較后結果為false。 JAVA當中所有的類都是繼承于Object這個基類的,在Object中的基類中定義了一個equals的方法,這個方法的初始行為是比較對象的內存地 址,但在一些類庫當中這個方法被覆蓋掉了,如String,Integer,Date在這些類當中equals有其自身的實現,而不再是比較類在堆內存中的存放地址了。
?對于復合數據類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是基于他們在內存中的存放位置的地址值的,因為Object的equals方法也是用雙等號(==)進行比較的,所以比較后的結果跟雙等號(==)的結果相同。

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

默默努力的友人A

基本數據類型,應用雙等號(==),比較的是他們的值。 復合數據類型(類) 用(==)進行比較的時候,比較的是他們在內存中的存放地址,而equals的方法原本也是比較地址的,但在一些類庫當中這個方法被覆蓋掉了,如String,Integer,Date在這些類當中equals有其自身的實現,而不再是比較類在堆內存中的存放地址了,就是所謂比較值。
2019-12-06 回復 有任何疑惑可以回復我~
#2

默默努力的友人A

是不是這樣認為呢?如果是 題目中String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd"; 因為是string 那用equals比較的就是值?為什么不能單獨用equals呢 a是值???能再稍微詳細講下嗎?
2019-12-06 回復 有任何疑惑可以回復我~
  1. 基本數據類型,應用雙等號(==),比較的是他們的值。?

  2. 2.復合數據類型(類)?用(==)進行比較的時候,比較的是他們在內存中的存放地址,?

    而equals的方法原本也是比較地址的,但在一些類庫當中這個方法被覆蓋掉了,如String,Integer,Date在這些類當中equals有其自身的實現,而不再是比較類在堆內存中的存放地址了,就是所謂比較值。

    是不是這樣認為呢?

    如果是

    題目中String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd"; 因為是string 那用equals比較的就是值?為什么不能單獨用equals呢 a是值?。坑写罄兄绬??


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

// 定義一個字符串

String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

? ? ? ??

? ? ? ? // 出現次數

int num = 0;

? ? ? ??

? ? ? ? ?//把字符串s轉換為byte數組并for循環(huán);定義一個字符串a并轉換為byte數組;兩個數組進行比較

byte[] ch = s.getBytes();

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

String str = "a";

byte[] br = str.getBytes();

if(br[0] == ch[i]){

num++;

}

}

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

}



https://img1.sycdn.imooc.com//5cee80fe0001f24d06750331.jpg


0 回復 有任何疑惑可以回復我~
charAt獲取的是字符char,char沒有equals方法,得先轉成Character才能用equals

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?(((Character)(s.charAt(i))).equals('a')){
????????????????//?累加統(tǒng)計次數
????????????????num++;
????????????}
????????}
????????System.out.println("字符a出現的次數:"?+?num);
????}
}
5 回復 有任何疑惑可以回復我~

charAt()是獲取字符,‘a’是字符,你說的區(qū)別是比較字符串

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

舉報

0/150
提交
取消

加粗斜體部分為什么只能用 == 而不能用equals()?不是說==比較的是引用地址嗎? a 字符應該是內容吧

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

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

幫助反饋 APP下載

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

公眾號

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