黑马程序员技术交流社区
标题:
请教一个this应用
[打印本页]
作者:
610757257
时间:
2014-12-27 21:22
标题:
请教一个this应用
class Person
{
private int age;
Person(int age )
{}
public boolean compare(Person p)
{
return this.age==p.age;
}
}
class PersonDemo1
{
public static void main(String[] args)
{
Person p1=new Person(20);
Person p2=new Person(25);
boolean b=p1.compare(p2);
System.out.println(b);
复制代码
为什么结果是true而不是false????
不是20==25吗?
作者:
outsider1020
时间:
2014-12-27 21:48
不是20==25,而是0==0
在提供有参构造方法中,对于接收到的参数并没有进行显示的赋值操作,所以字段取的依然是其默认值。
修改之后的代码如下:
class Person
{
private int age;
Person(int age )
{
this.age=age;
}
public boolean compare(Person p)
{
return this.age==p.age;
}
}
class test1
{
public static void main(String[] args)
{
Person p1=new Person(20);
Person p2=new Person(25);
boolean b=p1.compare(p2);
System.out.println(b);
}
}
这样的输出结果就是:false
作者:
诺诺
时间:
2014-12-27 22:40
{:3_46:}没赋值进去楼上正解
作者:
Honelyboy
时间:
2014-12-27 22:52
Person类中的有参构造函数没有给成员变量赋值,空等于空,所以是true
作者:
青衫禅客
时间:
2014-12-28 01:55
代码写漏了
作者:
李增宽
时间:
2014-12-28 20:45
2L正解..
作者:
飘渺之旅
时间:
2014-12-28 21:31
了解了。
作者:
cz萑
时间:
2014-12-28 21:58
你的对象的构造方法没有给成员变量赋值,所以都是0
作者:
cz萑
时间:
2014-12-28 21:59
你的对象的构造方法没有给成员变量赋值,所以都是0
作者:
lnscore
时间:
2014-12-28 22:05
2L完全正解,楼主虽然提供了带参构造,但是构造里面没有写赋值操作,所以就相当于提供了无参的构造的结局,只提供初始化。那么无论你传什么参数进去都是得到默认的值0,怎么比都是true
作者:
FINE
时间:
2014-12-28 22:15
构造函数Person里应该返回一个age值
作者:
qowoeo7538
时间:
2014-12-28 22:24
猛的一看我还以为是程序问题,仔细一看,原来你构造方法都还没赋值.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2