this 关键字
来源:互联网 发布:软件使用许可证模板 编辑:程序博客网 时间:2024/06/11 10:56
java 中 this 关键字的用法,相信只要接触过Java的童鞋都应该用过,今天在这里就在温习一下。
java 中,this 可以完成3件事情:表示本类属性、表示本类方法和当前对象。下面通过例子来分别说明this在这几种情况下的应用。
1.this 表示本类属性:this.属性
先来看个例子:
class Person { private String name; private int age; public Person(String name, int age) { // 定义构造 name = name; // 为属性赋值 age = age; // 为属性赋值 } // setter、getter略 public String getInfo() { // 取得信息 return "姓名:" + name + ",年龄:" + age; }}
由上面可以看出构造函数在初始化的时候对name和age进行了赋值,但有些时候属性跟参数的名字相同时容易混淆,因此我们可以改写成如下的形式。
class Person { private String name; private int age; public Person(String name, int age) { // 定义构造 this.name = name ; // 为本类name属性赋值 this.age = age ; // 为本类age属性赋值 } // setter、getter略 public String getInfo() { // 取得信息 return "姓名:" + name + ",年龄:" + age; }}
这里通过this关键字调用了本类的属性name和age,是程序的结构更清晰。
2.this 调用本类方法
在一个类中主要有两种方法:普通方法和构造函数,因此调用方法也就分为两种形式。
- 调用本类普通方法:调用本类方法可以使用“this.方法()”;
- 调用本类构造函数:在一个构造中要调用其他构造使用“this()”调用。
下面是一个存在三个构造方法例子(无参、有一个参数和有两个参数)
class Person { private String name; private int age; public Person() { // 无参构造方法 System.out.println("*** 一个新的Person类对象被实例化。"); } public Person(String name) { // 两参构造方法 System.out.println("*** 一个新的Person类对象被实例化。"); this.name = name; } public Person(String name, int age) { // 三参构造方法 System.out.println("*** 一个新的Person类对象被实例化。"); this.name = name; this.age = age; } // setter、getter略 public String getInfo() { // 取得信息 return "姓名:" + this.name + ",年龄:" + this.age; }}
假设要输出的信息为100行,那么每一个构造函数都要重复这些代码,可是明明调用一个构造函数就可以搞定的,如果这样的话肯定就违背了软件开发的初衷,所以肯定有方法解决的,那就是调用本类构造
所以上面的代码可以修改为如下代码:
class Person { private String name; private int age; public Person() { // 无参构造方法 System.out.println("*** 一个新的Person类对象被实例化。"); // 想象为50行代码 } public Person(String name) { // 两参构造方法 this() ; // 调用无参构造 this.name = name; } public Person(String name, int age) { // 三参构造方法 this(name) ; // 调用一个参数构造 this.age = age; } // setter、getter略 public String getInfo() { // 取得信息 return "姓名:" + this.name + ",年龄:" + this.age; }}
这样一看代码复用,哈哈,是软件开发的思想,大牛们早就想到了。
注意:使用 this() 要注意以下问题
所有的构造方法是在对象实例化时被默认调用的,而且是在调用普通方法之前调用,所以使用“this()”调用构造方法的操作一定要放在构造方法的首行。
3. this 表示当前对象
这个不太好说,先贴个例子看看:
验证this为当前对象
class Demo { public void print() { System.out.println("当前对象:" + this); // 直接输出this }}public class TestDemo { public static void main(String args[]) { Demo demo1 = new Demo(); Demo demo2 = new Demo(); System.out.println(demo1); // 直接输出对象 demo1.print(); // 调用方法,即:输出this System.out.println("******"); System.out.println(demo2); // 直接输出对象 demo2.print(); // 调用方法,即:输出this }}
运行结果:
exercise.Demo@133c5982当前对象:exercise.Demo@133c5982******exercise.Demo@5f186fab当前对象:exercise.Demo@5f186fab
通过运行结果发现,默认情况下一个对象直接输出所返回的是一个对象的编码,而使用demo1调用print() 方法时,直接输出的 this 和demo1的对象编码一样,demo2也同样如此。所以可以看出当前正在调用类中方法的对象为当前对象,而所有的当前对象都使用this来表示。
A little more for everyday。
- 关键字this
- this关键字
- this关键字
- this 关键字
- this 关键字
- this关键字
- this关键字
- this 关键字
- this 关键字
- this 关键字
- this关键字
- 关键字this
- 关键字this
- this 关键字
- this 关键字
- this关键字
- this关键字
- This关键字
- 使用Eclipse 编译含有多个main函数的项目
- 黑马程序员--java基础--Object类中的几个方法、包的概念
- Delphi 根据经纬度计算地球上两点之间的距离
- 2440平台,LED驱动模块,成功加载,rmmod可以卸载,但是总是报错
- MySQL中修改root密码的方式
- this 关键字
- 【javascript】脚本操作HTTP请求技术Ajax-1(GET请求)
- Android两次点击返回键退出应用
- delphi 获取某个页面所有的链接
- C语言 折半查找
- Delphi 模拟网站验证码
- swift开发之pop动画
- vs2012打包发布流程
- Delphi EmbeddedWB 遍历Frames并执行子frame的js脚本