java中this关键字的使用

本文详细介绍了Java中的this关键字,解释了其在方法调用及构造器中的应用,并探讨了this与static之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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前缀;

本文档用于个人学习交流里面有错误欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值