初学者つ﹏⊂,简单记录一下this
关键字的部分用法。
引用当前类的实例变量
若实例变量与形参之间存在歧义,则可使用this
关键字解决歧义。
不使用this关键字的情况
class Person { String name; int age; Person(String name,int age) { name=name; age=age; } void OUTPUT() { System.out.println("name: "+name); System.out.println(" age: "+age); } } public class PRACTICE0 { public static void main(String[] args) { Person P0=new Person("NIMITIZ",18); Person P1=new Person("NIMITIZ-FBH",19); P0.OUTPUT(); P1.OUTPUT(); } }
|
运行结果:
name: null age: 0 name: null age: 0
|
使用this关键字的情况
class Person { String name; int age; Person(String name,int age) { this.name=name; this.age=age; } void OUTPUT() { System.out.println("name: "+name); System.out.println(" age: "+age); } } public class PRACTICE1 { public static void main(String[] args) { Person P0=new Person("NIMITIZ",18); Person P1=new Person("NIMITIZ-FBH",19); P0.OUTPUT(); P1.OUTPUT(); } }
|
运行结果:
name: NIMITIZ age: 18 name: NIMITIZ-FBH age: 19
|
调用当前类的一般方法
可以使用this
关键字调用当前类的一般方法;若调用当前类的一般方法时没有在源码中使用this
关键字,Java编译器将会自动提供this
关键字。
class HELLOWORLD { void x() { System.out.println("Hello world!"); } void y() { x(); this.x(); } } public class PRACTICE2 { public static void main(String[] args) { HELLOWORLD HW=new HELLOWORLD(); HW.y(); } }
|
运行结果:
调用当前类的构造方法
构造方法是类在实例化对象时自动调用的,不能如调用一般方法那样通过方法名或类名来调用;但如果一个类包含有多个构造方法,则可以在一个构造方法中通过this
关键字来调用其他构造方法。
- 只能在构造方法中通过
this
关键字来调用其他构造方法,不能在一般方法中通过this
关键字来调用构造方法
- 不能在一个构造方法中通过
this
关键字直接或间接地调用该构造方法本身
- 对
this
关键字的调用必须是构造器中的第一个语句
- 不能在一个构造方法中同时使用关键字
this
和super
调用其他构造方法(因为对super
关键字的调用也必须是构造器中的第一个语句)
- 不能在一个构造方法中多次调用不同的构造方法
- 在构造方法中可以使用
this
关键字来调用本类的成员变量和成员方法,其用法与非构造方法中的this
关键字相同
在有参构造方法中调用无参构造方法
class HELLOWORLD { HELLOWORLD() { System.out.println("Hello,world!"); } HELLOWORLD(int x) { this(); System.out.println(x); } } public class PRACTICE3 { public static void main(String[] args) { HELLOWORLD HW=new HELLOWORLD(18); } }
|
运行结果:
在无参构造方法中调用有参构造方法
class HELLOWORLD { HELLOWORLD(int x) { System.out.println(x); } HELLOWORLD() { this(18); System.out.println("Hello world!"); } } public class PRACTICE4 { public static void main(String[] args) { HELLOWORLD HW=new HELLOWORLD(); } }
|
运行结果:
重用构造方法
this()
构造方法调用可用于重用构造方法。
class Person { String name; int age; char sex; Person(String name,int age) { this.name=name; this.age=age; } Person(String name,int age,char sex) { this(name,age); this.sex=sex; } void OUTPUT() { System.out.println("name: "+name); System.out.println(" age: "+age); System.out.println(" sex: "+sex); } } public class PRACTICE5 { public static void main(String[] args) { Person P0=new Person("NIMITIZ",18); P0.OUTPUT(); Person P1=new Person("NIMITIZ",18,'M'); P1.OUTPUT(); } }
|
运行结果:
name: NIMITIZ age: 18 sex: name: NIMITIZ age: 18 sex: M
|
补充
this
关键字访问成员变量和成员方法时不受访问权限的限制,可以访问本类中所有的成员变量和成员方法。
整理自
Java this关键字
Java this 关键字用法