我是编程新手,我正在使用java。这是我写的一个程序:
class HelloApp {
static String hi;
public static void main(String[] args) {
int length = args.length;
if (length > 0) {
hi = args[0];
sayHi();
}
}
static void sayHi() {
if (hi == "hello") {
System.out.println("Hello!");
}
}
}
我的问题是:为什么不输入“java HelloApp hello”make“Hello!”出现在下一行?
答案 0 :(得分:11)
if (hi == "hello") {
应该是:
if (hi.equals("hello")) {
==
检查两个引用是否指向堆中的同一个对象,而equals()
检查两个String引用是否指向具有相同String值的对象。
答案 1 :(得分:3)
你正在以错误的方式比较字符串......
How do I compare strings in Java?
static void sayHi() {
if (hi.equals("hello")) {
System.out.println("Hello!");
}
}
这应该可以解决你的问题..
答案 2 :(得分:3)
==
测试引用相等,而不是字符串相等。您想要使用.equals
代替:
if (hi.equals("hello")) {
...
}
答案 3 :(得分:3)
您正在比较String
错误。检查字符串相等性的正确方法是str.equals(anotherStr)
或str.equalsIgnoreCase(anotherStr)
。 ==
运算符检查字符串是否指向相同的内存位置,而不是内容。
答案 4 :(得分:1)
如neilvillareal所说,你可以使用str.equals(anotherStr)或str.equalsIgnoreCase(anotherStr)方法, 请参阅以下链接以了解'=='和&之间的区别。 'equals / equalsIgnoreCase'方法:http://www.java-samples.com/showtutorial.php?tutorialid=221