当前位置: 首页 > 面试题库 >

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

纪枫
2023-03-14
问题内容

好的,这很愚蠢,但是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: something

问题答案:

您的第二个比较是错误的。您还应该使用equals代替==,例如:

if (action.trim().equals("something"))

==运算符比较 引用 的(字符串)对象和正常情况下 等于
字符串不自动具有相同的参考,也就是说,它们是不同的对象。(除非两者都已内部化,但通常不应该考虑)

除此之外,您的示例可以正常工作,并且第一个比较有效。尝试修复第二个比较。如果有效,则说明您遇到了问题。如果不是,请尝试使用调试器并仔细检查所有内容。

PS:比较文字字符串和动态字符串对象时,最好equals在文字字符串上调用方法:

"something".equals(action)

这样,当字符串对象为null时,可以避免NullPointerExceptions。



 类似资料:
  • 问题内容: 我有一个Android应用程序,我想检查安装的应用程序名称是否与传递给包含此代码的函数的字符串匹配。代码和示例如下: 假设您打过电话,并且手机上的应用程序名称与返回的名称相同。但是,它永远不会。我记录了结果,它应该匹配,但事实并非如此。任何人都可以请问我为什么这行不通吗? 问题答案: 使用String的equals()方法代替==运算符来比较字符串: 在Java中,新手遇到的最常见错误

  • 代码如下: 运行时,这是错误消息: 错误:不匹配'运算符*'(操作数类型是'std::__cxx11::字符串{aka std::__cxx11::basic_string 如何修复此错误并使程序正确运行?

  • 问题内容: 我很难尝试做一些简单的事情。这是代码: 我已经简化了,但这就是了解正在发生的一切的必要条件。变量“数据”是AJAX调用的结果(如果有区别的话)。问题在于它总是转到’else’语句,并警告’成功’,如果转到’else’则不应该。知道这里发生了什么吗? 编辑:这是jQuery中完整的AJAX代码: 然后在PHP响应中: 问题答案: 您可以使用以下方法在客户端修复它: 或者,一种更好的方法是

  • 这里有2个测量: 正如您所见,比较两个匹配的字符串比比较两个大小相同但不匹配的字符串要快。这是非常令人不安的:在字符串比较期间,我认为python是逐字符测试字符串的,所以应该比更长,因为它需要对1进行4次测试才能进行不匹配的比较。可能比较是基于哈希的,但在这种情况下,两种比较的计时应该相同。 你知道为什么吗?

  • 我有一个客户对象类,它有一些变量,并且已经实现了一个关于其中一个变量的比较器。然而,我需要为不同的变量last_name实现另一个比较器。 因为我的Customer类中不能有2个compareTo()方法,所以我决定在这里专门创建一个Comparing类 但一旦触及Collections.sort(客户); 它不会激活下面的公共int比较(Customer Customer_1,Customerc

  • 问题内容: 我在进行一些MySQL测试查询,并意识到将字符串列与(作为数字)进行比较可以得出! 但是,将其与其他任何数字(正数或负数,整数或十进制数)进行比较,将得到预期的结果(当然,除非字符串是数字以字符串的形式表示) 当然,按预期将字符串与as字符串进行比较会得出false。 但是,为什么它如此呢? 这是为什么? 问题答案: MySQL自动将字符串转换为数字: 不以数字开头的字符串的值为0: