1、当成员变量和局部变量重名时,在方法中使用this时,this指向的是该方法所在类的成员变量。

package gc.test.java.cs1;

public class User{

    public String name = "张三";

    public void show(String name){
System.out.println("name:" + name);
System.out.println("this.name:" + this.name);
this.name = name;
} }
package gc.test.java.cs1;

public class Main {

    public static void main(String[] args) {

        User user = new User();
user.show("李四");
System.out.println("user.name:" + user.name);
}
}

运行结果:

name:李四
this.name:张三
user.name:李四

通过上的运行结果可以看出,在show方法中,对name操作,指向的是show的参数,要对该类中的成员变量操作,需要带上this引用。

2、可以把自己当做参数传递,也可以使用this.成员变量。

package gc.test.java.cs1;

public class Base {

    public void show(User user){
System.out.println("Base.user.name:" + user.name);
}
}
package gc.test.java.cs1;

public class User{

    public String name = "张三";

    public void show(String name){
Base base = new Base();
base.show(this);
} }
package gc.test.java.cs1;

public class Main {

    public static void main(String[] args) {
User user = new User();
user.show("李四");
}
}

运行结果:

Base.user.name:张三

通过上面的运行结果可以看出,在User类的show方法中,把自己当做传输传递,在Base类的show方法中使用时,指向的是User的成员变量,而不是User类中show方法的参数。

3、在构造函数中,可以通过this调用同一类中其余的构造函数,this指向的是该构造函数所在的类。

package gc.test.java.cs2;

public class Member {

    Member(String name){
System.out.println("我的名字叫" + name);
} Member(String name, int age){
this(name);
System.out.println("我的今年" + age + "岁");
} Member(){
this("张三", 20);
this(name);//编译报错
} void show(){
this("张三", 20);//编译报错
}
}
package gc.test.java.cs2;

public class Main {

    public static void main(String[] args) {
Member member = new Member();
}
}

运行结果:

我的名字叫张三
我的今年20岁

通过上面的运行结果可以看出,可以直接通过this来调用构造函数,根据不同的参数,调用不同的构造函数。

在无参构造函数中,调用了两次构造函数,编译报错。在其余的函数中调用构造函数,也出现编译报错。

注:在一个构造函数中,只能调用一个构造函数。不能在构造函数以外的函数中调用构造函数。

关键字-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. SQL Server2008进程堵塞处理方法

    进程堵塞处理方法: select * from sys.sysprocesses where blocked <>0 and DB_NAME(dbid)='GSHCPDB'   ##查询堵 ...

  2. nn.ConvTranspose2d的参数output_padding的作用

    参考:https://blog.csdn.net/qq_41368247/article/details/86626446 使用前提:stride > 1 补充:same卷积操作 是通过padd ...

  3. Jvm启动,关闭及对应钩子

    很多时候应用服务启动或关闭会做一些预加载(比如缓存,定时任务启动等)或收尾处理工作(比如程序失败记录等) 1. 首先看下Spring框架服务启动加载操作实现,直接上代码 继承实现接口Applicati ...

  4. [Abp vNext 源码分析] - 3. 依赖注入与拦截器

    一.简要说明 ABP vNext 框架在使用依赖注入服务的时候,是直接使用的微软提供的 Microsoft.Extensions.DependencyInjection 包.这里与原来的 ABP 框架 ...

  5. Vue.js-01:第一章 - 一些基础概念

    一.前言 Vue.React.Angular,当今前端界的三驾马车,作为传统的后端程序员,前端再也不是我们想的那种切切图就可以了,第一次接触的话,先了解了解一些基础的概念. 学习系列目录地址:http ...

  6. Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! WebFlux 系列教程大纲 一.背景 大家都知道,Sprin ...

  7. 解读 kubernetes client-go 官方 examples - Part Ⅰ

    目录 1. 介绍 2. 运行测试 2.1 测试环境 2.2 运行结果 3. 原理解析 3.1 获取 kubeconfig 信息,并构造 rest#Config 实例 3.1.1 tools/clien ...

  8. 痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具NXP-MCUBootUtility用户指南

    NXP MCU Boot Utility English | 中文 1 软件概览 1.1 介绍 NXP-MCUBootUtility是一个专为NXP MCU安全加密启动而设计的工具,其特性与NXP M ...

  9. 基于vue.js的简单用户管理

    功能描述:添加.修改.搜索过滤 效果图: <!DOCTYPE html> <html lang="en"> <head> <title&g ...

  10. div悬浮窗口设计来完成注册页面

    login.jsp页面 <script type="text/javascript" src="js/register.js"></scrip ...