字符串相等问题package cc.openhomeimport java.io.IOExceptionimport javax.servlet.ServletException
字符串相等问题
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 ServletException, IOException {
// 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了。
[解决办法]
那麼對於這種情況 如果你傳入的username值也為"lisi" passwd為"234" 結果應該為true了,否則為false,但這樣其實比較的不是內容是地址。 根本原因就在於 字符串==比較的是引用地址值,字符串維護了一個字符串池,所有只要不是new出來的字符串 那麼相同的內容 會返回同樣的地址值,而不同的內容 肯定有兩個不同的地址值啦,String類的源代碼你可以看下,它重寫了hashcode和equals方法,所以如果你想要比較兩個字符串中的內容時 用equals方法 不要用==
