1.区分成员变量和局部变量
public class ThisDemo { public static void main ( String [ ] args) { Student s= new Student ( "小明明" , 20 ) ; System . out. println ( s) ; } } class Student { String name; int age; public Student ( String name, int age) { name = name; age = age; } @Override public String toString ( ) { return "Student [ name=" + name + ", age=" + age + "]" ; } }
打印结果: Student [ name= null , age= 0 ]
赋值没有成功, 说明: name ( 局部变量) = name ( 局部变量) ;
而不是name ( 成员变量) = name ( 局部变量) ; public Student ( String name, int age) { this . name = name; this . age = age;
}
打印结果: Student [ name= 小明明, age= 20 ]
这样子就可以赋值成功啦
2.代表当前对象
public static void main ( String [ ] args) { Student s= new Student ( "小明明" , 20 ) ; System . out. println ( s) ; } 因为this 当前代表的是s实例( 对象) 相当于s. name= "小明明" ;s. age= "20" ; this . name= 实例( 对象) . name= "小明明" ;
3.构造器与构造器之间的调用
为Student 再添加两个构造器, 修改后如下:
class Student { String name; int age; int id; public Student ( int id, String name, int age) { this . id = id; this . name = name; this . age = age; } public Student ( String name, int age) { this . name = name; this . age = age; } public Student ( String name) { this . name = name; } @Override public String toString ( ) { return "Student [ id=" + id + ", name=" + name + ", age=" + age + "]" ; } }
构造器调用一般是这样子用的. 不同的构造器中存在相同代码. 为了复用性。可以在参数少的构造器中调用参数多的构造器, 如下:
class Student { String name; int age; int id; public Student ( String name, int age, int id) { this . name = name; this . age = age; this . id = id; System . out. println ( "构造器3已调用" ) ; } public Student ( String name, int age) { this ( name, age, 0 ) ; System . out. println ( "构造器2已调用" ) ; } public Student ( String name) { this ( name, 0 ) ; System . out. println ( "构造器1已调用" ) ; } @Override public String toString ( ) { return "Student [ id=" + id + ", name=" + name + ", age=" + age + "]" ; } }
测试结果1 :public static void main ( String [ ] args) { Student s= new Student ( "小明明" ) ; System . out. println ( s) ; } 构造器3 已调用构造器2 已调用构造器1 已调用Student [ id= 0 , name= 小明明, age= 0 ] 测试结果2 :public static void main ( String [ ] args) { Student s= new Student ( "小明明" , 20 ) ; System . out. println ( s) ; } 构造器3 已调用构造器2 已调用Student [ id= 0 , name= 小明明, age= 20 ] 总结: 这样子可以在参数最多的构造器中编写代表。其他构造器负责调用参数最多的那个构造器就好了
this 的三种常见用法介绍完毕!怎么样很容易吧.