java_this
1.使用this调用成员变量和成员函数
2.使用this调用构造函数
分为两种情况,一种是this可以省略,另一种是不可以省略,
①先看可以省略this的时候的用法:
Person.java
1 package thisjava;
2
3 public class Person
4 {
5 String name;
6
7 void talk()
8 {
9 //完整的写法应该是这个System.out.println("my name is"+this.name);
10 //this 表示调用函数的对象,也就是那个函数调用了talk,this就代表那个对象
11 //这种情况下,this是可以省略的
12 System.out.println("my name is"+name);
13 }
14 }
Test.java
1 class Test{
2 public static void main()
3 {
4 Person p1=new Persom();
5 p1.name = "zhang";
6
7 Person p2=new Person();
8 p2.name="lisi";
9
10 p1.talk();
11 p2.talk();
12 }
13
14
15 }
上面这种是可以省略this,
②。不可以省略this的时候,
1 package thisjava;
2
3 public class Person
4 {
5 String name;
6
7 void talk(String name)
8 {
9 //这种情况下,不可以省略this,如果省略掉的话,这里打印的name就不是成员变量< String name; >的name的值
10 //而是参数列表里面的< (String name) >的值
11 System.out.println("my name is"+this.name);
12 }
13 }
1 class Test{
2 public static void main()
3 {
4 Person p1=new Persom();
5 p1.name = "zhang";
6
7 Person p2=new Person();
8 p2.name="lisi";
9
10 p1.talk("zhangsan1");
11 p2.talk("lisi1");
12 }
13 }
原来this 这么复杂,未完 -- 待续
this的用法:
代码main函数:
1 class Test
2 {
3
4 public static void main()
5 {
6 Person p1=new Person("zhansan ",46,"beijing" );
7 }
8
9 }
Test.java
class Person{ string name; int age; String address; Person(){ System.out.println("无参数的构造函数"); } Person(String name,int age){ // this(); this.name=name; this.age=age; System.out.println("两个参数的构造函数"); } Person(String s1,int age,String address) { // 要注意的是,对this的调用必须是构造函数中的第一个语句, //下面的代码是错的,不可以用this同时调用两个构造函数,因为必然会有另外一个不是第一个语句,会出错的,如果一定要用this调用无参的构造函数 //可以将this(); 写到上一个Person的构造函数中的第一句话,如上面注释中的语句 // this(); //调用的是第一个构造函数,调用本类当中其他的构造函数,调用那一个是根据传入的参数过的个数,以及类型来决定 this(name,age); // 第二种用法,调用上一个的Person构造函数,避免代码的重复 this.address= address;// 第一种用法:把参数的address赋值给成员变量 System.out.println("三个参数的构造函数"); } }
运行结果如下: