java中this关键字的使用

this关键字代表当前类对象创建时的引用(调用方法或者属性时的那个对象),由于在编写类时对象还没有创建,所以用this来指代对象引用,当对象被创建出来时,this指代的是某一个对象引用

代码示例

public class Person {
     
    //定义Person类三个属性
    public String name;
    public int age;
    public String sex;

    
    public Person(){
     }

    
    public Person(String name,int age,String sex){
     
        name=name;
        age=age;
        sex=sex;
    }

}

以上带参数构造方法中,由于构造方法参数列表中参数名字和属性名字相同,此时在当前构造方法中,会根据就近原则,即参数赋值给参数,属性中并未赋值成功,因此可以使用this关键字来指代创建对象时的属性,此时this指代创建对象时调用属性或者方法的对象

this关键字使用的位置

  • 可以放在在类中的任何成员位置
  • 类中的成员可分为:属性、方法、程序块、构造方法

代码示例

public class Person {
     
    //定义Person类三个属性
    public String name=this.test();
    public int age;
    public String sex;

    {
     
        this.test();
        System.out.println("我是普通的程序块");
    }
    public Person(){
     
        this.test();
    }


    public Person(String name,int age,String sex){
     
        this.name=name;
        this.age=age;
        this.sex=sex;
        this.test();
    }

    private String test() {
     
        System.out.println(this.name);
        return "";
    }

}

this关键字也可以在构造方法内调用另一个构造方法,通过this();来调用,此处省略了构造方法的名字(由于必须与类名一致),但是它必须放在方法里执行的第一句代码

代码示例

public class Person {
     
    //定义Person类三个属性
    public String name;
    public int age;
    public String sex;


    public Person(){
     
        System.out.println("我是无参数的构造方法");
    }
//构造方法不能来回调用,编译时就不允许,报错

    public Person(String name,int age,String sex){
     
        this();
        this.name=name;
        this.age=age;
        this.sex=sex;
        this.test();
        System.out.println("我是有参数的构造方法");
    }

    private String test() {
     

        return "";
    }

}
public class TestMain {
     
    public static void main(String[] args) {
     
        Person person = new Person("chenhui",22,"男");
        System.out.println(person.name+"今年"+person.age+"性别为:"+person.sex);
    }
}

测试结果
我是无参数的构造方法
我是有参数的构造方法
chenhui今年22性别为:男

你可能感兴趣的:(java中this关键字的使用)