大家好,我是可乐,一个专注原创,乐于分享的程序猿。 本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读。回复《电子书》有我为大家特别筛选的海量免费书籍资料

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

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

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

1、调用成员变量

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

package com.ys.test;/*** Create by YSOcean*/
public class ThisTest {private String name = "Tom";public void  setName(String name){name = name;}public String getName() {return name;}}

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

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

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

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

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

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

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

2、调用构造方法

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

package com.ys.test;/*** Create by YSOcean*/
public class ThisTest {private String name;public ThisTest(){this("Marry");}public ThisTest(String name) {this.name = name;}
}

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

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

3、调用普通方法

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

public void printName(){this.say();}public void say(){System.out.println("say method...");}

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

4、返回当前对象

/*** Create by YSOcean*/
public class ThisTest {public Object newObject(){return  this;}
}

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

本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读。回复《电子书》有我为大家特别筛选的书籍资料

http://weixin.qq.com/r/iSqbg-fEGqplrbPg93_b (二维码自动识别)

java this关键字的使用_Java关键字(五)——this相关推荐

  1. java的关键字和保留字_Java关键字和保留字及其含义

    1.java的关键字(keyword)有多少个? 51+2个保留字=53个关键字(java的关键字都是小写的!!) 2.java的保留字(reserve word)有多少个?问题:分别是什么? 2个保 ...

  2. java关键字汉化_java关键字是什么

    Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量.Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能 ...

  3. java关键字汉化_Java关键字 - 乱流的个人空间 - OSCHINA - 中文开源技术交流社区

    static关键字 (1)静态的意思.可以修饰成员变量和成员方法. (2)静态的特点: A:随着类的加载而加载 B:优先与对象存在 C:被类的所有对象共享 这其实也是我们判断该不该使用静态的依据. 举 ...

  4. java中的关键字有哪些_Java关键字有哪些?

    Abstract 抽象的 一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承.一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现 brea ...

  5. java中的关键字有哪些_java关键字复习

    java关键字复习 Java的主要工作是通过编程语言来制作互联网页面.制作动态效果以及网站等技术,以下是小编为大家搜索整理的java关键字复习, 希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕 ...

  6. java关键字的作用_java关键字及其作用

    java关键字及其作用 java 关键字及其作用 一. 关键字总览:关键字 含义abstract 表明类或者成员方法具有抽象属性assert 用来进行程序调试boolean 基本数据类型之一,布尔类型 ...

  7. java中abstract是什么_java关键字abstract

    在java中我们中abstract关键字来表达抽象.举个例子: 我们说车子都可以跑(run).但有几个轮子,怎么跑,对于不同的车有不同的结果.自行车需要人踩着跑,汽车发动机推动跑等等,那么我们可以车表 ...

  8. java中5 的结果_java第五次实验报告

    20144303<Java程序设计>第五次实验 一.实验要求 运行TCP代码,一人服务器,一人客户端 下载加解密代码,先编译运行代码,一人加密一人解密 集成代码,一人加密后通过TCP 发送 ...

  9. java assert语句未执行_Java陷阱之assert关键字

    转自:http://lavasoft.blog.51cto.com/62575/43735/ Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java ...

最新文章

  1. mfc 开启指定服务器,用MFC实现消息的发送和接收(含服务器)
  2. git reset到之前的某一个commit或者恢复之前删除的某一个分支
  3. 程序员能成为设计师吗
  4. vsftp上传文件出现553 Could not create file解决方法
  5. python爬取淘宝数据魔方_淘宝数据魔方技术架构解析
  6. PHP实例方法,PHP实例方法有哪些例子
  7. android if else,Android对很多if和else条件
  8. LeetCode Maximum Product Subarray 解题报告
  9. [转]cocos2d-x场景切换时内存过高导致crash解决方法
  10. ]Vi/Vim查找替换使用方法
  11. 推荐下载使用:功能强大的光盘刻录软件NERO 9.0中文版(最新官方原版+有效序列号)(转)...
  12. 基于灰度的模板匹配算法
  13. linux 番茄时间,Linux下自制简易番茄钟
  14. linux镜像文件太大不好下载_Rufus下载_Rufus官方下载[U盘工具]
  15. 碳排放计算-20210515
  16. 数值计算和SVM讲解(下)
  17. Sketch 快捷键
  18. 64G的EXFAT格式的U盘如何格式化为FAT32
  19. 深信服上网行为管理开启snmp_深信服上网行为管理部署方式及功能实现配置说明资料...
  20. BTA | 陈建闽(阿德):Token的分散过程,一定要基于场景

热门文章

  1. LeetCode 17. 电话号码的字母组合(回溯)
  2. service启动activity_「 Android 10 四大组件 」系列—Service 的 quot; 启动流程 quot;
  3. 离散系数的计算公式_如何求不同变量之间的离散程度
  4. 知识图谱入门视频(一)
  5. 稀疏大模型简述:从MoE、Sparse Attention到GLaM
  6. 搞不懂,为啥现在什么公司都在考算法???
  7. 论文浅尝 | 基于对抗学习的弱监督知识图谱对齐
  8. 开源开放 | 图数据交互可视化分析框架 InteractiveGraph v0.3 版本发布
  9. CNCC 技术论坛 | 知识图谱赋能数字经济
  10. 将二维列表输出到excel