动力节点——this关键字(八)

一,this关键字的引入

this表示当前对象(本对象)

class  T{

    ​    ​int  a=10;

    ​    ​public  void  test(){

    ​    ​    ​    ​int  a=20;

    ​    ​    ​    ​/*

    ​    ​    ​    ​下面的输出语句会直接找test方法执行空间中的a

    ​    ​    ​    ​System.out.println("a="+a);    ​20

    ​    ​    ​    ​如何输出10?如何直接使用成员变量?

    ​    ​    ​    ​使用this来指明要输出的是本类对象的成员变量a的值

    ​    ​    ​    ​ System.out.println("a="+this.a);

    ​    ​    ​    ​*/

    ​    ​}

}

public  class  ObjectDemo01{

    ​    ​public  static  void  main(Striing[]  args){

    ​    ​    ​    ​T  tt=new  T();

    ​    ​    ​    ​tt.test();  //10

    ​    ​    ​    ​T  tt1=new  T();

    ​    ​    ​    ​tt1.a=30;

    ​    ​    ​    ​tt1.test();   //30

    ​    ​}

}


二,this关键字常见使用方法

1,this指当前对象

2,this只能写在类的内部,不能写在类的外部。

3,this可以用在方法方法内部使用,说明普遍的方法中是默认有this关键字的。

4,使用this访问成员变量。    ​    ​语法:this.成员变量名称

5,使用this访问成员方法。    ​    ​语法:this.方法名称(参数值)

6,使用this可以在一个构造方法内调用另一个构造方法。    ​    ​语法:this(参数值)

class  T2{

    ​    ​int  a=10;

    ​    ​public  void  test(){

    ​    ​    ​    ​System.out.println("成员方法test");

    ​    ​}

    ​    ​//使用this访问成员变量

    ​    ​public  void  test1(){

    ​    ​    ​    ​//以下的输出语句会先在当前执行空间找变量a;如果没有找到再去对象的成员变量a;

    ​    ​    ​    ​System.out.println("a="+a);    //10

    ​    ​    ​    ​this.a=40;

    ​    ​    ​    ​System.out.println("a="+this.a);//直接定位到对象的成员变量a。

    ​    ​}

    ​    ​//使用this访问成员方法

    ​    ​public  void  test2(){

    ​    ​    ​    ​System.out.println("成员方法test2");

    ​    ​    ​    ​test();

    ​    ​    ​    ​//this.test();

    ​    ​    ​    ​//以上两句代码test()和this.test()是同等级的。

    ​    ​    ​    ​//实际上test()代码的执行最终就是按this.test()执行的。

    ​    ​}

}

public  class  ObjectDemo02{

    ​    ​public  static  void  main(String[]  args){

    ​    ​    ​    ​T  tt1=new  T();

    ​    ​    ​    ​//tt.test();

    ​    ​    ​    ​//this.test();this只能在T类内部。

    ​    ​    ​    ​//tt.test1();


    ​    ​    ​    ​tt1.test2();


    ​    ​    ​    ​T  tt2=new  T();

    ​    ​    ​    ​tt2.test2();

    ​    ​}

}


三,this关键字的内存图解

class  Cat{

    ​    ​String  name;

    ​    ​int  age=1;

    ​    ​public  void  cotchMouse{

    ​    ​    ​    ​ystem.out.println("猫抓老鼠");

    ​    ​}

}

public  class  ObjectDemo03{

    ​    ​public  static  void  main(String[]  args){

    ​    ​    ​    ​Cat  c1=new  Cat();

    ​    ​    ​    ​c1.name="小三";

    ​    ​    ​    ​c1.age=3;

    ​    ​    ​    ​c1.cotchMouse();


    ​    ​    ​    ​Cat  c2=new  Cat();

    ​    ​    ​    ​c2.name="小二";

    ​    ​    ​    ​c2.age=1;

    ​    ​    ​    ​c2.cotchMouse();

    ​    ​}

}


注:这里多了两步。

1,成员变量已有初始化值,对象开辟空间默认初始化值,再把成员变量已有的显示化指放入成员变量中。   int  age=1;(这个是显示化指)

2,对象开辟空间后,所有成员变量显示化值之后,马上开辟this空间,指向本对象。


四,一个对象的创建

​ 加载

    ​    ​把类的描述信息放入内存

创建

    ​    ​在堆内存为对象开辟空间

    ​    ​为成员变量开辟空间并默认初始化

    ​    ​为成员变量初始化

    ​    ​为this和super开辟空间

使用


五,带有this关键字的class代码

class  Student{

    ​    ​private  int  age;

    ​    ​//setter       getter

    ​    ​public  void  setAge(int  age){

    ​    ​    ​    ​this.age=age;

    ​    ​}

    ​    ​public  int  getAge(){

    ​    ​    ​    ​return  age;

    ​    ​}

}

public  class  ObjectDemo04{

    ​    ​public  static  void  main(String[]  args){

    ​    ​    ​    ​System.out.println("game  over");

    ​    ​}

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值