A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 莫运飞 中级黑马   /  2012-4-5 14:17  /  1863 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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在进行比较??

}
}

4 个回复

倒序浏览
第一个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 就是返回到这里。
回复 使用道具 举报
首先运行结果是true。 return this.num==d.num这句中的this.num是此对象也就是d1,d.num指的是要比较的对象也就是d2。return的值是谁调用返回给谁,这里就是System.out.println(d1.compare(d2))调用,所以会在屏幕输出。
回复 使用道具 举报
//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: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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马