java 中this关键词的使用
来源:互联网 发布:海贼王启航 淘宝号 编辑:程序博客网 时间:2024/04/29 21:45
this关键词在java使用地比较频繁,对于大多数初学者而言,this让人很烦恼,但它却又非常重要。
现在先说下this关键词的应用。this关键词主要有三个应用,1.引用成员变量,2.调用构造器(构造方法),3.返回当前对象的引用。
一、引用成员变量
引用成员变量这一用法,在构造函数中可以经常看到。如下面一个例子:
String test1 = "1";String test2 = "2";Test1(String test1,String test2){System.out.println("赋值之前:"+this.test1);System.out.println("赋值之前:"+this.test2);this.test1 = test1;this.test2 = test2;System.out.println("赋值之后:"+this.test1);System.out.println("赋值之后:"+this.test2);}public static void main(String[] args) {Test1 t = new Test1("a","b"); }输出的结果:
可以看到,this.test1指向的是类的成员变量,而不是构造方法中的形式参数。在实际应用中,例子中的两个成员变量在定义时是没有赋值的,而是通过构造函数初始化成员变量。而使用this关键词也可以将成员变量与形式参数很好的区分开来 。
二、调用构造方法
调用构造方法,一般是指在同一个类中一个构造方法调用其他构造方法。一个类可以有多个构造方法,有时因为功能需要,就需要构造方法之间的相互调用。这个可以用this来实现。
看如下例子:
Test1(){this("e");}Test1(String a,int b){System.out.println(a+""+b);}Test1(String a){this("abc",123);}public static void main(String[] args) {Test1 t = new Test1();}输出的结果是: abc 123 。
当new一个Test1的时候,就会执行其无参构造方法,在这个无参构造方法中,调用了this("e"),这样,编译器会直接找到符合只有一个形式参数且类型相同的构造方法,继而再次调用this("abc",123),同理,找到符合条件的构造方法后,就输出最终结果。当然,构造方法中的参数类型也必须一致。
需要注意的是,只能在构造方法中使用this调用其他构造方法,其他任何方法都不可以调用。另外,同一个构造方法中只能用一个this,并且对其他构造方法的调用的代码必须写在代码块的第一行,比如,在this("e")的前面再添加一行,就会报错。
三、返回当前对象的引用
这个是最常用的,而且我个人觉得,前面两个都是基于这点而使用的。比如第一个应用,引用成员变量。当new一个对象时,完全可以用对象的引用来代替this来调用成员变量。
先看下面一个例子:
String test;public Test1 demo(String test){this.test = test;System.out.println(test);return this;}public static void main(String[] args) {Test1 t = new Test1();t.demo("456").demo("789");}
另一个例子,就是重写equals()方法的实现中也有用到this。
public boolean equals(Object obj){……省略……if(this==obj)return true;……省略……}这个this所指的也就是当前对象的引用。
另外其实在内部类中也会有用到this的这个功能。
其实,this不仅可以引用成员变量,同时也可以引用成员方法。但是一般不会在一个方法中写this.xxx()。因为,这个this编译器会自动添加上去。另外,之所以不使用this来引用成员变量是出于对于代码观赏性,因为并不是所有人都喜欢到处用this,如果随意写this的话,可能还会引起其他人的迷惑。
最后,希望写的这点东西对大家有帮助。
- java 中this关键词的使用
- java中this关键词
- java中this,static关键词的用法
- Java之this关键词的使用详解
- java的this关键词
- java中关键词this和super的区别和举例;
- JavaScript中‘this’关键词的优雅解释
- JavaScript中‘this’关键词的优雅解释
- Java中this的使用
- Java中this的使用
- java中this的使用
- Java中this的使用
- Java 中 this 的使用
- java中this的使用
- Java中this的使用
- Java关键词this
- java笔记-this关键词
- java中关键词final和static的使用
- jQuery性能优化的28个建议
- error LNK2019:无法解析的外部符号 __cdecl std::_String_base::_Xran(void) 和_Xlen(void)
- Jenkins hash
- baidu美化之网页标题问题最新美化规定
- linux 复制多行
- java 中this关键词的使用
- PE详解
- 一个MapReuce作业的从开始到结束--第6章Hadoop以Jar包的方式执行MapReduce任务
- Linux I/O端口与I/O内存
- axure rp教程(三)单选框效果
- UIButton
- 记一次ORA-03113: end-of-file on communication channel错误
- android端asmack获取VCard问题
- Android UI 优化-使用theme 预加载