java - 为什么我的字符串比较不起作用?

标签 java

好吧,这很愚蠢,但是 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/

相关文章:

java - 简单的 Java 构造函数

java - 如何在并行流上使用java map-reduce组合器

java - 如何比较包含字符串的对象?

java - 无法解析符号,抽象类工厂

Java 本地类 .class 文件名

java - 如何在不使用 GPS 的情况下以编程方式检测 android 设备当前所在的国家/地区?

java - 如何使用 Dumbledroid 访问 JSON 的内部节点?

java - 将 multidex apk 部署到 Fabric Beta 时出现 android ART NoClassDefFoundError

javascript - 在 Java 中加载 JavaScript 初始化方法后获取 HTML 文件

java - 在java中打印一个变量n次