关键字this引用

news/2024/7/5 4:17:12

要点提示: 关键字this引用独享自身。他也可以在构造方法内部调用另一个类的其他构造方法。

关键字this是指向调用对象本身的引用名。可以用this关键字引用对象的实例成员。
复制代码

例如:下面a的代码使用this来显示地引用独享的radius以及调用他的getArea()方法。this引用通常可以省略掉的,如b所示。然而,在引用隐藏数据域的以及调用一个重载的构造方法的时候,this引用是必须的。

//a:
public class Circle{private double radius;.....public double getArea() {return this.radius*this.radius*Math.PI;}public String toString() {return "radius"+this.radius+"area"+this.getArea();}
}
//b:
public class Circle{private double radius;.....public double getArea() {return radius*radius*Math.PI;}public String toString() {return "radius"+radius+"area"+getArea();}
}
复制代码

使用this引用隐藏数据域

this关键字可以用于引用类的隐藏数据域。例如在数据域set方法中,经常将数据域名用作参数名。在这种情况下,这个数据域在set方法中被隐藏。为了给他设置新值,需要在方法中引用隐藏的数据域名。隐藏的静态变量可以简单的通过“类名.静态变量”的方式引用。隐藏的实例变量就需要使用关键字this来引用了。public class F {private int i = 5;private static double k = 0;public void setI(int i){this.i = i;}public static void setK(double k) {F.k = k;}//other menthods omitted
}
复制代码

使用this调用构造方法

关键字this可以用于调用同一个类的另一个构造方法。例如,可以如下改写Circle类:public class Circle {private double radius;public Circle(double radius) {tihs.radius = radius;	//this关键字用于引用所构建的对象的隐藏数据radius}public Circle() {tihs(1.0);				//this关键字用来调用另一个构造方法}
}在第二个构造方法中,this(1.0)这一行调用带double值参数的第一个构造方法。
复制代码

注意: Java要求在构造方法中,语句this(参数列表)应在任何其他可执行语句之前出现。

提示: 如果一个类有多个构造方法,最好尽可能的使this(参数列表)实现它们。通常,无参数或参数少的构造方法可以用this(参数列表)调用参数多德构造方法。这样做通常可以简

转载于:https://juejin.im/post/5ad8b546518825672d33b3f8


http://lihuaxi.xjx100.cn/news/237051.html

相关文章

为什么要使用Go语言?Go语言的优势在哪里?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Go语言之所有越来越受到开发者的欢迎,我认为与其超高的实用价值密不可分。要知道Go语言是为了解决现实问题而设计的,而不是为…

程序员怎么赚更多的钱_自由职业技巧:如何感到更加自信和赚更多钱

程序员怎么赚更多的钱Over my 10 years as a freelance developer, many fellow freelancers have asked me for advice. How can they make freelancing work for them?在我作为自由开发者的10年中,许多自由职业者都向我寻求建议。 他们如何让他们从事自由职业&am…

获取BT节点信息bittorrent-discovery

2019独角兽企业重金招聘Python工程师标准>>> 获取BT节点信息bittorrent-discovery BT/磁力都是常见的P2P下载方式。用户作为一个节点node从其他用户node或者peer获取文件数据,以完成下载。bittorren-discovery脚本可以探测目标主机通过BT/磁力方式分享所…

【leetcode】30. Substring with Concatenation of All Words

题目如下: 解题思路:本题题干中有一个非常关键的前提,就是words中的所有word的长度一样,并且都要被使用到。所以,我们可以把输入的s按word的长度进行等分,以s "barfoothefoobarman",words [&qu…

GO语言有哪些优势?怎样入门?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1、学习曲线 它包含了类C语法、GC内置和工程工具。这一点非常重要,因为Go语言容易学习,所以一个普通的大学生花一个星期就能…

docker手册_Docker手册

docker手册The concept of containerization itself is pretty old, but the emergence of the Docker Engine in 2013 has made it much easier to containerize your applications. 容器化本身的概念还很老,但是Docker Engine在2013年的出现使容器化应用程序变得更…

shell编程--case判断

case基础语法:格式 case 变量名 invalue1)command;;value2)command;;*)commond;;esac在case程序中,可以在条件中使用|,表示或的意思, 比如 2|3)command;;脚本 [rootlynn-04 shell]# vim case.sh#!/bin/bash read -p "Ple…

Data Artisans发布支持ACID事务的流式处理框架Streaming Ledger

data Artisans宣布推出Streaming Ledger,它扩展了Apache Flink,提供了跨表、键和事件流执行可序列化ACID事务的功能。这项正在申请专利的技术是Flink的专有附加技术,超越了当前一次只能在一个键上实现一致性的标准。\\在发布Streaming Ledger…