Java中this关键字的用法
来源:互联网 发布:期货投资分析软件 编辑:程序博客网 时间:2024/05/18 07:25
Java中this关键字的用法
转自:http://blog.csdn.net/maozhennba3/article/details/49906915
在类的方法定义中使用的this关键字代表使用该方法的对象的引用,this指向的是自身对象的引用,我们可以通过一个小例子分析一下内存分配情况:
代码展示:
public class Leaf{ int i = 0; Leaf ( int i ){ this.i=i; } Leaf increament(){ i++; return this; } void print() { System.out.println(“i = ” + I ); } Public static void main(String [] args){ Leaf leaf = new (100); leaf.increament().increament().print(); } }
内存分析:
首先,栈空间中有个leaf,它指向我们新new出来的Leaf,其Leaf分配在堆空间中;
其次,调用Leaf的构造方法,在栈空间里分配构造方法的形参i,其值为100;在Leaf中有成员变量i,然后把栈里形参i的值赋给堆空间Leaf成员变量i(为100),构造方法完成,栈中的形参i消失;
再次,执行leaf.increament().increament()第一个ncreament(),其i++,则i变为101;return在我们栈空间分配一个临时的内存,这块内容是this的内容,this指向其对象自身,则在栈空间分配的这个临时空间也指向该对象;
然后,执行leaf.increament().increament()第二个ncreament(),其是对占内存分配的临时空间调用,即相当于对自身对象继续调用,此时i为102;接着return this,则又重复上面的过程我就不在重复解说,图示说明;
最后,调用print()方法,打印输出结果:
下面我们就介绍一下,this的几种用法:
(1) 当成员变量和构造方法中的参数重名时,在方法中使用this表明类中的成员变量。
代码如下:
public class Leaf{ int i = 0; Leaf ( int i){ this.i = i; } }
(1) 把自己当参数传递
代码如下:
class Fruit{ Fruit(){ New Apple(this).print; //调用B的方法 } void print(){ System.out.println(“欢迎来到水果世界”); } } class Apple{ Fruit fruit; Apple ( Fruit fruit){ this.fruit = fruit; } void print(){ a.print();//调用Fruit的方法 b.System.out.println(“欢迎来到苹果世界”); } }
在这里,对象Fruit的构造函数中,用new Apple(this)把对象Fruit自己当做参数传递给了对象Apple的构造函数。
3、在构造函数中,通常this可以调用同一类中别的构造函数。
代码如下:
Public class Person{ String name; int age; String sex; Person (string n, int g , string s){ name = n; age = g; sex = s; } Person ( string n ,I nt g){ This(n,g,”男”) }
4、this同时传递多个参数。
Public class Person{ String name; int age; static void show( Person person){ System.out.println( person.name + “,” + person.age); } void see(){ show(this); } }
这里相当于吧当前实例化的person传给了show()方法。
5、当用到一些内部类或匿名类,如事件处理。在匿名类中用this时,这个this指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。
Public class Person{ Person ( ) { Thread thread = new Thread ( ){ Void run ( ){ Person.this.run();//调用外部类的方法 } } void run ( ){ System.out.println(“跑”); } }
在这里,thread 是一个匿名类对象,在它的定义中,它的 run 函数里用到了外部类的 run 函数。这时由于函数同名,直接调用就不行了。这时有两种办法,一种就是把外部的 run 函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的。那么就可以用这个例子中的办法用外部类的类名加上 this 引用来说明要调用的是外部类的方法 run。
总之,this不管有几种用法,它都是代表使用该方法的对象的引用。
- Java中this关键字的用法
- Java中this关键字的用法
- java中this关键字的用法
- java中this关键字的用法
- java中this关键字的用法
- Java中this关键字的用法
- java中this关键字的用法
- Java中this关键字的用法汇总
- Java中this关键字的用法
- java中this关键字的用法
- Java 中 【this】关键字的用法
- JAVA中 this关键字的用法
- Java中this关键字的用法
- java中this关键字用法
- Java中this关键字用法
- Java中this关键字和super关键字的用法
- java中this关键字和static关键字的用法
- java this关键字的用法
- butterknife配置以及使用
- C++ (MFC) 编写注册表,使开机自启动
- windows socket 简单实现
- 史上最简单的 SpringCloud 教程 | 终章
- date类型,怎么转换为timestamp类型?
- Java中this关键字的用法
- WPA-PSK无线网络破解原理及过程
- Neo4j 第一篇:在Windows环境中安装Neo4j
- [面试]常用linux命令
- restful:put操作资源可能存在的安全问题
- 25种提高网页加载速度的方法和技巧
- 丛林战争项目三之开启异步处理客户端连接请求
- windows命令行启动mysql服务
- eclipse run configuration arguments