class Value {
int i;
}public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 100;
System.out.println(v1.equals(v2));
}
} ///:~
为什么返回是false啊
不明白
int i;
}public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 100;
System.out.println(v1.equals(v2));
}
} ///:~
为什么返回是false啊
不明白
解决方案 »
- [菜鸟问题]Spring MVC框架只能用做web开发么,JavaSE开发一般用什么框架呢?
- su.indexof(c)!=-1????为什么不是不等于1或者是0??????
- 在Java中,如何以SSL方式连接FTP服务器?
- NIO的通道Channel到底是什么意思?
- 真心求助!!!!!!!!!!!!!
- 如何获取一个网页的源代码?
- 如何在应用程序中提取网页的表单 结果的话可令开贴给分
- 散分了.
- 有没有人在做PACS?
- 请问通过纯jdbc能否联 sqlserver7.0,注意不是通过jdbc-odbc桥,如果能的话,driver在哪里下载?连接的语句怎么写?
- 一个很基础的问题
- 如何接受从命令行输入的数?
boolean equals(Object o){
return this==o;
}
object对象默认使用了==操作符,在Value类中:定义的是
class Value
{
int i;
}
没有对object中的equals()进行覆盖,所以使用equals和
使用==会得到同样的结果
而使用String等类时,他们复写了equals()方法。
下面是API里面的原句
equals
public boolean equals(Object anObject)比较此字符串与指定的对象。当且仅当该参数不为 null,并且是表示与此对象相同的字符序列的 String 对象时,结果才为 true。 覆盖:
类 Object 中的 equals
参数:
anObject - 与此 String 进行比较的对象。
返回:
如果 String 相等,则返回 true;否则返回 false。所以在使用equals()时,我们不能简单的用equals()判断两个类的内容是否相等, 这个答案要看类创建时有没有覆盖equals(),根据新的equals()来判断结果
public boolean equals(Object obj) {
return (this == obj);
}实际是用==在比较问题其实很简单。
首先。你要明白“==”之间比的是什么
“==”在比较对象时。其实是在判断两个对象是否是相同的空间地址 Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 100;
System.out.println(v1.equals(v2));v1申请的是一块新空间
v2申请的也是块新空间
虽然他们的i成员变量值相等。但始终地址不等
v1.i = v2.i = 100;so
System.out.println(v1.equals(v2));返回false;
就象我跟你:你是你,我是我.You not equal me.
:)
你上面的例子中, 虽然两个对象拥有相同的值, 但是在内存中是互相独立的.所以不相同
if(rs.next()){
//取得用户名和密码
String nameData = new String(rs.getString(1));
System.out.println(rs.getString(1));
String passwordData = rs.getString(2);
System.out.println(rs.getString(1));//输出manage
state=rs.getInt(3);
//检查用户名和密码的大小
System.out.println(state==0);
System.out.println(name.equals(rs.getString(1))); //问题是在这里为什么会是false
System.out.println(nameData+":::"+name); 输出manage:::manageSystem.out.println(name.equals(rs.getString(1))); //问题是在这里为什么会是false,难道数据库读出来的东西和外面不一样吗?真的搞不懂啊
真的郁闷啊!