0
点赞
收藏
分享

微信扫一扫

大数据必学Java基础(三十五):深入了解关键词this


大数据必学Java基础(三十五):深入了解关键词this_局部变量

文章目录

​​深入了解关键词this​​

​​一、创建对象的过程​​

​​二、this关键字用法​​

​​1、this可以修饰属性 ​​

​​2、 this修饰方法​​

​​3、this可以修饰构造器​​

深入了解关键词this

一、创建对象的过程

(1)在第一次遇到一个类的时候,对这个类要进行加载,只加载一次。

(2)创建对象,在堆中开辟空间

(3)对对象进行初始化操作,属性赋值都是默认的初始值。

(4)new关键字调用构造器,执行构造方法,在构造器中对属性重新进行赋值

大数据必学Java基础(三十五):深入了解关键词this_java_02

大数据必学Java基础(三十五):深入了解关键词this_构造器_03

 

从上面的效果能够看到:this指代的就是当前对象:

内存:

大数据必学Java基础(三十五):深入了解关键词this_java_04

二、this关键字用法

1、this可以修饰属性 

总结:当属性名字和形参发生重名的时候,或者  属性名字 和局部变量重名的时候,都会发生就近原则,所以如果我要是直接使用变量名字的话就指的是离的近的那个形参或者局部变量,这时候如果我想要表示属性的话,在前面要加上:this.修饰

如果不发生重名问题的话,实际上你要是访问属性也可以省略this

package com.lanson;

/**
* @Auther: lanson
*/
public class Person {
//属性
int age;
String name;
double height;
//空构造器
public Person(){

}
//有参构造器
public Person(int age,String name,double height){
this.age = age;
this.name = name;
this.height = height;
}
//方法:
public void eat(){
int age = 10;
System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
System.out.println(this.age);//这里指代的就是属性的age
System.out.println("我喜欢吃饭");
}
}

2、 this修饰方法

总结:在同一个类中,方法可以互相调用,this.可以省略不写

package com.lanson;

/**
* @Auther: lanson
*/
public class Person {
//属性
int age;
String name;
double height;
//空构造器
public Person(){

}
//有参构造器
public Person(int age,String name,double height){
this.age = age;
this.name = name;
this.height = height;
}
//方法:
/*public void eat(){
int age = 10;
System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
System.out.println(this.age);//这里指代的就是属性的age
System.out.println("我喜欢吃饭");
}*/

public void play(){
/*this.*/eat();
System.out.println("上网");
System.out.println("洗澡");
}

public void eat(){
System.out.println(/*this.*/age);
System.out.println("吃饭");
}
}

 

3、this可以修饰构造器

总结:同一个类中的构造器可以相互用this调用,注意:this修饰构造器必须放在第一行

package com.lanson;

/**
* @Auther: lanson
*/
public class Person {
//属性
int age;
String name;
double height;
//空构造器
public Person(){

}
//有参构造器
public Person(int age,String name,double height){
this(age,name);
this.height = height;

}
public Person(int age,String name){
this(age);
this.name = name;
}
public Person(int age){
this.age = age;
}
//方法:
/*public void eat(){
int age = 10;
System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
System.out.println(this.age);//这里指代的就是属性的age
System.out.println("我喜欢吃饭");
}*/

public void play(){
/*this.*/eat();
System.out.println("上网");
System.out.println("洗澡");
}

public void eat(){
System.out.println(/*this.*/age);
System.out.println("吃饭");
}
}

  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
举报

相关推荐

0 条评论