this的四种用法及注意事项
1.代表成员变量
我们如何区分开:同名的成员变量和在构造方法中的局部变量呢?---用this。
package com.dh.oop;
public class ThisDemo {
public String name;
public ThisDemo(String name){
//将构造方法的参数值赋值给成员变量
this.name = name;
}
}
在构造方法中,this代表的就是成员变量。
2.代表当前对象的引用
我们知道,在实例化对象时,会利用构造方法进行初始化成员变量,所以每调用一次构造方法,初始化的都是正在实例化的这个对象的成员变量,即this,所以在构造方法中输出this,结果为当前对象的哈希码值。对象是引用数据类型,直接输出,输出的就是其地址。
package com.dh.oop;
public class ThisDemo {
public String name;
public ThisDemo(){
//在构造方法中输出this,为当前调用构造方法实例化对象的哈希码值
System.out.println(this);
}
public static void main(String[] args) {
ThisDemo tom = new ThisDemo();
ThisDemo jerry = new ThisDemo();
}
}
3.在构造方法中使用this调用其它构造方法
package com.dh.oop;
public class ThisDemo {
public String name;
public int age;
//第一个构造方法
public ThisDemo(String name){
//调用第二个构造方法
this(name,18);
}
//第二个构造方法
public ThisDemo(String name,int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
//调用第一个构造方法
ThisDemo tom = new ThisDemo("tom");
System.out.println(tom.name+"\t"+tom.age);
}
}
分析结果,虽然在main方法中调用的是第一个构造方法,但由于在第一个构造方法中调用了第二个构造方法,所以输出了tom 18。
注意:
必须放在第一行,所以每个构造器中只能使用一次,因为必须要保证在第一行,但是要注意,不能相互调用,否则书写代码时就会报错。
4.调用其它成员方法
public void show(){
System.out.println("show");
}
public void show1(){
//调用其它成员变量,该this通常可省略
this.show();
show();
}
这种用法了解一下即可~
5.this使用注意事项
this不能用于static方法中!
很很很浅显的解释一下:static修饰的方法是静态方法,是属于类的,它是在类装载的时候初始化的,也就是说它是最早出生的方法,这个时候对象都还没出生,你却让static方法去使用它,这肯定是不对的!你不能在你妈妈都没怀上你的时候就去给学校报名让你上学吧!
最最常用的就是1,以及注意事项要了解。