含泪总结String类==与equals的区别
来源:互联网 发布:淘宝联盟怎么推广 编辑:程序博客网 时间:2024/06/09 19:59
今天写了个注册系统,其中一段代码如下:
String _username = request.getParameter("username");
String _password1 = request.getParameter("password1");
String _password2 = request.getParameter("password2");
String _email = request.getParameter("email");
if(_email == "")
_email = "no email";
if(
(_username == (""))||
(_password1 == (""))||
(_password2 == (""))||
(!_password1 == (_password2))){
response.sendRedirect(response.encodeURL("register.jsp"));
}
else{
......
}
结果怎么调试都跳到“response.sendRedirect(response.encodeURL("register.jsp"));”完全不执行else
调试了半天突然想起来String类中==和equals的区别:
"==" 比较的是两个对象的引用 (references),并不是他们的内容,所以即使他们内容相同只要引用不同依然返回false.
equals(Object) 方法为 Object 类中定义的方法,所用按照默认方式定义过的类均是其子类。 也就是说 Object 类为所有类的超类 (super class,也叫父类、基类等),在Object 中的 equals(Object) 方法其标准形式为
public boolean equals(Object obj)
返回类型为 boolean ,即 true/false 与 "==" 返回类型一样。Object 类中定义的 equals(Object) 方法是直接使用 "==" 比较的两个对象,所以在没有覆盖 (override,或称改写、重写) equals(Object) 方法的情况下,equals(Object) 与 "==" 一样是比较的引用。
但是String类的equals(Object) 方法(来自java.lang.String)覆盖了从 Object 继承来的的 equals(Object) 方法,用以比较字符串内容是否相同。
所以把代码改成:(其实只用改黑字)
......
if(
(_username.equals(""))||
(_password1.equals(""))||
(_password2.equals(""))||
(!_password1.equals(_password2))){
response.sendRedirect(response.encodeURL("register.jsp"));
}
......
就OK了!
- 含泪总结String类==与equals的区别
- java基础 equals与==区别,String的hashcode
- Java杂谈之String----"=="与equals的区别
- String中 ==与equals的区别
- String 用 ==与equals比较的区别,切记
- Java中String的equals==与区别
- (java)String 中 ==与equals方法 的区别
- Java 中 String equals与==的区别
- String == 与equals 区别
- Java中String判断相等equals与==的区别以及StringBuilder的equals
- Integer String 的equals == 区别
- String s 与String s1 = new String();的本质区别及==与equals的区别。
- 学习总结:==与equals的区别
- equals与== 的区别 及 String,StringBuffer,StringBuilder的区别
- String的== 与equals详解
- 以String为例详解“==”与equals()区别,以及String中重写equals()方法
- String的equals与Object的equals的区别
- Java中Object.equals与String.equals的区别
- 计算机系统结构(第三章)
- java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
- c++成员变量初始化问题
- 再议perl写多线程端口扫描器
- 用递归的方法计算斐波那契数列的通项f(n),已知f1 = 1 ,f2 = 1,以后每项都是前两项的和。
- 含泪总结String类==与equals的区别
- keycode
- 指针部分释疑之一:指针的实质
- 【软件测试自动化-QTP系列讲座 12】 ==AOM应用(二)Object Repository Automation==
- 完美的xslt数值函数与字符串函数
- 使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
- selectAllCheckbox 选中所有checkbox
- 成员函数指针
- Flex学习教程,第一步,如何安装Flex开发环境(For Eclipse 插件)