日期:2014-05-16  浏览次数:20314 次

一个很让我纳闷郁闷的问题
web开发:
   
    JSP中:js代码:function oldPwdCheck(){
                    var oldPwd=$("#oldPwd").val();
                    $.post("validateOldPwd",{"oldPwd":oldPwd},function(data){
                         if(data){
                             saveFlag=true;
                         }else{
                             saveFlag=false;
                         }
                    });
               }
  
   action中:   private String oldPwd;
                AdminInfo admin=(AdminInfo) session.get("adminInfo");
System.out.println(admin.getPassword());//111111
System.out.println(oldPwd);//111111
System.out.println(admin.getPassword()==oldPwd)//false

   
 pojo类 adminInfo中password也是String类型 打印出来的明明的是 111111
admin.getPassword()==oldPwd确实false 郁闷了 为什么?
求指点!!!!!!!!!!

------解决方案--------------------
==  比较的是引用  用equals看看
------解决方案--------------------
System.out.println(admin.getPassword());//111111
System.out.println(oldPwd);//111111
System.out.println(admin.getPassword()==oldPwd)//false
这是 == 与 equals 的区别,一个比较内存地址,一个比较实际内容
------解决方案--------------------
==是引用地址的比较,.equals是取值来比较。虽然admin.getPassword和oldPwd返回都是111111,可是在JAVA中它们分别指向的是内存中的不同地址的对象。== 是对引用地址的比较。就好象同一姓名的两个人,== 符号是比较是否是同一个人,而equals是指他们是否有相同姓名。