JAVA中的this关键字
来源:互联网 发布:社交网络 迅雷下载 编辑:程序博客网 时间:2024/05/29 16:02
this在java中表示出以下三个概念:
1、调用类中的属性或方法
类中各个方法的参数列表中常见和属性同名的参数,如用于封装的方法setName(String name),这时用this.name表示类的属性,以区分形参和属性。
比较Person1和Person2,同样的类,区别只在构造方法的参数,Person1传递的参数是n和a,不够直观,Person2直接用name和age作为形参,和类的属性重名,十分直观。若在构造方法中直接写name=name;age=age,等号左边表示的是形参,并非类中的属性,会导致实例化的时候name和age属性为空,所以用this.name表示类中的属性,this.age同理。
class Person1{
private String name;
private int age;
public Person1(String n,int a){
name=n;
age=a;
}
……
}
class Person2{
private String name;
private int age;
public Person2(String name,int age){
this.name=name;
this.age=age;
}
……
}
2、调用类中的构造方法
一段好的程序应该尽可能的消除代码的重复,落实到一个类的构造上,若该类中有多个构造函数,并且各个构造函数之间有包含关系的话,通过this()调用代替代码的重复。下面两个类是等价的,Person2的写法更符合规范。
class Person1{
private String name;
private int age;
public Person1(){
system.out.println("对象已经创建");
}
public Person1(String name){
system.out.println("对象已经创建");
this.name=name;
}
public Person1(String name,int age){
system.out.println("对象已经创建");
this.name=name;
this.age=age;
}
}
class Person2{
private String name;
private int age;
public Person2(){
system.out.println("对象已经创建");
}
public Person2(String name){
this();
this.name=name;
}
public Person2(String name,int age){
this(name);
this.age=age;
}
}
执行构造方法必须放在对对象的所有操作之前,所以用this调用构造方法必须放在所有代码之前。各个构造方法不能递归调用形成死循环,所以一定有一个构造方法不是使用this()调用的,作为出口,这个构造方法一般是无参构造方法。3、表示当前对象
class Person{
public void print(){
system.out.println(this);
}
}
public class Demo1{
public static void main(String args[]){
Person p1 = new Person();
system.out.println(p1);
p1.print();
}
}
代码的执行结果是将Person在内存中的存储位置打印两遍。
本文的思想来自魔乐科技关于java的一系列课程,非常详细,建议初学者看一看。
- java中的this关键字
- java 中的this关键字
- java中的this关键字
- java中的this关键字
- java中的关键字this
- java 中的关键字 this
- Java中的this关键字
- Java中的this关键字
- Java中的关键字“this”
- java中的this关键字
- JAVA中的this关键字
- Java中的this关键字
- Java中的this关键字
- JAVA中的This关键字
- Java中的this关键字
- java中的this关键字
- JAVA中的this关键字
- JAVA中的this关键字
- android上开源的酷炫的交互动画和视觉效果
- JavaSE013_数组之常用工具类封装二
- Arduino串口读取夏普GP2Y1051
- 1002. 写出这个数 (20)
- 数控铣床常用编程指令
- JAVA中的this关键字
- x265-1.7版本-common/picyuv.h注释
- android wav录音,停止和播放
- ngrok公网映射
- mapTakeElement
- Html5、CSS、JavaScript小知识---ios
- android 自定义相机
- 转圈圈(正在加载的控件)的2种创建方法
- 最近比较关注前端技术