Java this关键字

源码:


图片.png

图片.png

输出结果:

图片.png

在main方法中打印出来new出来的那个实例对象的地址是student.Xx@7b1d7fff
在new实例化对象的时候,调用构造函数时打印出来的this也是student.Xx@7b1d7fff
打印出来成员方法中的this也是student.Xx@7b1d7fff


综上,new关键字应该是先执行的,作用是根据开辟堆内存空间,创建出来对象的引用就是student.Xx@7b1d7fff,而调用构造方法时,通过this关键字访问的属性并不是类中的属性,而是实例化的那个对象中的属性(此时该对象属性为初始值),构造函数的作用就是对new出来的那个对象的属性进行初始化。以为this指向的是创建出来的那个堆内存空间,所以如果在静态方法中访问this会出现这样一个问题,类是由JVM生成的,生成类后类的静态方法就可以访问了,因为this总是指向新开辟的那个堆内存空间,此时并没有调用new关键字开辟内存空间,所以JVM创建一个类后,静态方法中的this并没有明确指向,这样再通过this调用,逻辑就会出错。这也是为什么编译时,静态方法中不允许出现this关键字的原因。
***记住一点,this总是指向new出来的那个堆内存空间就行了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容