博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java关键字(五)——this
阅读量:4696 次
发布时间:2019-06-09

本文共 2111 字,大约阅读时间需要 7 分钟。

  this 也是Java中的一个关键字,在《Java编程思想》第四版第五章5.4小节对 this 关键字是这样介绍的:

  this 关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。

  其实简单来说 this 关键字就是表示当前对象,下面我们来具体介绍 this 关键字在Java中的用法。

1、调用成员变量

  在一个类的方法内部,如果我们想调用其成员变量,不用 this,我们会怎么做?

1 package com.ys.test; 2  3 /** 4  * Create by YSOcean 5  */ 6 public class ThisTest { 7  8     private String name = "Tom"; 9 10     public void  setName(String name){11         name = name;12     }13 14     public String getName() {15         return name;16     }17     18 }

  看上面的代码,我们在 ThisTest 类中创建了一个 name 属性,然后创建了一个 setName 方法,注意这个方法的形参也是 String name,那么我们通过 name = name 这样赋值,会改变成员变量 name 的属性吗?

1     public static void main(String[] args) {2         ThisTest tt = new ThisTest();3         tt.setName("Marry");4         System.out.println(tt.getName());//Tom5     }

  打印结果是 Tom,而不是我们重新设置的 Marry,显然这种方式是不能在方法内部调用到成员变量的。因为形参的名字和成员变量的名字相同,setName 方法内部的 name = name,根据最近原则,编译器默认是将这两个 name 属性都解析为形参 name,从而导致我们设值操作和成员变量 name 完全没有关系,当然设置不了。

  解决办法就是使用 this 关键字。我们将 setName 方法修改如下:

1     public void  setName(String name){2         this.name = name;3     }

  在调用上面的 main 方法进行赋值,打印的结果就是 Marry 了。

  this 表示当前对象,也就是调用该方法的对象,对象.name 肯定就是调用的成员变量。

2、调用构造方法

  构造方法是与类同名的一个方法,构造方法没有返回值,但是也不能用 void 来修饰。在一个类中,必须存在一个构造方法,如果没有,编译器会在编译的时候自动为这个类添加一个无参构造方法。一个类能够存在多个构造方法,调用的时候根据参数来区分。

1 package com.ys.test; 2  3 /** 4  * Create by YSOcean 5  */ 6 public class ThisTest { 7     private String name; 8      9     public ThisTest(){10         this("Marry");11     }12     public ThisTest(String name) {13         this.name = name;14     }15 }

  通过 this("Marry") 来调用另外一个构造方法 ThisTest(String name) 来给成员变量初始化赋值。

  注意:通过 this 来调用构造方法,只能将这条代码放在构造函数的第一行,这是编译器的规定,如下所示:放在第二行会报错。

  

3、调用普通方法

  this 表示当前对象,那么肯定能够调用当前类的普通方法。

1     public void printName(){2         this.say();3     }4     5     public void say(){6         System.out.println("say method...");7     }

  第 2 行代码,在 printName() 方法内部调用了 say() 方法。

4、返回当前对象

1 /**2  * Create by YSOcean3  */4 public class ThisTest {5 6     public Object newObject(){7         return  this;8     }9 }

  这表示的意思是谁调用 newObject() 方法,那么就返回谁的引用。

转载于:https://www.cnblogs.com/ysocean/p/9202051.html

你可能感兴趣的文章
2018二月实现计划成果及其三月规划
查看>>
类名.class和getClass()区别
查看>>
12/17面试题
查看>>
LeetCode 242. Valid Anagram
查看>>
JSP表单提交乱码
查看>>
如何适应现代雇佣关系
查看>>
团队项目(第五周)
查看>>
SQL 优化经验总结34条
查看>>
开源 视频会议 收藏
查看>>
核心J2EE模式 - 截取过滤器
查看>>
.net开源CMS
查看>>
JdbcTemplate
查看>>
第一次使用maven记录
查看>>
SharePoint服务器端对象模型 之 使用CAML进展数据查询
查看>>
Building Tablet PC Applications ROB JARRETT
查看>>
Adobe® Reader®.插件开发
查看>>
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>