java 对象调用方法的问题
classTest{inta,b;Test(inti,intj){a=i;b=j;}booleanequals(Testo){if(o.a==a&&o.b==b)retu...
class Test
{
int a,b;
Test (int i,int j)
{a=i;
b=j;
}
boolean equals(Test o)
{if(o.a==a && o.b==b)return true;
else return false;
}
}
class PassOb
{
public static void main(String args[])
{
Test ob1=new Test(10,20);
Test ob2=new Test(10,20);
Test ob3=new Test(10,50);
System.out.println(ob1.equals(ob2));
System.out.println(ob1.equals(ob3));
}
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
boolean equals(Test o)这一句 test o 是什么?
System.out.println(ob1.equals(ob2));这是怎么一步步的运行直到输出结果的呢?ob2不是对象吗?怎么和Test o联系起来了?
各位。。。请讲讲,谢谢了 展开
{
int a,b;
Test (int i,int j)
{a=i;
b=j;
}
boolean equals(Test o)
{if(o.a==a && o.b==b)return true;
else return false;
}
}
class PassOb
{
public static void main(String args[])
{
Test ob1=new Test(10,20);
Test ob2=new Test(10,20);
Test ob3=new Test(10,50);
System.out.println(ob1.equals(ob2));
System.out.println(ob1.equals(ob3));
}
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
boolean equals(Test o)这一句 test o 是什么?
System.out.println(ob1.equals(ob2));这是怎么一步步的运行直到输出结果的呢?ob2不是对象吗?怎么和Test o联系起来了?
各位。。。请讲讲,谢谢了 展开
4个回答
展开全部
text是一个类。而o是他的一个对象。。。
Text o 就是建了一个对象。。。
if(o.a==a && o.b==b)return true;
else return false;
就不用说了把。。
System.out.println(ob1.equals(ob2));就是用obj1和obj2比较。。
也就是比较引用。输出的应该为false
如果真的要弄懂的话就得好好学内存解析。。
还有个api文档。。
也可以查的到的....
Text o 就是建了一个对象。。。
if(o.a==a && o.b==b)return true;
else return false;
就不用说了把。。
System.out.println(ob1.equals(ob2));就是用obj1和obj2比较。。
也就是比较引用。输出的应该为false
如果真的要弄懂的话就得好好学内存解析。。
还有个api文档。。
也可以查的到的....
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个程序是重写了equals()方法,然后在里面为它重新指定比较规则.
你应该去Object类下面看看,equals()方法是从里面继承迩来,所以JAVA中所有的类都默认的有这个方法.只是根据具体情况不同,需要对它进行重写而已.
你应该去Object类下面看看,equals()方法是从里面继承迩来,所以JAVA中所有的类都默认的有这个方法.只是根据具体情况不同,需要对它进行重写而已.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
boolean equals(Test o)这一句 test o 是什么?
test是类型 o是对象,例如boolean equals(String str),String是字符串类型,str是str对象,将str参数传递给equal。
System.out.println(ob1.equals(ob2));这是怎么一步步的运行直到输出结果的呢?ob2不是对象吗?怎么和Test o联系起来了?
ob1.equals(ob2)返回的是boolean类型的值 是由boolean equals(Test o)而来的。ob2是属于 Test类的对象
test是类型 o是对象,例如boolean equals(String str),String是字符串类型,str是str对象,将str参数传递给equal。
System.out.println(ob1.equals(ob2));这是怎么一步步的运行直到输出结果的呢?ob2不是对象吗?怎么和Test o联系起来了?
ob1.equals(ob2)返回的是boolean类型的值 是由boolean equals(Test o)而来的。ob2是属于 Test类的对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Test o是申明一个引用变量。引用变量实际上和一般变量没有区别,只是他只能用来指向用new创建出来的对象在内存中的地址。(和C/C++中的指针是同一概念,只是被封装的深一些)。
在调用equals(ob2)的时候,实际上是将ob2的值,即所指向的对象的地址传给了o这个引用变量。所以o和ob2都引用同一个对象, 即指向的是同一个地址。
默认情况下,Java的==运算符比较的是变量的值,在比较引用变量的时候,也是比较它们的值。即对象在内存中的地址。所以要比较两个对象,除非两个引用变量都指向同一个地址,否则都会返回false。在Objec类里的equals方法就是这样实现的。因此为了能正确比较两个对象里的内容,我们往往都要重写equals方法。才能按照需要运行。
还有一般在给对象之间进行拷贝时,不要使用=运算符,比如:
Test o1 = new Test ();
Test o2 = o1;
这样是不行的。原因还是和上面的道理一样。赋值的时候只是将o1的值,即引用的地址传给了o2。这样o1和o2引用了同一个地址。修改o2,o1也会跟着改变。达不到预期效果。所以一般在拷贝对象是要重写Object的clone方法。将o1的每一个成员都复制一份给o2。
建议了解一下引用变量,equals方法, hash方法的概念。
在调用equals(ob2)的时候,实际上是将ob2的值,即所指向的对象的地址传给了o这个引用变量。所以o和ob2都引用同一个对象, 即指向的是同一个地址。
默认情况下,Java的==运算符比较的是变量的值,在比较引用变量的时候,也是比较它们的值。即对象在内存中的地址。所以要比较两个对象,除非两个引用变量都指向同一个地址,否则都会返回false。在Objec类里的equals方法就是这样实现的。因此为了能正确比较两个对象里的内容,我们往往都要重写equals方法。才能按照需要运行。
还有一般在给对象之间进行拷贝时,不要使用=运算符,比如:
Test o1 = new Test ();
Test o2 = o1;
这样是不行的。原因还是和上面的道理一样。赋值的时候只是将o1的值,即引用的地址传给了o2。这样o1和o2引用了同一个地址。修改o2,o1也会跟着改变。达不到预期效果。所以一般在拷贝对象是要重写Object的clone方法。将o1的每一个成员都复制一份给o2。
建议了解一下引用变量,equals方法, hash方法的概念。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询