加粗斜體部分為什么只能用 == 而不能用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);
}
}
2019-04-20
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方法也是用雙等號(==)進行比較的,所以比較后的結果跟雙等號(==)的結果相同。
2019-12-06
基本數據類型,應用雙等號(==),比較的是他們的值。?
2.復合數據類型(類)?用(==)進行比較的時候,比較的是他們在內存中的存放地址,?
而equals的方法原本也是比較地址的,但在一些類庫當中這個方法被覆蓋掉了,如String,Integer,Date在這些類當中equals有其自身的實現,而不再是比較類在堆內存中的存放地址了,就是所謂比較值。
是不是這樣認為呢?
如果是
題目中String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd"; 因為是string 那用equals比較的就是值?為什么不能單獨用equals呢 a是值?。坑写罄兄绬??
2019-05-29
// 定義一個字符串
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);
}
2019-04-28
2019-04-20
charAt()是獲取字符,‘a’是字符,你說的區(qū)別是比較字符串