在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚。现在让大家看一个小例子,给你分享一下JAVA中“this”的用法!

java代码:
/**
* @author fengzhi-neusoft
*
* 本示例为了说明this的三种用法!
*/

package eoe.demo;

public class ThisTest {
private int i=0;
//第一个构造器:有一个int型形参

ThisTest(int i){
this.i=i+1;//此时this表示引用成员变量i,而非函数参数i
System.out.println(“Int constructor i——this.i: ”+i+”——”+this.i);
System.out.println(“i-1:”+(i-1)+”this.i+1:”+(this.i+1));
//从两个输出结果充分证明了i和this.i是不一样的!
}

// 第二个构造器:有一个String型形参
ThisTest(String s){
System.out.println(“String constructor: ”+s);
}

// 第三个构造器:有一个int型形参和一个String型形参
ThisTest(int i,String s){
this(s);//this调用第二个构造器
//this(i);
/*此处不能用,因为其他任何方法都不能调用构造器,只有构造方法能调用他。
但是必须注意:就算是构造方法调用构造器,也必须为于其第一行,构造方法也只能调
用一个且仅一次构造器!*/

this.i=i++;//this以引用该类的成员变量
System.out.println(“Int constructor: ”+i+”\n”+”String constructor: ”+s);
}

public ThisTest increment(){
this.i++;
return this;//返回的是当前的对象,该对象属于(ThisTest)
}

public static void main(String[] args){
ThisTest tt0=new ThisTest(10);
ThisTest tt1=new ThisTest(“ok”);
ThisTest tt2=new ThisTest(20,”ok again!”);
System.out.println(tt0.increment().increment().increment().i);
//tt0.increment()返回一个在tt0基础上i++的ThisTest对象,
//接着又返回在上面返回的对象基础上i++的ThisTest对象!
}
}

其实this主要要三种用法:
        1、表示对当前对象的引用!
        2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
        3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用。

 

最新文章

  1. 3 Longest Substring Without Repeating Characters
  2. 浅谈城市规划在移动GIS方面的应用发展
  3. iOS,html使用交互相关
  4. 解决download.msdn.microsoft.com无法正确解析而无法下载的问题
  5. ubuntu安装vim
  6. UVaLive 6693 Flow Game (计算几何,线段相交)
  7. FindWindow()&&FindWindowEx
  8. Ajax.Utility.RegisterTypeForAjax(typeof(_Default)) 的使用
  9. C# 线程间互相通信
  10. FPGA技术的一些基本概念(综合、BlackBox)(转)
  11. Function:光标位置插入文本并且光标移动到最后
  12. python笔记七(递归函数)
  13. 关于warning: suggest parentheses around assignment used as truth value [-Wparentheses]|的解决方法
  14. jmeter时间格式化
  15. pytorch构建自己的数据集
  16. 1111 Online Map (30 分)
  17. 测试JS方法运行时间
  18. JMH使用说明
  19. 按键精灵MySql数据库操作
  20. Android批量图片加载经典系列——Volley框架实现多布局的新闻列表

热门文章

  1. WebApi支持命名空间重名问题
  2. Python 从零学起(纯基础) 笔记 (二)
  3. Java之设计模式详解 (转)
  4. Angular实现注册系统
  5. Ajax请求接口加密研究(针对网页前端的接口安全加密机制研究)
  6. Beta版本冲刺第四天 12.10
  7. Mysql备份还原数据库之mysqldump实例及参数详细说明
  8. 常见linux命令释义(第七天)——ulimit 与变量内容的删除替代与替换。
  9. 常见linux命令释义(第四天)——bash部分
  10. 捉襟见肘之NSMutableSet和NSPointerArray