在前面我们一起学习了java中类和对象的很多相关知识,今天来继续学习。想必很多java零基础的新手小白通过看书和看java培训课程的时候都有接触到this关键字的知识,今天下面要讲的内容就是java中this关键字的相关知识,大家一起来学习吧。
This就是java语言中众多关键字中的一个关键字,this关键字表示当前这个对象,也就是说当前谁调用该方法则这个对象就是谁。每个对象都可以使用关键字this访问其自身的引用,this引用可以隐式的或显示的调用该方法的对象的实例变量和其他方法,this的参考名称并不属于实体变量,事实上在调用本对象方法时,this当成一个隐形的参数传给这个方法。
This关键字主要有三个应用:一是this关键字可以访问本类中的实例变量,当局部变量和成员变量同名时,如果访问成员变量则必须使用this;二是this关键字可以访问本类中的实例方法;三是this关键字可以访问本类中的其他构造方法,则使用this([参数列表]),这里需要注意,使用this访问本类中的构造方法时,只能编写在构造方法中并且是第一条语句;当this关键字访问构造方法时,不能出现递归调用。
This关键字可以作为参数传递,当要把自己作为参数传递给别的对象时,也可以用this。如:
public class A{
public A(){
new B(this).print();
}
public void print(){
System.out.println("From A!");
}
public static void main(String[] args) {
new A();
}
}
public class B{
A a;
public B(A a){
this.a = a;
}
public void print(){
a.print();
System.out.println("From B!");
}
}
运行结果:From A!
From B!
This关键字还有另外一种用法,使用在构造方法第一行(只能出现在第一行),通过当前构造方法调用本类当中其它的构造方法,其目的是为了代码复用。调用时的语法格式是:this(实际参数列表),请看以下代码:
public class Date {
private int year;
private int month;
private int day;
//业务要求,默认创建的日期为1970年1月1日
public Date(){
this.year = 1970;
this.month = 1;
this.day = 1;
}
public Date(int year,int month,int day){
this.year = year;
this.month = month;
this.day = day;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
}
public class DateTest {
public static void main(String[] args) {
Date d1 = new Date();
System.out.println(d1.getYear() + "年" + d1.getMonth() + "月" + d1.getDay() + "日");
Date d2 = new Date(2008 , 8, 8);
System.out.println(d2.getYear() + "年" + d2.getMonth() + "月" + d2.getDay() + "日");
}
}
运行结果为:
1970年1月1日
2008年8月8日
希望大家可以通过上面对this关键字的介绍和概念的解读,可以在写程序的过程中熟练操作使用this关键字。
最后需要强调一点:静态成员不能直接访问非静态成员,即static修饰的方法不能访问不适用static修饰的普通方法。对于static修饰的方法而言,可以使用类直接调用该方法,如果在static修饰的方法中使用this关键字,则这个关键字就无法指向合适的对象。所以,static修饰的方法中不能使用this引用。上面就是java中this关键字的相关知识。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19