一、this关键字概述

1. this作为对象的引用,它总是指向调用该方法的对象

2. this的最大作用:让类中的一个方法访问该类中的另一个方法或实例变量

二、this关键字的两种用法

1. 在方法中引用调用该方法的对象

public class Dog
{
public void jump()
{
System.out.println("正在跳跃");
} public void run()
{
// 使用this引用调用run()方法的对象
this.jump();
System.out.ptintln("正在奔跑");
}
}

补1:当this出现在某个方法体中,它所代表的对象是不确定的,但它的类型是确定的(它所代表的只能是当前类的实例),只有当这个方法被调用时,它所代表的对象才被确定下来(谁在调用这个方法,this就代表谁)

补2:Java允许对象的一个成员直接调用另一个成员,可以省略this前缀

补3:省略this前缀只是一种假象,虽然上列程序可以省略jump()方法之前的this,但实际上这个this依然是存在的,我们通常把调用成员变量、方法的对象称为“主调”。在Java语言中,调用成员变量、方法时,主调是必不可少的,即使代码中省略了主调,但实际的主调依然存在。一般来说,如果调用静态成员时省略了前面的主调,那么默认使用该类作为主调;如果调用非静态成员时省略了前面的主调,那么默认使用this作为主调。

补4:同一个类的一个方法调用另外一个方法时,如果被调方法是静态方法,则默认使用类作为调用者;如果被调方法是普通方法,则默认使用this作为调用者。也就是说,表面上看起来某些方法可以被独立执行,但实际上还是使用类或者this来作为调用者。

2. 在构造器中引用该构造器正在初始化的对象

public class ThisInConstructor
{
public int a;
public ThisInConstructor()
{
// 在构造器里定义一个a变量
int a = 0; // 使用this代表该构造器正在初始化的对象
this.a = 6;
}
}

补1:由于构造器是直接使用new关键字来调用,而不是使用对象来调用的,所以this在构造器中代表该构造器正在初始化的对象。(要知道,在普通实例方法中使用this时,由于普通实例方法是由对象来调用的,而构造器是由new关键字调用的,且此时存在的对象还不能被外部程序访问<只能在该构造器中通过this来引用>,所以this在构造器中不能代表已生成的对象,而只能代表该构造器正在初始化的对象。)

补2:创建对象的根本途径是构造器,如创建实例“ThisInConstructor th = new ThisInConstructor();”语句正是通过new关键字来调用该类的构造器。

三、static修饰的方法中不能使用this

1. 如果在静态方法中使用this关键字,则this将无法指向合适的对象,因为静态方法是由类来调用的

2. 由于静态方法中不能使用this,所以静态方法不能访问不使用static修饰的普通成员

5. this关键字的更多相关文章

  1. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  2. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  3. java面向对象中的关键字

    1,super关键字 super:父类的意思 1. super.属性名 (调用父类的属性) 2. super.方法名 (调用父类的方法) 3. super([参数列表])(调用父类的构造方法) 注意: ...

  4. 关于javascript中的this关键字

    this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...

  5. transient关键字的用法

    本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...

  6. Java关键字:static

    通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...

  7. Core Java 总结(关键字,特性问题)

    2016-10-19 说说&和&&的区别 初级问题,但是还是加入了笔记,因为得满分不容易. &和&&都可以用作逻辑与的运算(两边是boolean类型), ...

  8. Net中的常见的关键字

    Net中的关键字有很多,我们最常见的就有new.base.this.using.class.struct.abstract.interface.is.as等等.有很多的,在这里就介绍大家常见的,并且有 ...

  9. php多关键字查询

      php单一关键字查询 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 tdansitional//EN" "http: ...

  10. Keil> 编译器特有的功能 > 关键字和运算符 > __weak

    __weak 此关键字指示编译器弱导出符号. 可以将 __weak 关键字应用于函数和变量声明以及函数定义. 用法 函数和变量声明 对于声明,此存储类指定一个 extern 对象声明,即使不存在,也不 ...

随机推荐

  1. 中文版 Apple 官方 Swift 教程《The Swift Programming Language》

    简介 欢迎使用 Swift 关于 Swift 版本兼容性 Swift 初见 Swift 版本历史记录 Swift 教程 基础部分 基本运算符 字符串和字符 集合类型 控制流 函数 闭包 枚举 类和结构 ...

  2. LeetCode刷题191119

    博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 算法: 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个 ...

  3. bay——Oracle RAC集群体系结构.docx

    Oracle RAC集群体系结构 ————bayaim  2018年10月22日13:33 https://blog.51cto.com/ixdba/862207  一. Oracle集群体系结构 O ...

  4. FreeRTOS临界保护

    下面的是个人笔记,所有的话都适用于我本人理解,可能存在不对的地方. 进入临界保护(支持嵌套):taskENTER_CRITICAL(); 退出临界保护(支持嵌套):taskEXIT_CRITICAL( ...

  5. 克服悲伤情绪的三个P原则

    1.自责(Personalization) --不要自责 2.永久化(Permanence) --悲伤不会永远存在,一切都会过去 据科学研究发现:人遇到开心或悲伤的事情之后,心情在短期内会产生巨大的波 ...

  6. AtCoder Regular Contest 103

    传送门 C - /\/\/\/ 题意: 给出一个序列\(\{a_i\}\),先要求其满足以下条件: \(a_i=a_{i+2}\) 共有两个不同的数 你现在可以修改任意个数,现问最少修改个数为多少. ...

  7. 二、ITK例子-jpg图像读写

    一.ITK的读写工作原理 在ITK里面,我们需要设置读取图像的像素类型,图像类型. 然后设置读取指针,将读取参数传入. 同时设置写指针,也将写入文件参数传入. 为了实现读写动作,我们需要构造一个IO工 ...

  8. 关于网站登录后的页面操作所携带的不同cookie值

    对于课堂派网站,登录后的页面操作只需要携带PHPSESSID或者cookie中间那部分即可,两个都带也可,SERVERID不知道是干啥的,每次响应的都会变. 代码实现: cookie = None c ...

  9. BZOJ2007/LG2046 「NOI2010」海拔 平面图最小割转对偶图最短路

    问题描述 BZOJ2007 LG2046 题解 发现左上角海拔为 \(0\) ,右上角海拔为 \(1\) . 上坡要付出代价,下坡没有收益,所以有坡度的路越少越好. 所以海拔为 \(1\) 的点,和海 ...

  10. CF1253F Cheap Robot(神奇思路,图论,最短路,最小生成树/Kruskal 重构树/并查集)

    神仙题. 先考虑平方级别的暴力怎么做. 明显答案有单调性,先二分 \(c\). 先最短路预处理 \(dis_u\) 表示 \(u\) 到离它最近的充电站的距离(一开始把 \(1\) 到 \(k\) 全 ...