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();//实例化一个Person对象并赋值给p2
p2.name = "小明";//将p2的name属性赋值为"小明"
p2.age = 22;//将p2的age属性赋值为22
p2.info();//调用Person的info方法
谢谢,我想知道怎么个输出逻辑?
正经的面向对象语言.this都是指的当前对象.没什么好纠结的.
不停的告诉自己this=当前对象就可以了
this就是指当前对象,p2.info()的时候,当前对象就是p2,p2.name和p2.age已被赋值为小明和22。p2.info()自然会输出小明和22.
回答:
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这个关键字刚开始学的时候感觉不是很好理解,但是不要放弃,多看书,看视频,基础累积到一定层次后自然而然就理解了。