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)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...
随机推荐
- ajax跨域提交
ajax跨域提交 如果在两个网站之间进行异步互动想要通过ajax时不可能的,因为header不支持xmlhttprequest这种方式的跨域提交. 但是jquery的ajax同时还提供了jso ...
- Android中MenuInflater实例
我们知道,LayoutInflater是用来实例化整个布局文件,而MenuInflater是用来实例化Menu目录下的Menu布局文件的. 传统意义上的菜单定义需要Override Activity的 ...
- cookie、session、sessionid 与jsessionid
可查看 http://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html
- git和svn的区别001
Git和SVN之间的五个基本区别 中文原文地址:http://blog.jobbole.com/31444/ 友情链接git和svn链接2:http://blog.csdn.net/sunboy_20 ...
- OpenStack-Mitaka 一键安装测试环境脚本
说明:这个脚本是采用Bash Shell编写,这个版本还只能作为测试环境搭建使用. 此脚本原形的发起人是网友:WuYuLiang.这里有他的博客链接: 第一版的链接: http://blog.cs ...
- 操作系统学习笔记 对称多处理(SMP)
SMP:一种通过复用处理器提高程序执行并行性的方式. 根据SMP,计算机系统可以分为以下四类: 单指令单数据流(SISD):一个单处理器执行一个单指令流,对保存在一个存储器中的数据进程进行操作. 单指 ...
- python列表的常用操作方法
主要介绍了Python中列表(List)的详解操作方法,包含创建.访问.更新.删除.其它操作等,需要的朋友可以参考下. 1.创建列表.只要把逗号分隔的不同的数据项使用方括号括起来即可 List = [ ...
- C#中DataTable转换JSON
#region 将DataTable转换为json public string dt2json(DataTable dt) { JavaScriptSerializer jss = new JavaS ...
- biji001
指针对变量使对指向变量的指针&运算符产生,对指针使用*运算符则可以返回到原始变量只要p指向i,那么*p就是i的别名*p不仅仅拥有和i同样的值,而且对*p的改变i的值*p左值,对它赋值合法*p ...
- git gc
git gc 有时候当你运行一些git命令(比如git pull)的时候,会有如下提示: 1 2 Auto packing the repository for optimum performance ...