Java菜鸟学习笔记--面向对象篇(四):This指针
来源:互联网 发布:smaat7软件下载mac 编辑:程序博客网 时间:2024/05/22 08:28
简述
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
主要用于以下方面:
- this表示调用者(对象),在方法内使用成员变量时候
- 调用用类中的其他方法(编译器自动添加)
- 用构造器调用其他构造器
示例
1.没有this情况下,如何调用同类中的方法?
- class A
- {
- public void run()
- {
- System.out.println("调用run");
- }
- public void jump()
- {
- //不用this指针怎么调用方法run()?
- //另外创建对象,再用对象调用方法
- A temp=new A();
- temp.run();
- System.out.println("调用jump");
- }
- }
- public class ThisTest
- {
- public static void main(String[] agrs)
- {
- //用this指针与不用this指针的对比
- A one=new A();
- one.jump();//一共创建了2个对象,一个在main里面,一个在调用jump时候。
- }
- /*输出:
- 调用run
- 调用jump
- */
- }
2.用This指针
- class A
- {
- public void run()
- {
- System.out.println("调用run");
- }
- public void jump()
- {
- //用this指针
- this.run();
- //一般直接省略 this.
- run();
- System.out.println("调用jump");
- }
- }
3.当局部变量和Field同名时候采用this指针
- class A
- {
- private int number;
- private String name;
- public void set(int number,String name)
- {
- number=number;//在同名情况下用This指针,假如不用也可用编译通过,但是没有达到赋值效果
- name=name;//这样赋值,number,name都为默认初始值 0和null
- this.number=number;//这样编译器能知道给字段赋值
- this.name=name;
- }
- public void show()
- {
- System.out.println("number: "+number);//自动用this指针标识,this代表调用对象的空间
- System.out.println("name: "+name);//同样自动用this标识
- }
- }
- public class ThisTest
- {
- public static void main(String[] agrs)
- {
- //用this指针与不用this指针的对比
- A one=new A();
- one.set(123,"yg");//传值过去时候自动标识对象
- A sec=new A();
- sec.set(456,"gg");
- one.show();
- sec.show();
- }
- /*输出:
- number: 123
- name: yg
- number: 456
- name: gg
- */
- }
4.用This修改构造函数
- //用this指针修改构造函数,增强函数可读性
- A(int number,String name){
- this.number=number;
- this.name=name;
- }
5.This应用于多个构造函数
- A(){}
- A(int number,String name){
- this.number=number;
- this.name=name;
- System.out.println(" 调用2个参数构造函数");
- }
- A(int number,String name,String address){
- this(number,name);//直接调用第二个构造函数,消除了重复代码
- this.address=address;
- System.out.println("调用3个参数构造函数");
- }
- 结果:
- 调用2个参数构造函数
- 调用3个参数构造函数
- number: 123
- name: yg
作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).转载自: http://blog.csdn.net/incyanggan/article/details/9337309
0 0
- Java菜鸟学习笔记--面向对象篇(四):This指针
- Java菜鸟学习笔记--面向对象篇(四):This指针
- Java菜鸟学习笔记--面向对象篇(五):方法
- Java菜鸟学习笔记--面向对象篇(七):简易继承
- Java菜鸟学习笔记--面向对象篇(十三):interface
- 面向对象的程序设计学习笔记-16-使用this指针
- java学习笔记(四)面向对象
- 【菜鸟C++学习笔记】19.this指针
- Java菜鸟学习笔记--面向对象篇(十八):对象转型&多态
- 【学习笔记05】java面向对象-this、static
- Java菜鸟学习笔记--面向对象篇(一):类的定义
- Java菜鸟学习笔记--面向对象篇(二):封装与访问修饰符
- Java菜鸟学习笔记--面向对象篇(三):构造器&重载
- Java菜鸟学习笔记--面向对象篇(六):static修饰符
- Java菜鸟学习笔记--面向对象篇(八):成员变量和局部变量
- Java菜鸟学习笔记--面向对象篇(九):Oerride与super限定
- Java菜鸟学习笔记--面向对象篇(十):有爱的打印机实例
- Java菜鸟学习笔记--面向对象篇(十一):&abstract方法/类
- 基于单文档的VC++动态曲线绘制
- OC学习总结(一)
- Undefined reference to symbol 'vtkCellArray::New()'
- 【Struts2】Struts2底层原理简单模拟
- Android智能电视应用程序开发浅谈(一)
- Java菜鸟学习笔记--面向对象篇(四):This指针
- Struts2中的按钮标签
- 首字母变大写
- 第十四周项目1-折腾二维数组
- 为阅读/修改postgresql内核做准备工作
- Linux 路由 学习笔记 之十 路由缓存项的创建
- hdu021Fibonacci Again
- 哈希表
- Lab 3: Privilege Separation