在struts 中的action类下public ActionForward execute 我写了一个如下的测试代码:
String userName = loginForm.getUserName();
String password = loginForm.getPassword();
if (userName == "jack")
{
forward = "success";
}
else
{
forward = "fail";
}
我用watch看了userName 是jack 但是为什么不成立,程序总是运行到else; 如果"=="换成equals就成立,请问为什么?
String userName = loginForm.getUserName();
String password = loginForm.getPassword();
if (userName == "jack")
{
forward = "success";
}
else
{
forward = "fail";
}
我用watch看了userName 是jack 但是为什么不成立,程序总是运行到else; 如果"=="换成equals就成立,请问为什么?
解决方案 »
- 关于错误:attempt to create delete event with null entity
- linux系统和window系统中的换行符转换的问题
- ssh2整合报错java.lang.ClassCastException
- IE页面显示不出来火狐可以显示
- hibernate3里的inner join必须将一对多中的多的一方作为主表来写吗
- 请问:参数的传递跟网速有关吗?为什么,我在一台网速快的机器上跑没有问题,但在网速慢的机器上就会出现接收参数出错的问题呢?
- 救救我,快疯了,总提示java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
- 高分:怎样从Javascript向JSP模块传递参数
- web application(jsp) UML建模方案!
- 求一个js正则表达式
- 呵呵!!
- Java性能问题
楼主【zhqingren】截止到2008-07-01 16:02:45的历史汇总数据(不包括此帖):
发帖数:1 发帖分:100
结贴数:0 结贴分:0
未结数:1 未结分:100
结贴率:0.00 % 结分率:0.00 %
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
==是比较两个变量,比如int a = 1;int b = 1;则a == b就为true。
返回true表示相等,false为不等
if (userName.trim().equals("jack"))
这个就是eqauls和==的区别,一般在公司笔试的时候会经常考到这个问题,在2005年金山软件的一道考题就是考的这个。呵呵,Java真奇妙
而==则是比较两个变量 是不是同一个变量,也应时是说
要看看这两个变量是不是引用的同一个地址,
java 中只有引用地址相同的两个变量才被视为==
equals 比较值
equals 才是内容的比较
应该用equals才对
1.如果比较的是两个基本类型(char,byte,short,int,long,float,double,boolean),则是判断它们的值是否相等。
2.如果表较的是两个对象变量,则是判断它们的引用是否指向同一个对象。
你这里比较的是两个对象,当然结果是false了 :)
所以在这里是不能用 ==
要用 equals 去比较