正如您在下面的代码注释中看到的那样,我想知道“”在以下程序中的重要性。我尝试在没有
的情况下运行程序
”,计数仍然保持为0,因此“”似乎很重要。我以为“”的功能是在字符串之间放置空格。这是在做什么非常感谢!
package js01;
import java.util.Scanner;
//search 1
//user input of an alphabet and a sentence, return a count of that alphabet
public class J0306_search {
public static void main(String[] args) {
String str1;
String ch;
//must be a string type although the input will be a chracter because the user input is taken as a string
int count=0;
int i;
Scanner s=new Scanner (System.in);
System.out.println("enter a sentence");
str1=s.nextLine();
System.out.println("enter an alphabet that u would like to count");
ch=s.next();
for (i=0;i<str1.length();i++) {
if (ch.equals(""+str1.charAt(i))) {
//why is "" needed?
//
count++;
}
}
System.out.println("count is:"+count);
s.close();
}
}
答案 0 :(得分:3)
为什么需要“”?
str1.charAt(i)
返回一个char
。 ch
是String
。如果您在equals
上使用String
并传递char
,它将自动装箱为Character
,并且equals
在类型不同时总是返回false(在正确编写的equals
中。
""+str1.charAt(i)
创建一个字符串,以便将String
传递到equals
,以便比较两个字符串以查看它们中是否包含相同的字符。 (另一种方法是String.valueOf(str1.charAt(i))
,它看起来更长,但产生的字节码更有效-尽管JIT可以在热点中对其进行优化。)
答案 1 :(得分:2)
它将str1.charAt(i)
转换为字符串,因此它是Character.toString(str1.charAt(i))
的替代选择