this关键字、this关键字应用

一、this关键字:
1、需求: 使用java类描述一个动物。
this关键字、this关键字应用_第1张图片
1)问题分析:存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java 采取的是就近原则的机制访问的)。
2)内存分析:
this关键字、this关键字应用_第2张图片

2、this关键字代表了所属函数的调用者对象。
this关键字、this关键字应用_第3张图片
解释:哪个对象调用这个函数,this就代表哪个对象

3、this关键字作用:
1)如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据。
a)举例:
this关键字、this关键字应用_第4张图片
b)内存分析:
this关键字、this关键字应用_第5张图片
2)在一个构造函数中可以调用另外一个构造函数初始化对象。

4、this关键字要注意事项:
1)存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java 采取的是“就近原则”的机制访问的。)
a)举例:
this关键字、this关键字应用_第6张图片
b)解决办法:

public Animals(String name,int age){
    this.name = name;   //局部变量的name、age赋给成员变量
    this.age = age;
}

2)如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么java编译器会默认在该变量的前面添加this关键字。
this关键字、this关键字应用_第7张图片

问题:
this关键字、this关键字应用_第8张图片
解决方法:
this关键字另一个作用应用:在一个构造函数中可以调用另外一个构造函数初始化对象。
this关键字、this关键字应用_第9张图片
说明:

this(); //无参构造方法调用
this(name); //有一个参数的构造方法调用

5、this关键字调用其他的构造函数要注意的事项:
1)this关键字调用其他的构造函数时,this关键字必须要位于构造函数中的第一个语句。

class Animals{
    String name;
    int age;

    public Animals(String name,int age){
        this(name);     //调用本类一个参数的构造方法
        //这样的this关键字必须位于构造函数的第一个语句处

        this.age = age;
        System.out.println("两个参数构造方法");
    }
    //参数不同的构造函数
    public Animals(String name){
        this.name = name;
        System.out.println("一个参数构造方法");
    }

    public void eat(){
        System.out.println(name+"吃");
    }
}

class Demo1{    
    public static void main(String[] args) {
        Animals dog = new Animals("狗",1);
        System.out.println(dog.name+","+dog.age);
    }
}

2)this关键字在构造函数中不能出现相互调用的情况,因为是一个死循环。
this关键字、this关键字应用_第10张图片

二、this关键字应用:
1、需求:使用java定义一个人类,人具备 id、name 、 age三个属性, 还具备一个比较年龄的方法。
2、要求: 必须要写上构造函数,构造函数也必须要使用上this关键字。
3、代码:
形式一:
this关键字、this关键字应用_第11张图片
形式二:
this关键字、this关键字应用_第12张图片

你可能感兴趣的:(Java随记,this关键字,this关键字应用)