首页 新闻 会员 周边

java中this关键字练习题问题请教下

0
[待解决问题]

public class Person {

   private String name = "张三";

   private int age = 20;

   public static void main(String[] args) {

    Person p1 = new Person();

    p1.info();

 

    Person p2 = new Person();

    p2.name = "小明";

    p2.age = 22;

    p2.info();

   }

   private void info() {

      System.out.print(this.name + "今年" + this.age + "!");

   }

}

输出结果:

张三今年20岁

小明今年22岁(小明的输出结果麻烦帮忙解释,我是初学者,非常感谢)

问题补充:

不太明白这块

Person p2 = new Person();
p2.name = "小明";
p2.age = 22;
p2.info();

维也纳729的主页 维也纳729 | 菜鸟二级 | 园豆:206
提问于:2016-02-29 16:10
< >
分享
所有回答(5)
0

第二个是给对象重新赋值了

疯狂的兔子! | 园豆:171 (初学一级) | 2016-02-29 16:14
0

Person p2 = new Person();//实例化一个Person对象并赋值给p2

p2.name = "小明";//将p2的name属性赋值为"小明"
p2.age = 22;//将p2的age属性赋值为22
p2.info();//调用Person的info方法

刘宏玺 | 园豆:14020 (专家六级) | 2016-02-29 16:31

谢谢,我想知道怎么个输出逻辑?

支持(0) 反对(0) 维也纳729 | 园豆:206 (菜鸟二级) | 2016-02-29 16:38
0

正经的面向对象语言.this都是指的当前对象.没什么好纠结的.

不停的告诉自己this=当前对象就可以了

 

吴瑞祥 | 园豆:29449 (高人七级) | 2016-02-29 17:55
0

this就是指当前对象,p2.info()的时候,当前对象就是p2,p2.name和p2.age已被赋值为小明和22。p2.info()自然会输出小明和22.

晴朗路 | 园豆:373 (菜鸟二级) | 2016-03-02 10:52
0

回答:

this到底代表什么呢?

this就代表当前对象,(当前对象是指哪个对象呢?你可能会有这样的疑问。对吧?)哪个对象调用了this所在的函数,this就代表哪个对象。

 

/*
this关键字的另一个作用:
可以用this标识符哪个变量是成员变量。这个标识符可以省略不写。
但是,当局部变量和成员变量同名时,this不能省略,因为要用this
标识成员变量。
*/

class Person
{
    //属性
    private String name;
    private int age;

    //构造函数
    Person(String name,int age)
    {
        this.name = name;
        this.age = age;
    }
    
    //方法
    public void speak()
    {
        String name = "zhangsan"; //定义了一个局部变量
        System.out.println("name="+name+",age="+age);
    }
}

class  PersonDemo
{
    public static void main(String[] args) 
    {
        Person p = new Person("lisi",20);//创建一个Person类的对象(实例),用构造函数对其进行初始化。
        p.speak();//调用p这个对象的方法speak(),打印输出姓名和年龄。输出结果是:zhangsan,20
    }
}

 

但是如果你想输出的结果是:lisi,20该怎么办呢?这时就需要用到this关键子了,把代码改成如下:

//this关键字的应用。
/*
this关键字的另一个作用:
可以用this标识符哪个变量是成员变量。这个标识符可以省略不写。
但是,当局部变量和成员变量同名时,this不能省略,因为要用this
标识成员变量。
*/

class Person
{
    //属性
    private String name;
    private int age;

    //构造函数
    Person(String name,int age)
    {
        this.name = name;
        this.age = age;
    }
    
    //方法
    public void speak()
    {
        String name = "zhangsan"; //定义了一个局部变量
        System.out.println("name="+this.name+",age="+age);
    }
}

class  PersonDemo
{
    public static void main(String[] args) 
    {
        Person p = new Person("lisi",20);//创建一个Person类的对象(实例),用构造函数对其进行初始化。
        p.speak();//调用p这个对象的方法speak(),打印输出姓名和年龄。输出结果是:lisi,20
    }
}

this这个关键字刚开始学的时候感觉不是很好理解,但是不要放弃,多看书,看视频,基础累积到一定层次后自然而然就理解了。

 

太自由 | 园豆:204 (菜鸟二级) | 2016-03-29 09:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册