this的使用方法
当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。this是指向对象本身的一个指针。this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
1、使用this调用成员变量和成员函数
使用this调用成员变量:this .成员变量
//Person类 class Person{ String name;//成员变量name void talk(){ //成员函数talk() System.out.println("My name is " + this.name); } }
class test{ public static void main(String args[]){ Person p1 = new Person(); p1.name = "zhangsan"; p1.talk(); Person p2 = new Person(); p2.name = "lisi"; p2.talk(); } }
this是对象,代表 调用了这个函数的对象。
当成员变量和参数(局部变量)的名字相同时,在方法体中如果不加this,使用的是参数而不是成员变量,要使用成员变量的话必须加this。this用于区别成员变量和参数。在没有同名的情况下,可以直接用成员变量的名字,可省略this,最好加上
例子如下:
//Person类 class Person{ String name;//成员变量name void talk(String name){ //成员函数 System.out.println("My name is " + name); } }
class test{ public static void main(String args[]){ Person p1 = new Person(); p1.name = "zhangsan"; p1.talk("zhangsan 1"); Person p2 = new Person(); p2.name = "lisi"; p2.talk("lisi 1"); } }
this同样可以调用本类中的成员函数:this . 函数名
如果在某个变量前面加上一个this关键字,其指的就是这个对象的成员变量或者方法,而不是指成员方法的形式参数或者局部变量。
2、使用this调用构造函数
//Person类 class Person{ String name; //成员变量name int age; String addr; Person(){ //构造函数 System.out.println("没有参数的"); } Person(String name ,int age){ //成员变量和参数重名 this(); //调用没有参数的构造函数 this.name=name; //用this把参数赋值给成员变量 this.age=age; System.out.println("两个参数的"); } Person(String name,int age ,String addr){ this(name,age); //this(参数列表):根据传入的参数个数和类型来调用本类中其他的构造函数 this.addr=addr; System.out.println("三个参数的"); } }
class test{ public static void main(String args[]){ Person p1 = new Person("zhangsan",20,"北京"); } }
当使用this(参数列表)来调用本类中其他的构造函数时,这行代码必须是第一条语句,构造函数内只能调用一个构造函数。
this的使用方法的更多相关文章
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- ArcGIS 10.0紧凑型切片读写方法
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
- [BOT] 一种android中实现“圆角矩形”的方法
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
.NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...
随机推荐
- Linux-wget/tar/ln 函数
1. 获取软件包,可以使用wget的方式, ubuntu可以使用apt-get source来获取源代码 wget 是一个在网络上进行下载的简单而强大的自由软件,支持HTTP,HTTPS,FTP协议, ...
- 慕课网-安卓工程师初养成-4-7 Java循环语句之 while
来源: http://www.imooc.com/code/1420 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 ...
- MapReduce和Tez对比
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)". Tez是Apache开源的支持D ...
- bzoj1003 [ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6300 Solved: 2597[Submit][Stat ...
- ASPxCallback控件
ASPxCallback控件简单来的来说是一个数据回调控件,即不刷新事个页面来展现数据,主要是通过注册客户端事件与服务器端的事件来相互通信完成任务. 如何使用ASPXCallback: 向页面添加Ca ...
- 【HTML/XML 7】CSS层叠样式表
导读:上篇博客说到用XSL去实现XML文档的表现形式的美化,那么另外一种方式就是CSS的使用.本篇博客系统的介绍CSS,下篇博客,将系统的介绍XSL. 一.CSS的发展历史 1996年,层叠样式表(C ...
- 注册码 myeclipse6.5-6.8
package controllersli; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- java map缓存
/** * 缓存池 * @author xiaoquan * @create 2015年3月13日 上午10:32:13 * @see */ public class CachePool { ...
- 详解android.mk-2016.01.18
1 Android.mk作用 当使用JNI开发时,我们需要创建一个native工程,Android.mk就是一个makefile的配置文件,帮助我们把编写的C/C++代码编译成动态或者静态的链接库. ...
- 字符串匹配KMP算法
1. 字符串匹配的KMP算法 2. KMP算法详解 3. 从头到尾彻底理解KMP