public void updateUserPassword(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String oldPass = request.getParameter("oldPassword");
String newPass = request.getParameter("newPassword");
String passAgain = request.getParameter("passwordAgain");
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
User user = (User)request.getSession().getAttribute("user");
if(!oldPass.equals(user.getPassword()) ){
System.out.println(1);
out.print("0");
return;
}//方法1:是对的
if(newPass != passAgain ){
System.out.println(2);
out.print("0");
return;
}// 方法2:是错的
if(bo.updateUserPassword(newPass, user.getId())){
out.print("1");
}else{
System.out.println(3);
out.print("0");
}
}
我想问的问题是,我获得参数的类型是String类型。为什么我要判断两个String类型数是否相等,用==或!=为什么不行。只能用equals方法

解决方案 »

  1.   

    因为string类型是对象类型,对象类型的比较通过equals比较好,==/!=主要用于完成对值类型数据进行比较
      

  2.   

    我知道sting类型是对象类型。
    那是在我们new出来时候用equals方法。
    String a = new String("hello");
    String b = new String("hello");
    这时候判断两个对象是否相等用equals方法
    但我们这样定义String类型,可以用==或!=也可以用equals方法
    String a = "hello";
    String b = "hello";