package ThisDemo; public class ThisTest { public static void main(String[] args) { Person person = new Person("as",19); person.print(); } } class Person{ String name; int age; public Person(String name,int age){ name = name; age = age; } public void print(){ System.out.println(name + " " + age); } }
结果
null 0
原本是想将构造器的形参,直接写成属性名,但是由于变量的作用域原则,构造器的name和age是局部变量,不是属性,在print()中调用的是属性,所以会出现null 0的结果
用this
this.方法名(参数列表);
只能在构造器中使用(在一个构造器里面访问另一个构造器,必须放在第一条语句)package ThisDemo; public class TestPerson { public static void main(String[] args) { Person1 person1 = new Person1("aaa",19); Person1 person2 = new Person1("bbb",18); Person1 person3 = new Person1("aaa",19); System.out.println(person1.compareTo(person2)); System.out.println(person1.compareTo(person3)); } } class Person1{ String name; int age; public Person1(String name,int age){ this.name = name; this.age = age; } public boolean compareTo(Person1 person1){ return this.name.equals(person1.name) && this.age == person1.age; } }