好吧,这很愚蠢,但是 wtf 是怎么回事?
我在 servlet 中有一个 String 变量,它采用参数的值并根据该值进行测试以执行某些操作,但 if
不起作用。有什么问题?
String action = request.getParameter("action");
System.out.println("Action: " + action);
// I put 2 ifs to be sure, but not even one is working
if(action.equals("something"))
{
System.out.println("hey");
}
if(action.trim() == "something")
{
System.out.println("hey");
}
在控制台上,System.out.println 向我显示 action 的值是“某物”
Action: something
最佳答案
你的第二个比较是错误的。您还应该使用 equals
而不是 ==
,如下所示:
if (action.trim().equals("something"))
==
运算符比较(字符串)对象的引用,在正常情况下相等 字符串不会自动具有相同的引用,即它们是不同的对象。 (除非两者都是 internalized ,但通常你不应该考虑它)
除此之外,您的示例工作正常并且第一次比较有效。尝试修复第二个比较。如果它有效,你就发现了你的问题。如果没有,请尝试使用调试器并仔细检查所有内容。
PS:比较文字字符串和动态字符串对象时,最好对文字字符串调用 equals
方法:
"something".equals(action)
这样你就可以在字符串对象为 null 时避免 NullPointerExceptions。
关于java - 为什么我的字符串比较不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1530864/