java语言核心----面向对象之this关键字

一.this关键字

体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别;在构造函数中调用其它构造函数 原理: 代表的是当前对象。 this就是所在函数的所属对象的引用。 简单说,哪个对象调用了this关键字所在的函数,this就代表哪个对象。

1.区别局部变量和成员变量

内存图解:

说明:

  1. 程序执行到main函数时,main函数进入栈内存中的方法区, 执行到Person p = new Person(“旺财”);时, 在main方法区中创建一个Person类型的引用变量p
  2. 接着,在堆内存中创建一个Person类的实例,并初始化,然后调用构造函数,在栈内存中创建一个Person(String name)函数的方法区,对象一调用构造函数,构造函数的方法区中就会有一个this引用指向该对象
  3. 执行Person(String name)中的代码,把this所指向的对象进行初始化,执行完成后,Person方法区出栈
  4. 给栈中main方法区中的p赋值,使之指向this所指向的对象
  5. 执行speak方法,speak方法进入方法区,打印的是this所指向对象的name和age

2.在构造函数中的使用

详见 另一篇博客[java学习笔记]java语言核心----面向对象之构造函数 中的标题4:构造函数的相互调用

3.this的应用

只要在本类中使用本类的对象,一般都使用this关键字 如:在Person类中增加一个比较年龄的方法

原文发布于微信公众号 - java一日一条(mjx_java)

原文发表时间:2015-12-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hongten

java中静态变量和实例变量到底有什么区别_看了就知道啦

==================================================

9130
来自专栏技术博文

2.js中对于函数参数不确定的解决--arguments

1.arguments对象 在函数代码中,使用特殊对象 arguments,无需明确指出参数名,就能访问它们。 例如,在函数 sayHello() 中,第一个参...

28540
来自专栏数据结构与算法

05:最大值和最小值的差

05:最大值和最小值的差 总时间限制:1000ms内存限制:65536kB描述 输出一个整数序列中最大的数和最小的数的差。 输入第一行为M,表示整数个数,整数个...

38550
来自专栏开发与安全

从零开始学C++之对象的使用(二):四种对象生存期和作用域、static 用法总结

一、四种对象生存期和作用域 ? 栈对象 隐含调用构造函数(程序中没有显式调用) 堆对象 隐含调用构造函数(程序中没有显式调用),要显式释放 全局...

20700
来自专栏海天一树

小朋友学Python(10):C/C++/Java/Python的关键字

一、C语言关键字 C语言关键字有32个 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternf...

28080
来自专栏LhWorld哥陪你聊算法

python 使用小结

使用Python 已经一段时间了 ,现将python 中可能用到的技巧和一些知识点分享如下。

11710
来自专栏java一日一条

java语言核心----面向对象之this关键字

9430
来自专栏JavaEE

Java的反射机制前言:Java反射的使用:总结:

14740
来自专栏Rgc

python中赋值,深拷贝,浅拷贝区别

这三种不适合 int,str,float,bool等类型。因为这些类型在值改变后,被赋值的变量值不变。

34420
来自专栏古时的风筝

Python中的几种数据类型

大体上把Python中的数据类型分为如下几类: Number(数字) 包括int,long,float,complex St...

231100

扫码关注云+社区

领取腾讯云代金券