Topic: 为什么比较两个text的内容时,结果都只有一个?

  Print this page

1.为什么比较两个text的内容时,结果都只有一个? Copy to clipboard
Posted by: rav163
Posted on: 2006-05-17 21:12

程序有两个text,一个Button,用来实现点击Button来比较两个text的内容是否一样:
代码为:
final Text text = new Text(group, SWT.BORDER);
text.setBounds(138, 19, 150, 25);

final Text text_1 = new Text(group, SWT.PASSWORD | SWT.BORDER);
text_1.setBounds(138, 91, 150, 25);

final Button button = new Button(group, SWT.NONE);
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
String str=text.getText();
String str_1=text_1.getText();
if(str==str_1)
MessageDialog.openInformation(null,"","相同");
else
MessageDialog.openInformation(null,"","不同");
}
button.setText("button");
button.setBounds(108, 155, 90, 45);
问题是:
无论输入相同或不相同的内容,为什么最后的结果都是“不同”?

谁能帮我看下,谢谢!!!!!!

2.Re:为什么比较两个text的内容时,结果都只有一个? [Re: rav163] Copy to clipboard
Posted by: why
Posted on: 2006-05-17 21:19

> if(str==str_1)
should use .equals

3.Re:为什么比较两个text的内容时,结果都只有一个? [Re: rav163] Copy to clipboard
Posted by: damondeng
Posted on: 2006-05-18 08:43

应该注意的是String在Java里是一个对象, 就象楼上说的, 比较两个对象是否相同要用对象的equals方法.
这对初学者来说可以是一个比较常见的问题.
如果直接用"str==str_1"做比较, 相当于是比较两个对象的地址, 这是内存中的两个对象, 地址肯定是不一样的. 用equals方法进行比较, 在方法里会对字符串里的字符逐个进行比较, 这才能得到正确结果.

又打个比方, 比如你买房, 想知道204A和304A是不是一样的, 如果你直接比较
"if(204A==304A)"那结果肯定是不一样, 如果你用"if(204A.equals(304A))", 售楼小姐(相当于是equals方法的实现)会告诉你204A和304A的结构是一样的, 价钱也一样, 它们是"相同"的.

4.Re:为什么比较两个text的内容时,结果都只有一个? [Re: rav163] Copy to clipboard
Posted by: xuyan268
Posted on: 2006-05-21 22:18

上楼的大哥解释的好透彻哦!!
佩服!

5.Re:为什么比较两个text的内容时,结果都只有一个? [Re: rav163] Copy to clipboard
Posted by: lisliefor
Posted on: 2006-05-24 21:53

类似的问题,最近很多啊!
为什么不看别人的帖子呢?


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923