equals()没有按预期工作

And*_*rew 0 java string equals

我正在尝试比较两个帖子数据字段,看看它们是否相同.如果它们不同,我将保存信息.但是我似乎无法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);
Run Code Online (Sandbox Code Playgroud)

现在我的Servlets输出如下所示:

Old Desc1: foo1
New Desc1: bar1
Old Desc2: foo2
New Desc2: bar2
Run Code Online (Sandbox Code Playgroud)

请注意它是如何错过"制作它!!"

===编辑====

我的目标是检查desc1是否更改,desc2更改,或两者都更改以写入新信息.鉴于我所看到的答案,你的陈述是说如果desc1和desc2改变然后保存信息.如果我之前没有给自己解释清楚,我很抱歉!

Mar*_*oun 5

你应该参考德摩根的法律:

(not a) OR (not b)  ?  not (a AND b)
Run Code Online (Sandbox Code Playgroud)

将此规则应用于您的条件,它将等同于:

if (!(oldDesc1.equals(desc1) && oldDesc2.equals(desc2)))
Run Code Online (Sandbox Code Playgroud)

这不是你想要的,&&而是使用而不是||.