关键字-this
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的更多相关文章
- 作为一个新手的Oracle(DBA)学习笔记【转】
一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- java面向对象中的关键字
1,super关键字 super:父类的意思 1. super.属性名 (调用父类的属性) 2. super.方法名 (调用父类的方法) 3. super([参数列表])(调用父类的构造方法) 注意: ...
- 关于javascript中的this关键字
this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...
- transient关键字的用法
本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...
- Java关键字:static
通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...
- Core Java 总结(关键字,特性问题)
2016-10-19 说说&和&&的区别 初级问题,但是还是加入了笔记,因为得满分不容易. &和&&都可以用作逻辑与的运算(两边是boolean类型), ...
- Net中的常见的关键字
Net中的关键字有很多,我们最常见的就有new.base.this.using.class.struct.abstract.interface.is.as等等.有很多的,在这里就介绍大家常见的,并且有 ...
- php多关键字查询
php单一关键字查询 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 tdansitional//EN" "http: ...
- Keil> 编译器特有的功能 > 关键字和运算符 > __weak
__weak 此关键字指示编译器弱导出符号. 可以将 __weak 关键字应用于函数和变量声明以及函数定义. 用法 函数和变量声明 对于声明,此存储类指定一个 extern 对象声明,即使不存在,也不 ...
随机推荐
- linux操作系统的前世今生
linux操作系统是李纳斯-拖瓦兹于1970年正式发布第一个真正的内核版本,他也称Linux之父,Linux是由Unix发展而来,发展到现在Linux操作系统凭借着良好的性能和稳定性已被linux已被 ...
- c# word文档的操作
参考https://blog.csdn.net/ruby97/article/details/7406806 Word对象模型 (.Net Perspective) 本文主要针对在Visual St ...
- NodePort,LoadBalancer还是Ingress?我该如何选择 - kubernetes
原文:http://mp.weixin.qq.com/s/dHaiX3H421jBhnzgCCsktg 当我们使用k8s集群部署好应用的Service时,默认的Service类型是ClusterIP, ...
- 在 ASP.NET Core 中集成 Skywalking APM
前言 大家好,今天给大家介绍一下如何在 ASP.NET Core 项目中集成 Skywalking,Skywalking 是 Apache 基金会下面的一个开源 APM 项目,有些同学可能会 APM ...
- 有趣的 box-decoration-break
这两天接触到一个很有意思的 CSS 属性 -- box-decoration-break.下面就一起去一探究竟. 因为 MDN 上关于这个属性,没有中文文档,所以一直在想一个合理贴切的中文翻译.直译一 ...
- mpvue小程序开发之 集成第三方UI框架Vant Weapp UI
集成进第三方的UI框架其实很简单 这里把vant-weapp的dist目录重命名为vant-weapp放在项目根目录的static文件夹下: 在src文件夹下,即我们写vue代码的位置,正在编写的页面 ...
- Java数据结构和算法 - 栈和队列
Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...
- RecyclerSwipeAdapterDemo【使用AndroidSwipeLayout用于列表项侧滑功能】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录AndroidSwipeLayout搭配Recyclerview实现列表项侧滑功能. 效果图 代码分析 适配器类中设置Swipe ...
- 系列文章|OKR与敏捷(三):赋予团队自主权
OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余.这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为 ...
- 如何让vue自定义组件可以包裹内容,并且渲染出来,以及组件的组合使用
当我们用vue一开始写项目时,按需求文档自定义了一个公用组件,这个组件很多地方都用到了,然后随着项目的推进,又有了新的需求要在里面加东西,但又不是所有的地方都要加 这时候我们想这样往里面塞内容↓ ...