您的位置:首页 > 编程语言 > Java开发

java中this关键字的使用

2016-10-11 22:45 218 查看
java中提供了一个关键字this,该关键字总是指向调用该方法的对象。

this出现的位置不同:

一,this作为对象的默认引用的时候有两种情况

1.在方法中调用该方法的对象

public class person{
//person 中的say方法
public void buy(){
System.out.println("I want to buy an apple");
}
//定义一个say方法  在此方法中调用buy方法
public void say (){
person jack = new person();/*此处可以修改优化*/
jack.buy();             /*此处可以修改优化*/
System.out.println("正在使用buy方法");
}
}


在say方法中调用buy方法需要一个对象(也就是上面的jack),但是当程序在调用say方法时,一定存在一个对象,所以不需要再进行创建一个新的对象,这样可以直接使用调用say方法的对象,比如Jane ,Jhon等对象,可以使代码变得简洁。下面将say方法修改:

public void say(){
//使用this关键字引用调用say方法的对象
this.buy();//this指的是调用say方法的对象
//java允许对象的一个成员调用另外一个成员,可以省略this关键字,改               为下面形式
//buy();
System.out.println("正在执行say方法");
}


大部分的时候,一个方法在访问该类中定义的其他方法时候,加不加this都是一样的,但是在由static修饰的方法中不能使用this引用,因为在static修饰的方法中this无法指向合适的对象,由于static修饰的方法不能使用this引用,所以static修饰的方法不能访问不适用static修饰的普通成员,也就是所说的静态成员不能直接访问非静态成员。

例如:

public  class StaticAccessNonStatic{
public void amethod(){
System.out.println("一个方法");
}
public static void main(String args[]){
amethod();//此处调用info()方法会发生编译错误
}
}


对于static修饰的方法和变量属于类本身,而没有使用static修饰的方法和变量属于实例的方法和变量,而不是属于类的方法或变量,因此必须使用对象来调用该方法上面的main方法中直接调用amethod时,系统相当于直接使用this作为该方法的调用者,而main方法属于static修饰的方法,static修饰的方法属于类,而不属于对象。

注意:Java编程时不要使用对象去调用static修饰的成员变量,方法,应该使用类去调用static修饰的成员变量,方法。

2.构造器中引用构造器正在初始化的对象

public class Test{
public int f1;
public Test(){
int f1 = 0;
//使用this代表构造器正在初始化的对象
//下面的代码将会把构造器正在初始化的对象f1成员变量设位6
this.f1 = 6;
}
public static void main(){
System.out.println(new Test().f1);
//因为通过this将Test中的成员变量f1设为6 所以会输出6
}
}


大部分时候访问构造器中的成员变量和方法时候可以省略this,但是如果构造器中有一个和成员变量同名的局部变量的时候,要是引用成员变量,就必须使用this前缀;

本文档用于个人学习交流里面有错误欢迎指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java