Java 在构造函数上调用类方法是什么?

Java 在构造函数上调用类方法是什么?,java,Java,我只知道java的基本概念。 今天我在这里学习超级关键字 在代码示例中,我们找到了这个代码段 class Test { public static void main(String[] args) { new T3().test(); ---> What is happening here ? } } 我可以知道新T3.test的情况吗?它是新的物体吗?如果是的话,为什么不写在下面 T3 ob = new T3().test(); 或者因为测试方法的返回

我只知道java的基本概念。 今天我在这里学习超级关键字

在代码示例中,我们找到了这个代码段

class Test {
    public static void main(String[] args) {
        new T3().test(); ---> What is happening here ?
    }
}
我可以知道新T3.test的情况吗?它是新的物体吗?如果是的话,为什么不写在下面

T3 ob = new T3().test();
或者因为测试方法的返回类型是无效的,所以他们以这种方式编写。是否意味着无法创建引用类型?我说得对吗

有人能帮我理解这一点吗?这个代码片段到底发生了什么?我只知道只有当我们只需要创建这样的对象时,我们才会使用这种方法

Classtype vrblName=新构造函数

表达式解析为new T3.test,而不是new T3.test,就好像它注定要创建一个新对象一样。因此,如注释中所述,它创建一个T3对象,对其调用测试方法,并丢弃结果。T3对象可能会也可能不会在这个过程中幸存下来,因为它可以在其构造函数或测试中发布指向自身的指针。这和写作没什么不同

static T3 findSomeT3() { /* could return a new one or an existing one */ }
public static void main(String[] args) {
  findSomeT3().test();
}
也可能在完成时丢弃T3对象

顺便说一下,new后面的名称不应被视为构造函数;这是一个类名。当然,调用构造函数来初始化它,并通过将类的名称视为函数名来声明构造函数,但它仍然是您正在谈论的类

我可以知道新T3.test的情况吗?它是新的物体吗?如果是的话,为什么不写在下面

新T3创建并返回一个对象。test正在调用一个方法

或者因为测试方法的返回类型是无效的,所以他们以这种方式编写。是否意味着无法创建引用类型?我说得对吗


test返回void,但newt3肯定会返回一个对象。您可能有一个类似T3=newT3.test;的引用;。因此,您只需在一行中执行两个任务。

new T3.test和T3 ob=new T3.test执行相同的操作,但后者保留对新创建对象的引用。也许您正在查看的代码不需要该引用?它正在创建一个新的T3对象,然后在该对象上调用测试方法。因为test可能不会返回任何东西,所以我会说t3ob=newt3.test;这是不正确的。另一种方式是T3 obj=新T3;然后进行obj试验;第二个示例只有在T3.test返回T3时才可能出现。等价物是{T3 ob=new T3;ob.test;},请注意,ob在调用test后离开作用域,因此符合垃圾收集的条件,如第一个示例所示。@ScaryWombat如您所说,它正在创建一个新的T3对象,那么为什么我们不能给他类的引用变量?@kelly没有任何特殊或异常。实例被创建,方法被调用,实例不再可访问,因此有资格进行垃圾收集。