Compare with two strings tes1是句柄,当然!="testString",也就不等于test啦。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.csdn.net/expert/topic/380/380952.shtm 关键在这两个: 为什么test == testString 而test1 != testString? if (test == "testString") { System.out.println("test == testString"); } else { System.out.println("test != testString"); } if (test1 == "testString") { System.out.println("test1 == testString"); } else { System.out.println("test1 != testString"); } http://www.csdn.net/expert/topic/380/380952.shtm String 类的比较不能用“==”而必须用equals方法,把你上面的test == "testString" 改成test.equals("testString")试试。 但是为什么 test == "testString" 且 test .equals( "testString") 都为真? 当你在java程序中创建一个字符串常量时,虚拟机会生成一个字符串池来存放这些字符串对象,在上面的程序中,由于显式的对test字符串对象赋值(test="testString"),所以test对象的指针就是"testString"的指针,因此它们是相等的。而你判断test1和“testString”的结果不相等是因为test1的内容是arc[2]得来的,但是test1对象在内存处于一个新的位置,所以用"=="来判断肯定是返回false的。如果你把这条语句换成test1.equals("testString"),那结果就是true了。请记住一点,在java中,“==”是判断对象在内存中的位置是否相等,而equals方法则是判断两个对象的属性/内容是否相等。 谢谢garlic11!实际上equals方法默认为比较句柄值,只有该对象重新写了equals方法,才是判断两个对象的属性/内容是否相等。 大多数类都重新写了equals方法.如果写了一个类Test,但是没有重新写equals方法,则是比较句柄值.参考Thinking In Java 原来如彼:)看来loope兄比我研究的更深一层了,惭愧惭愧 ^_^ 大开眼届阿/*--by bookbobby(书呆)-+ | | | 你说爱我只是习惯 | | 再也不是喜欢 | | 我给你的爱 | | 已不再温暖 | | | +--by bookbobby(书呆)-*/ garlic11回复于2001-12-17 14:13:14 的回答很中肯,谢谢!这正是我原来迷惑的地方.我想现在大家对"=="和"equals()"都比较明白了,呵呵. ArrayList清除重复 谢谢。 恩~想问下~~~~~~jar运行和Netbeans中运行结果不一样? Character的详细信息 自己接的第一个Java项目 这个错误怎么解决啊 怎样在swing里面实现数据库的即时模糊查询 如何把 ObjectInputStream绑定到管道,即用PipeInputStream读取一个对象? 这个代码如何改正??? 一个数据结构有关的难题,爱好者高手请进! 簡單卻很急的問題!!可給分太少,以後補給. java开发好去处 【JBuilder6【不管什么版本,最好有企业版】有地方下载吗?或有D版吗?】
为什么test == testString 而test1 != testString? if (test == "testString") {
System.out.println("test == testString");
} else {
System.out.println("test != testString");
} if (test1 == "testString") {
System.out.println("test1 == testString");
} else {
System.out.println("test1 != testString");
}
请记住一点,在java中,“==”是判断对象在内存中的位置是否相等,而equals方法则是判断两个对象的属性/内容是否相等。
实际上equals方法默认为比较句柄值,
只有该对象重新写了equals方法,才是判断两个对象的属性/内容是否相等。 大多数类都重新写了equals方法.
如果写了一个类Test,但是没有重新写equals方法,则是比较句柄值.参考Thinking In Java
看来loope兄比我研究的更深一层了,惭愧惭愧 ^_^
大开眼届阿/*--by bookbobby(书呆)-+
| |
| 你说爱我只是习惯 |
| 再也不是喜欢 |
| 我给你的爱 |
| 已不再温暖 |
| |
+--by bookbobby(书呆)-*/
这正是我原来迷惑的地方.
我想现在大家对"=="和"equals()"都比较明白了,呵呵.