java-“ this()”方法是什么意思?

我遇到了这段代码,我不退出这一行来理解它的含义或它在做什么。

public Digraph(In in) {

this(in.readInt());

int E = in.readInt();

for (int i = 0; i < E; i++) {

int v = in.readInt();

int w = in.readInt();

addEdge(v, w);

}

}

我了解this.method()或this.variable是什么,但是this()是什么?

8个解决方案

55 votes

这是构造函数重载:

public class Diagraph {

public Diagraph(int n) {

// Constructor code

}

public Digraph(In in) {

this(in.readInt()); // Calls the constructor above.

int E = in.readInt();

for (int i = 0; i < E; i++) {

int v = in.readInt();

int w = in.readInt();

addEdge(v, w);

}

}

}

您可以通过缺少返回类型来区分此代码是构造函数,而不是方法。这非常类似于在构造函数的第一行中调用super()以初始化扩展类。 您应该在构造函数的第一行中调用this()(或this()的任何其他重载),从而避免构造函数代码重复。

您也可以看看这篇文章:Java中的构造方法重载-最佳实践

Avi answered 2020-07-14T14:57:18Z

10 votes

使用this()这样的函数,实质上是调用该类的Constructor。 这使您可以在一个构造函数中进行所有通用的初始化,而在其他构造函数中进行特殊化。 因此,例如在这段代码中,对2966227781681681677312的调用正在调用具有一个int参数的Digraph构造函数。

Sinkingpoint answered 2020-07-14T14:57:38Z

9 votes

此代码段是一个构造函数。

对this的此调用将调用同一类的另一个构造函数

public App(int input) {

}

public App(String input) {

this(Integer.parseInt(input));

}

在上面的示例中,我们有一个采用super()的构造函数和一个采用String的构造函数。采用String的构造函数将String转换为int,然后委托给int构造函数。

请注意,对另一个构造函数或超类构造函数(super())的调用必须是构造函数中的第一行。

也许看一下它,以获得有关构造函数重载的更详细说明。

Boris the Spider answered 2020-07-14T14:58:16Z

4 votes

几乎一样

public class Test {

public Test(int i) { /*construct*/ }

public Test(int i, String s){ this(i); /*construct*/ }

}

Antimony answered 2020-07-14T14:58:36Z

3 votes

调用this本质上将调用类Constructor。例如,如果要扩展某些内容,则可以与296622909280433030一起使用:this.add(JComponent).

user2228462 answered 2020-07-14T14:58:56Z

3 votes

具有int参数的Digraph类的另一个构造函数。

Digraph(int param) { /* */ }

Nándor Krácser answered 2020-07-14T14:59:16Z

2 votes

构造函数重载:

例如:

public class Test{

Test(){

this(10); // calling constructor with one parameter

System.out.println("This is Default Constructor");

}

Test(int number1){

this(10,20); // calling constructor with two parameter

System.out.println("This is Parametrized Constructor with one argument "+number1);

}

Test(int number1,int number2){

System.out.println("This is Parametrized Constructor with two argument"+number1+" , "+number2);

}

public static void main(String args[]){

Test t = new Test();

// first default constructor,then constructor with 1 parameter , then constructor with 2 parameters will be called

}

}

LMK answered 2020-07-14T14:59:41Z

2 votes

this()是构造函数,用于在一个类中调用另一个构造函数,例如:-

class A{

public A(int,int)

{ this(1.3,2.7);-->this will call default constructor

//code

}

public A()

{

//code

}

public A(float,float)

{ this();-->this will call default type constructor

//code

}

}

注意: 我没有在默认构造函数中使用this()构造函数,因为它将导致死锁状态。

希望这个能对您有所帮助:)

user27 answered 2020-07-14T15:00:10Z

java this 代表什么_java-“ this()”方法是什么意思?相关推荐

  1. java重写的代码_java tostring方法重写代码示例

    当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toString()方法 默认情况下 System.out.printl ...

  2. java finalize使用场景_java finalize方法总结、GC执行finalize的过程

    注:本文的目的并不是鼓励使用finalize方法,而是大致理清其作用.问题以及GC执行finalize的过程. 1. finalize的作用 finalize()是Object的protected方法 ...

  3. java题算工资_Java模版方法的小练习——工资系统

    题目要求 解题思路 1.一共涉及了5个类,父类是Employee,父类中有个属性定义的是MyDate类的对象,存储的是生日信息.两个子类HourlyEmployee.SalariedEmployee代 ...

  4. java递归函数返回值_Java基础——方法返回值递归

    原标题:Java基础--方法返回值&递归 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 例题:写一 ...

  5. java bo代表什么_Java学习入门-08 -基本概念--PO、VO、DAO、BO、POJO

    几种对象(PO,VO,DAO,BO,POJO)关系示意图 说这几种对象前我们最好先对MVC三层架构有一定了解,M代表数据层.V代表展示层.C代表逻辑层(控制层).但我们也必须了解并不是所有项目都遵循M ...

  6. java 判断object类型_Java学习-方法与多态的学习心得

    一 1.什么是方法重写 方法的重写或方法的覆盖(overriding) 子类根据需求对从父类继承的方法进行重新编写 重写时,可以用super.方法的方式来保留父类的方法 构造方法不能被重写 2.方法重 ...

  7. java string出现次数_Java String方法获取字符出现次数及字符最大相同部分示例

    本文实例讲述了Java String方法获取字符出现次数及字符最大相同部分.分享给大家供大家参考,具体如下: package demo; public class Test { public stat ...

  8. java 图片传输方式_Java图像传输方法

    在研发B/S视频系统时候涉及到了图片在网络中的传输,研究了一些资料,也积累了部分经验: 一.序列化后传输 图像对象可以编码成指定图像格式文件保存在硬盘上,需要时再对其进行解码读入内存.但是除了这样还有 ...

  9. java基础教程传值_Java基础——方法传值(基本数据类型 VS 引用数据类型)

    总结--基本数据类型传值,引用类型传地址 在Java语言中,不管参数的类型是引用类型还是基本数据类型,数据参数和形式参数进行值传递的方式只有一种--参数值的值 复制一份 赋值给形式参数 所以,实参的值 ...

  10. java隐藏与覆盖_java中方法的隐藏和覆盖问题?

    ok()方法在继承时候发生覆盖(重写)了吗? 发生了.在子类B中的ok()方法拥有父类方法相同的方法名和参数列表(signature),所以在这里发生了重写.调用B类对象的ok()方法会print & ...

最新文章

  1. Python 中的 sys.argv 用法
  2. 影响SDN和NFV部署速度的两个因素
  3. 用拦截器+注解+cookie进行简单限流访问案例
  4. ITK:使用二项式内核模糊图像
  5. local sandbox html里的script tag是如何load到memory里的
  6. 将span隐藏的函数_分类汇总函数Subtotal和Aggregate应用技巧解读
  7. excel实战应用案例100讲(六)-社会判断理论:模型及应用
  8. linux更新软件载入缓存后停止_linux 中缓存怎样清除
  9. 贝壳金控赵文乐:基于 Spring Cloud 的服务治理实践
  10. U盘的用法用途与维护
  11. C/C++混编“未定义的引用”的解决一例
  12. oracle的double类型,JDBC中使用Oracle的binary_float和binary_double类型
  13. 《深入解析windows操作系统第6版下册》第10章:内存管理(第三部分译文与图片)...
  14. 短信验证码有哪些好用的平台?需注意这5点!
  15. 阿帕奇apache-apollo-1.7.1-windows-distro
  16. linux 动态ip解析,Linux DDNS 动态IP地址解析
  17. 7月7日第壹简报,星期四,农历六月初九
  18. .NetCore异常:Could not load file or assembly ‘Microsoft.AI.Web‘ or one of its dependencies. The system
  19. codeforces 129E/128C Games with Rectangle
  20. 文本数据分析实战【数据清洗、统计分析、可视化展示、情感分析】

热门文章

  1. activiti6 任务委派
  2. java web工程搭建_手把手搭建javaweb项目_手把手javaweb
  3. Hibernate与代理模式
  4. uni-app使用NativeJS获取录音分贝
  5. 试论运城关公2019通信类EI会议的发展与保护路径
  6. matlab 变压器 异名,Matlab simulink变压器的配置
  7. 谷歌推网络电话服务 比Skype便宜三分之一
  8. idea如何彻底完美地修改项目名,以及解决idea修改项目名后出现中括号[]的问题
  9. eclipse 黑色主题在线更新
  10. TortoiseGit(乌龟git)简单操作oschina