Chapter5_初始化与清理_this关键字
this关键字是Java中一类很特殊的关键字,首先它只能在方法内使用,用来表示调用这个方法的对象,在这一点上this和其他对对象的引用的操作是相同的。我们之所以可以在方法内部访问到它是因为编译器在方法调用时,会将调用方法的对象作为第一个参数传到方法里面。下面列举几个例子来对this的用途做一些总结。
(1)作为返回值,返回当前对象的引用,在一条语句里对同一个对象做多次操作。
class leaf{
int count; public leaf(){
count = 0;
} public leaf increse(){
count++;
return this;
}
} public class test {
public static void main(String[] args){
leaf l = new leaf();
l.increse().increse().increse();
System.out.println(l.count);
}
}
(2)将自身传递给外部的方法,用于代码复用
class sculpture{
String done; public sculpture getSculped(){
return sculptor.make(this);
} public void info(){
System.out.println(done);
}
} class sculptor{
public static sculpture make(sculpture s){
s.done = "yes";
return s;
}
} public class test {
public static void main(String[] args){
new sculpture().getSculped().info();
}
}
这段代码实现的事情是,每一个sculpture(雕塑)都可以调用自己的getSculped方法,把自己传给sculptor(雕塑家)的一个静态方法,来完成雕塑。这样做的好处是每一个sculpture都可以调用外部方法,来完成雕塑的过程,实现对代码的复用。
(3)在构造器中调用构造器
class footballteam{
int count; public footballteam(){
this(23);
} public footballteam(int count){
this.count = count;
} public void info(){
//this(22);报错!
System.out.println("we have " + count + " players");
}
} public class test {
public static void main(String[] args){
footballteam rma = new footballteam();
rma.info();
}
}
程序的第五行在默认构造器中调用了一次带参数的构造器,这样可以有不同的调用构造器的方法。另外13行的出错信息告诉我们,不能在除构造器之外的方法内调用构造器。
Chapter5_初始化与清理_this关键字的更多相关文章
- Chapter5_初始化与清理_enum关键字
enum关键字虽然只是一个很小的特性,但是它在我们使用枚举类型时,可以很方便的处理.先举一个例子. enum Speciness{ NOT, MILD, MEDIUM, HOT, FLAMING } ...
- Chapter5_初始化与清理_用构造器初始化
接下来进入第五章,java中初始化和清理的问题,这是两个涉及安全的重要命题.初始化的功能主要是为库中的构件(或者说类中的域)初始化一些值,清理的功能主要是清除程序中不再被需要的元素,防止资源过分被垃圾 ...
- Chapter5_初始化与清理_数组初始化与可变参数列表
一.数组初始化 数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥 ...
- Chapter5_初始化与清理_构造器初始化
一.构造器初始化的基本顺序 在使用构造器进行初始化时,最需要注意的是初始化的顺序,这种方法可以给初始化的顺序带来很大的灵活性.看如下的一个例子. class Window{ Window(int ma ...
- Chapter5_初始化与清理_成员初始化
在java中,成员初始化在使用之前应该都要保证已经完成初始化.对于在方法体中的局部变量,如果没有使用指定初始化的方法对成员变量进行初始化,编译器会提示一个错误.而对于类的数据成员,编译器会对这些成员赋 ...
- Chapter5_初始化与清理_方法重载
方法重载是java中编译器在方法调用时采用的一个重要机制.起初方法重载的初衷是方便构造器的调用,比如对于一个类,可以实现用不同的方法来初始化它,又由于构造器的名称都是一样的,所以必须使用到方法重载的机 ...
- [THINKING IN JAVA]初始化和清理
4.5初始化和清理 5.1 构造器初始化 无参:如果一个类没有构造器,那么会有一个默认的无参构造器,并且只能通过无参构造器初始化对象: 带参:传入参数初始化成员变量或者其它初始化操作需要的参数,如果类 ...
- 图解 & 深入浅出Java初始化与清理:构造器必知必会
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- 浅谈Java中的初始化和清理
引言 这篇文章我们主要介绍Java初始化和清理的相关内容,这些内容虽然比较基础,但是还是在这边做一个简单的总结,方便以后查阅. 初始化过程 Java尽力保证:所有变量在使用之前都会得到恰当的初始化(对 ...
随机推荐
- jeecg-boot 简易部署方案
jeecg-boot采用前后端分离的方案,前后端代码不在一起.想要部署 一般是通过反向代理实现. jeecg-boot目前支持更好更简单的解决方案: jeecg 在配置文件里面指定了 webapp的存 ...
- MM-委外业务
SAP MM-分包业务讲解(subcontracting)-01-主数据与采购订单的创建 SAP MM-分包业务讲解(subcontracting)-02-主数据与采购订单的创建-多BOM的业务情况分 ...
- P1348 Couple number
题目描述 任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能,那么这个数N就叫做Couple number.你的工作就是判断一个数N是不是Couple number. 输入输出格式 输入格式 ...
- Nginx之 try_files 指令
location / { try_files $uri $uri/ /index.php; } 当用户请求 http://localhost/example 时,这里的 $uri 就是 /exampl ...
- GDI+_从Bitmap里得到的Color数组值分解
[这里写只是我个人的摸索经历,已经给出解决方案] 我之前写过一篇关于ARGB值的研究:https://www.cnblogs.com/lingqingxue/p/10362639.html 最近我又遇 ...
- card布局解决复杂操作的布局问题
一直不是很待见直接使用card布局,直到对于一些稍微复杂点的业务, 通过border布局和弹窗体的方式解决特别费劲之后,才想起了card布局, 发现card布局真是一个很好的解决办法. 那个使用起来很 ...
- 微信小程序 app.json文件配置
https://developers.weixin.qq.com/miniprogram/dev/index.html 起步 https://developers.weixin.qq.com/min ...
- HDFS中将普通用户增加到超级用户组supergroup
- 使用netty HashedWheelTimer构建简单延迟队列
背景 最近项目中有个业务,需要对用户新增任务到期后进行业务处理.使用定时任务定时扫描过期时间,浪费资源,且不实时.只能使用延时队列处理. DelayQueue 第一想到的是java自带的延时队列del ...
- 源码安装支持ffmpeg的opencv2
1.首先安装ffmpeg apt-get install ffmpeg 2.安装opencv对ffmeg的依赖 # for Compiling OpenCV with ffmpeg support ...