关于JAVA里面GUI的getText方法可以直接用==比较相等的疑问

xxxxxx91116 2011-05-02 12:14:32
这两天和同学写GUI程序,之前一直都是String类型不能直接用==比较内容,要用equals(),我也试过,确实要用equals(),才能比较内容是否相等,可是发生一个怪事
eg:
Label pro=new Label("hi");
if(pro.getText()=="hi")
{
.................
}
这样他居然能够比较相等?不用equals也可以比较字符串内容相等?!!1奇怪~逻辑居然是对的,这是为啥,请大侠指点一二
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxxxxx91116 2011-05-02
  • 打赏
  • 举报
回复
恩~刚才问了一些大牛,这个问题解决了,只要不是用new来申请的String,只要是“”的,他都会在字符串池分配,其实他还是比较的是地址,不过这个时候他们是同一块地址,谢谢楼上两位
huntor 2011-05-02
  • 打赏
  • 举报
回复
不是new出来的String,在 String literal pool中,所以可以使用 == 比较。
彡颵爺 2011-05-02
  • 打赏
  • 举报
回复
可以这样理解:对于string类的Equals方法它比较的是字符串对象的值(内容)是否相等,对于“==”当等号两边是对象的引用时它比较两个引用是否指向同一个对象;当等号两边是值时就比较这两个值是否相等,对
pro.getText()方法,它返回的是一个字符串值,就可以这样比较,建议你去看看String类的equals(),方法的底层代码,它覆盖了Object类的Equals()方法,你在看看Object 类的equals(),方法,它的底层实现其实就是用“==”,所以在一些地方equals()方法与“==”能混用,或者说能用“==”的地方就能用equals(),但用equals()的地方不一定能用“==”

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧