2021-9-9 this关键字

this关键字

一,this关键字的含义及用法

1,this关键字顾名思义,中文名为 “这个”
2,this是一个引用,其中保存了指向自身的内存地址,this存储在jvm的堆内存的Java对象当中,可以把它当成一个变量。
3,创建n个Java对象,每一个都有this,也就有n个不同的this
4,this可以出现在 “实例方法” 当中,指向当前正执行这个动作的对象。而且,在多数情况下,this可以省略不写。
5,this不能用在带有static的方法当中。

例:

public class person {
             String name;
public static void main (String []args) {
        person p=new person();
            p.name="Van";
       System.out.println(p.name);
//此处不能使用this.name,因为static,有static的方法不是实例方法=引用,也不是实例变量
}//当一个行为有对象参与时,就不要带static了,一定要定义为实例变量。
public person() {
	 this.name="aoligei";//表示这个方法中的name名为aoligei,先运行person方法,在运行主函数程序。
 System.out.println(this.name);//这里也可以用name类来输出的,this可以被省略,也可以写上
	}//注意,this最好每次都写上,以便区分
}//输出为aoligei Van

二,this关键字以及访问方式的使用

例:

public class person {
	
	       int num=10;//全局变量
	public static void main (String []args) {
	System.out.println(tt.num);//错
	System.out.println(num);//错
	}
}

此处报错是因为name出现了问题。这个执行过程没有“当前对象”参加,因为带有static的方法是通过 “类名.”的方式访问的。在后两行的行代码中,因为没有对象,所以也就不能使用this(this是指代表当前正在执行这个动作的对象)
person是一个类名去调用的,而不是一个对象调用的,执行过程没有当前对象保存在内存地址中。
num是一个实例变量,报错行代码含义是访问当前对象的num,static方法却又不需要调用对象,直接使用类名即可,所以执行过程中没有对象,自然不需要this。

那我如果像访问这个num该怎么办?
两个方法:
例:

public class person {
	      static String name="aoligei";//将其变为静态变量
	public static void main (String []args) {
}
	public static void person() {
		System.out.println(name);//通过
	}
}

或者

public class person {
	       int num=10;
	public static void main (String []args) {
              person tt=new person();//创建对象
	System.out.println(tt.num);//访问通过
	}

}	
	

因此要注意,在有static的方法中,不能直接访问实例变量和方法,因为实例变量和方法都需要对象的存在。static中没有this,也就是当前对象不存在,自然也就无法访问当前的对象的实例变量和方法。

三,this不能省略的情况
this在某种情况下不能省略:

public class person {
       private int id;//全局变量id
      public void setId(int id) {
      id=id;//因为代码有就近原则,所以id=id中的id不是int id,而是(int id)
    	  this.id=id;//因此要区分,我要使用this
      }
public static void main (String []args) {	
               。。。。。。
}
}

this可以区分局部变量和实例变量,在这种使用中不能省略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值