这一章节我们来讨论一些this
1 this是在类的内部使用,它指向对象的引用。
package com.ray.ch01;
public class Test {
private Test getTest() {
return this;
}
public static void main(String[] args) {
}
}
上面代码里面的this就是返回Test这个类型的对象。
this还可以操作方法:
package com.ray.ch01;
public class Test {
private void say() {
System.out.println("method say");
}
private void testSay() {
this.say();
}
public static void main(String[] args) {
new Test().testSay();
}
}
输出:
method say
上面的代码通过引用Test的对象,操作say这个方法。
其实,在类的内部使不使用this倒无所谓,只不过增加了可读性,下面的代码为我们展示这个:
package com.ray.ch01;
public class Test {
private void say() {
System.out.println("method say");
}
private void testSay1() {
this.say();
}
private void testSay2() {
say();
}
public static void main(String[] args) {
new Test().testSay1();
new Test().testSay2();
}
}
输出:
method say
method say
从输出结果可以看出,其实有没有this,都是可以调用内部方法。
2 this可以更好区分参数与属性域。
我们在编码的时候,使用很多参数的名称都跟属性域的相同,因此,使用this让我们更好的区分两者。
例如:
package com.ray.ch01;
public class Test {
private int id;
public Test(int id) {
id = id;
}
public static void main(String[] args) {
}
}
上面的代码非常难区分两个id究竟赋值是怎样的,因此,我们在这里加上this,让代码更好理解。
package com.ray.ch01;
public class Test {
private int id;
public Test(int id) {
this.id = id;
}
public static void main(String[] args) {
}
}
3 this可以引用之前的构造器。
package com.ray.ch01;
public class Test {
private int id;
private String name;
public Test() {
System.out.println("created Test");
}
public Test(int id) {
this();
this.id = id;
System.out.println("id:" + id);
}
public Test(int id, String name) {
this(id);
this.name = name;
System.out.println("name:" + name);
}
public static void main(String[] args) {
new Test(1, "jack");
}
}
输出:
created Test
id:1
name:jack
由于使用了this,因此使得代码更加间接。
注意:
(1)this()引用的构造器必须放在第一句,不然会报错。
(2)this()引用的构造器不能同时使用两个以上。
(3)this只能引用普通方法,而this()只能引用构造器方法。
4 this不能引用static方法
package com.ray.ch01;
public class Test {
private static void say() {
System.out.println("method say");
}
public static void main(String[] args) {
Test.say();
}
}
有static的方法是类方法,它不需要创建对象即可使用,但是这种方法不能够被this引用。
总结:这一章节我们主要讨论了this的四个注意点,以及注意点在编码中的实现。
2.this
2.1 this是在类的内部使用,它指向对象的引用。
package com.ray.ch01;
public class Test {
private Test getTest() {
return this;
}
public static void main(String[] args) {
}
}
上面代码里面的this就是返回Test这个类型的对象。
this还可以操作方法:
package com.ray.ch01;
public class Test {
private void say() {
System.out.println("method say");
}
private void testSay() {
this.say();
}
public static void main(String[] args) {
new Test().testSay();
}
}
输出:
method say
上面的代码通过引用Test的对象,操作say这个方法。
其实,在类的内部使不使用this倒无所谓,只不过增加了可读性,下面的代码为我们展示这个:
package com.ray.ch01;
public class Test {
private void say() {
System.out.println("method say");
}
private void testSay1() {
this.say();
}
private void testSay2() {
say();
}
public static void main(String[] args) {
new Test().testSay1();
new Test().testSay2();
}
}
输出:
method say
method say
从输出结果可以看出,其实有没有this,都是可以调用内部方法。
2.2 this可以更好区分参数与属性域。
我们在编码的时候,使用很多参数的名称都跟属性域的相同,因此,使用this让我们更好的区分两者。
例如:
package com.ray.ch01;
public class Test {
private int id;
public Test(int id) {
id = id;
}
public static void main(String[] args) {
}
}
上面的代码非常难区分两个id究竟赋值是怎样的,因此,我们在这里加上this,让代码更好理解。
package com.ray.ch01;
public class Test {
private int id;
public Test(int id) {
this.id = id;
}
public static void main(String[] args) {
}
}
2.3 this可以引用之前的构造器。
package com.ray.ch01;
public class Test {
private int id;
private String name;
public Test() {
System.out.println("created Test");
}
public Test(int id) {
this();
this.id = id;
System.out.println("id:" + id);
}
public Test(int id, String name) {
this(id);
this.name = name;
System.out.println("name:" + name);
}
public static void main(String[] args) {
new Test(1, "jack");
}
}
输出:
created Test
id:1
name:jack
由于使用了this,因此使得代码更加间接。
注意:
(1)this()引用的构造器必须放在第一句,不然会报错。
(2)this()引用的构造器不能同时使用两个以上。
(3)this只能引用普通方法,而this()只能引用构造器方法。
2.4 this不能引用static方法
package com.ray.ch01;
public class Test {
private static void say() {
System.out.println("method say");
}
public static void main(String[] args) {
Test.say();
}
}
有static的方法是类方法,它不需要创建对象即可使用,但是这种方法不能够被this引用。
总结:这一章节主要讨论了this 的四个方法,以及在编码中的实现。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
从头写React-like框架的工程搭建实现 最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurrent Mode,Fiber ...
从头开始学习Java课程-资料来源PillsInformática。
视频 https://www.bilibili.com/video/BV1914y1s7hi
视频 https://www.bilibili.com/video/BV1914y1s7hi
赖世雄英语从头学 下载-附件资源
军工行业2021年度投资策略:而今迈步从头越-20201115-招商证券.pdf
如果从头开始,请按上述顺序遍历文件夹以获得最大的学习体验。 如何使用此存储库 每个 ex* 文件夹中的 Markdown 形式的指南将显示在特定练习中要做什么。 每次练习只修改指定区域的程序代码。 每个特定文件夹中的 ...
本资料是UCSF DOCK的使用案例分享的输入资料,将使用DOCK 6.11自带的片段库,使用DOCK/RDKit的 DOCK_D3N功能从头设计分子。便于使用者直接从这部分设计工作开始,不需花时间来准备输入文件。
Java-3D游戏引擎与基本游戏Java中使用LWJGL,OpenGL,OpenAL等的3D游戏引擎。 从头开始
我没有尝试从头开始构建它并生成 JNI 包装器。 这节省了大量手动编码,并允许更轻松地与 c-periphery 更改同步。 为 c-periphery 生成 JNI 源代码。 生成 autoconf 和 msbuild 源项目以构建本机库。 这将作为本机源 ...
乙二醇2020年度策略报告:“熊”关漫道真如铁,而今迈步从头越-20191230-光大期货-36页.rar
开发人员零java-Mentorama 在此存储库中,将从头开始插入Java Developer模块的Mentorama课程期间开发的所有练习。
使用高密度遗传锚(4.4M)评估玉米从头基因组组装。 如果有可用的遗传锚,它也可以用于其他物种。 快照 近 5,000 个遗传锚用于验证来自 de novo 基因组组装的 10Mb 支架的质量 先决条件 Java 8 电阻 释放 目前在 v...
3D游戏从头编-网上收集,很基础. 第一回:开发环境 第二回:3D基本概念 第三回:第一个D3D程序 第四回:渲染顶点 第五回:渲染索引顶点 第六回:摄象机 第七回:灯光 第八回:纹理 第九回:3D模型(.x)
java源码字符串缓冲区 这是 Java String 、 StringBuilder和StringBuffer方法/API 的完整指南。 本指南的源代码示例在我们的本地开发环境中进行了良好的测试,您可以将这些示例用作无错误。 您可以在 上了解更多信息...
自动玩家和挂钩框架的子弹地狱游戏从头后项目- Netdex/twinject-源码
2D-Java-Tile-Game 我第一次进入 Java 世界!... 一切都是从头开始编写的(从创建一个基本的 JFrame,到制作画布,渲染图形等......)。 在 src 目录中查看我的脚本。 来自 CodeNMore 的灵感: :
如果您了解一点C或JavaScript,本指南就是从头开始学习Java。 这是一个正在进行的工作,应该在下一个Java LTS(Java 17)发布时准备就绪。 所有代码都在启用预览功能的Java 14上运行。 注意:如果您只希望查看...
java 源码剖析 Java-Review 说明 这个仓库的建立的原因就是为了在 java 的复习过程中,从源码的角度去认真的钻研一下其内部的原理。 所有的分析和总结都在本人的博客上,希望和大家共同探讨,个人水平有限,有不对的...
Java机器人 这是一个从头开始编写JavaScript机器人