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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑白小調° 中级黑马   /  2014-1-11 23:41  /  1456 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑白小調° 于 2014-1-14 08:13 编辑

这里的this分别代表什么呢?P1、P2代表什么呢?
class person
{
        private String name;
        private int age;
        Person(int age)
        {
                this.age=age;
        }
        Person(String name)
        {
                this.name=name;
        }
        Person (String name,int age)
        {
                this.name=name;
                this.age=age;
        }
        public void speak()
        {
                System.out.println("name="+name+"...age="+this.age);
                        this.show;
        }
        public void show()
        {
                System.out.println(this.name);
        }
        public boolean compare(person P)
        {
                return this.age==P.age;
        }
}
        class personDemo
        {
                public static void main(String[]args)
                {
                        Person P1=new Person(20);
                        Person P2=new Person(25);
                        boolean b=P1compare(P2);
                        System.out.println(b);
                }
               
        }

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
this 代表当前对象, Person P1=new Person(20);  在堆中创建时 这个 this 代表着 p1  Person P2=new Person(25);这时 this 就代表着P2,this 就是代表着 堆中的对象(地址值)

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
所有的面向对象语言都是一样的。
this表示的是当前的对象。指向当前对象的地址。
p1,p2对象的实例。他们各自有各自的this指针。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
this表示调用该方法或属性的类的对象,P1 是年龄为20的Person的对象,P2是年龄为25的Person的对象,P1.compare(P2)比较年龄是否相等,所以返回false。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 淡定

查看全部评分

回复 使用道具 举报
注意,一定要高清楚this代表的是本类对象的,那么此类可以创建好多对象,到底代表哪一个呢,这就要看是哪个对象在调用this所在的函数,哪个对象在调用this所在的函数,这个this就代表哪个对象的。而P1、P2是此类的对象,并且此P1、P2存放的是Person对象的内存空间地址值。若P1调用了this所在的函数,则this就代表P1此对象,若P2调用了此this所在的函数,则this就代表对象P2.

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
谁用了new 创建对象 ,这个this就指的是谁
回复 使用道具 举报
this是指当前你调用类的对象, p1和p2是对象的实例。在构建p1时,this就是p1的类的对象,在构建p2时,this就是构建p2的类的对象,p1和p2是在栈中存放,new出来的Person对象是在堆中存放的,p1存放的是Person(20)在堆中的地址,p2存放的是Person(25)在堆中的地址。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
app297 中级黑马 2014-1-12 16:51:12
8#
简单的说吗,你这里p1 代表的是由Person产生的一个对象,this 就代表P1本身。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马