黑马程序员技术交流社区

标题: 求助 [打印本页]

作者: 莫运飞    时间: 2012-4-5 14:17
标题: 求助
class Demo
{
        private int num;
        Demo(int num)
{
        this.num=num;//这有一个this.num}

public boolean compare(Demo d)

{
        return this.num==d.num;//这里又有一个this.num  :这两个this.num不同之处是什么?并且return返回的true或false返回到哪里去?}
}
class Object01
{
        public static void main(String[] args)
{
        Demo d1=new Demo(4);
        Demo d2=new Demo(4);

        System.out.println(d1.compare(d2));//怎么进行比较的???是上面return返回来的 进行比较?还是同是4在进行比较??

}
}
作者: 刘士    时间: 2012-4-5 14:39
第一个this.num是构造函数的,在Demo d1=new Demo(4); 就会把4赋值给num。那么这个值是属于d1这个对象的。
第二个是this.num,是 d1.compare(d2);d1这个对象的num的值。

System.out.println(d1.compare(d2)); 是 d1的num的值 与 d2 的num的值进行比较的结果;上面的return 就是返回到这里。
作者: 张志阳    时间: 2012-4-5 14:56
首先运行结果是true。 return this.num==d.num这句中的this.num是此对象也就是d1,d.num指的是要比较的对象也就是d2。return的值是谁调用返回给谁,这里就是System.out.println(d1.compare(d2))调用,所以会在屏幕输出。
作者: 江远云    时间: 2012-4-5 15:03
//public void setName(int num)
//this.num=num;//这有一个this.num
this代表本类对象的引用,哪个对象调用这个方法,this就代表哪个对象。

//return this.num==d.num;//这里又有一个this.num  :这两个this.num不同之处是什么?并且return返回的true或false返回到哪里去?
this.num还是代表所属函数所属对象的引用,意思是说哪个对象调用了这个方法,this就代表哪个对象。
//两个this有什么不同?
这要看调用两个this所在属性的对象是不是同一个了。
return返回的true或false返回到哪里去?
当然是返回给调用者了。

//System.out.println(d1.compare(d2));怎么进行比较的???是上面return返回来的 进行比较?还是同是4在进行比较??
读到d1.compare的时候就去d1就去执行compare函数,并把d2传给形式参数d。执行函数里的this.num==d.num并返回。的确是上面这个函数return返回来的。同是4在比较这样说也没错,可是得有个指示让它去比较,得有个关系,比如方法,比如写出==。

作者: 姜志钦    时间: 2012-4-5 16:37
本帖最后由 姜志钦 于 2012-4-5 16:38 编辑
  1. class Demo
  2. {
  3.         private int num;
  4.         Demo(int num)
  5. {
  6.         this.num=num;//这有一个this.num}

  7. public boolean compare(Demo d)

  8. {
  9.         return this.num==d.num;//这里又有一个this.num  :这两个this.num是一样的,
  10. 并且return返回的true或false返回到你调用这个方法的地方,即  System.out.println(d1.compare(d2))}

  11. }  这边少了一个} 不然内部类无法使用静态路口
  12. class Object01
  13. {
  14.         public static void main(String[] args)
  15. {
  16.         Demo d1=new Demo(4);
  17.         Demo d2=new Demo(4);

  18.         System.out.println(d1.compare(d2));//怎么进行比较的???是上面return返回来的 进行比较?还是同是4在进行比较?? 就是调用上面的compare方法比较d1和d2两个对象返回的结果}
  19. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2