日期:2014-05-20  浏览次数:20667 次

字符串相等问题
package cc.openhome;

import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/hello.view")
public class HellowServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletExceptionIOException {
// TODO Auto-generated method stub

String username = request.getParameter("username");
String passwd = request.getParameter("password");
if(checkLogin(username, passwd)){
System.out.println("welcome");
}
else{
System.out.println("sorry");
}

}

private boolean checkLogin(String username, String passwd) throws IOException {
// TODO Auto-generated method stub
String user1 = "zhangsan";
String user2 = "lisi";
String psd1 = "123";
String psd2 = "234";
  if(username==user1 && passwd==psd1){
return true;
}
else if(username==user2 && passwd==psd2){
return true;
}
else{
return false;
}
}

}

这里的
if(username==user1 && passwd==psd1){
return true;
}
else if(username==user2 && passwd==psd2){
return true;
}
else{
return false;
}

和下面的有什么不同吗?改为equals就正确,我认为这两个是一样的,请大神指点......
public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
String test="test";

if(test=="test"){
System.out.println("相等");
}
}
}

java 相等 equals ==

------解决方案--------------------
http://blog.csdn.net/wangweitingaabbcc/article/details/5993248 参照。
------解决方案--------------------
5楼应该说的是正确的。估计会不会是本地的JVM和Tomcat的内存什么的不太一样

对SSH没有了解过,==是对象比较,只要是相同对象的都可以比较。
在JAVA的字符串处理中有个字符串池,如果池中存在的字符串,是不会被新创建对象。
因字符串是常量,故可以直接引用,既然是同一个对象,那么用==进行比较则为true了。
------解决方案--------------------
引用:
Quote: 引用:

樓上說的都沒錯。。。。。其實兩個只是看起來相似,其實是不一樣的,第一段代碼如下:


Java code
?



123456789

if(username==user1 && passwd==psd1){             return true;         }         else if(username==user2 &&amp……

谢谢您的回答,但是我这里的user1和psd1换成普通的字符串
if(username=="zhangsan" && passwd=="123"){
return true;
}
else if(username=="lisi" && passwd=="234"){