Java equals()未按预期工作

Java equals()未按预期工作,java,string,equals,Java,String,Equals,我试图比较两个post数据字段,看看它们是否相同。如果他们不一样,我会保存信息。然而,我似乎无法使equals()正常工作。以下是一个示例: String oldDesc1 = request.getParameter("desc1_old"); String oldDesc2 = request.getParameter("desc2_old"); String desc1 = request.getParameter("desc1"); String desc2 = request.getP

我试图比较两个post数据字段,看看它们是否相同。如果他们不一样,我会保存信息。然而,我似乎无法使
equals()
正常工作。以下是一个示例:

String oldDesc1 = request.getParameter("desc1_old");
String oldDesc2 = request.getParameter("desc2_old");
String desc1 = request.getParameter("desc1");
String desc2 = request.getParameter("desc2");

if (!oldDesc1.equals(desc1) || !oldDesc2.equals(desc2)) {
    out.println("made it!!");
    part.setDescription(new String[] {desc1, desc2});
}
//added for testing
out.println("Old Desc 1: "+oldDesc1);
out.println("New Desc 1: "+desc1);
out.println("Old Desc 2: "+oldDesc2);
out.println("New Desc 2: "+desc2);
现在,我的servlet输出如下所示:

Old Desc1: foo1
New Desc1: bar1
Old Desc2: foo2
New Desc2: bar2
注意它怎么会漏掉“成功!!”

==编辑====

我的目标是检查desc1和desc2中的任何一个是否更改,或者两者是否都更改以写入新信息。根据我看到的答案,您的声明是如果desc1和desc2发生更改,则保存信息。如果我之前解释得不够清楚,我很抱歉

您应该参考:

将此规则应用于您的情况,相当于:

if (!(oldDesc1.equals(desc1) && oldDesc2.equals(desc2)))
这不是您想要的,请使用
&&
而不是
|

if (!oldDesc1.equals(desc1) || !oldDesc2.equals(desc2)) {
    out.println("made it!!");
    part.setDescription(new String[] {desc1, desc2});
}
您使用的是
|
(OR)而不是
&&
(AND)运算符

修改代码:

if (!oldDesc1.equals(desc1) && !oldDesc2.equals(desc2)) {
    out.println("made it!!");
    part.setDescription(new String[] {desc1, desc2});
}
if (!oldDesc1.equals(desc1) && !oldDesc2.equals(desc2)) {
    out.println("made it!!");
    part.setDescription(new String[] {desc1, desc2});
}