Java 当new Class()的结果未分配给变量时会发生什么

Java 当new Class()的结果未分配给变量时会发生什么,java,class,reference,Java,Class,Reference,我遇到了一个代码,上面写着 new Class_Name(); // (i) 现在,通常我会看到分配给变量的新语句的结果: Class_Name n = new Class_Name(); 和n对所创建对象的引用。调用(i)时会发生什么?为什么会有人想这么做?它有什么用途 代码 类树{ 内部高度; 树(){ 印刷品(“种苗”); 高度=0; } 树(整数初始高度){ 高度=初始高度; 打印(“正在创建新的树”+ 身高+“英尺高”); } 无效信息(){ 打印(“树为“+高度+”英尺高”

我遇到了一个代码,上面写着

new Class_Name();    // (i)
现在,通常我会看到分配给变量的新语句的结果:

Class_Name n = new Class_Name();
n
对所创建对象的引用。调用(i)时会发生什么?为什么会有人想这么做?它有什么用途

代码

类树{
内部高度;
树(){
印刷品(“种苗”);
高度=0;
}
树(整数初始高度){
高度=初始高度;
打印(“正在创建新的树”+
身高+“英尺高”);
}
无效信息(){
打印(“树为“+高度+”英尺高”);
}
无效信息(字符串s){
打印(s+):树为“+高度+”英尺高);
}
}
在这里输入代码
公共类重载{
公共静态void main(字符串[]args){
对于(int i=0;i<5;i++){
树t=新树(i);
t、 信息();
t、 信息(“重载方法”);
}
//重载构造函数:
新树();
}
}
调用(i)时会发生什么

下面的代码行创建了一个类型为
Class\u Name
的对象,因为它没有被任何引用变量引用,所以它会立即消失

new Class_Name();
通过这种方式,您可以创建该类的对象,并调用其上的方法,而无需将其分配给引用。当您在代码中只需要该对象一次,并且不想不必要地保留对它的引用时,您可以这样做。匿名对象被创建并立即消失。这又快又脏:

new Class_Name().someMethod();
在I/O流和AWT中,我们在程序中只使用一次多个对象;对于他们,最好选择匿名对象,如下所示

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
编辑后:

new Tree();
您的意图是在构造函数中执行代码,但是您的代码不会编译,我相信您需要将最后一行放在某个方法中

new Class_Name(); 
此语句将创建
Class\u Name
的对象,并将调用构造函数,但您没有持有该类的引用,因此无法调用任何其他方法。在这里,这个对象的范围将被限制在它所写的地方,比如在方法或块中

它的一般用途<代码>新线程(新RunnableTest()).start()

类RunnableTest实现Runnable{
公开募捐{

对于(inti=0;i当您想要使用oop时,您必须创建大量具有大量属性的类

有时,您需要在特定类中使用某个类的属性,因此需要

使用创建这些类的对象

new Class_Name();

newclass_name()
将创建
类的对象\u name
。由于您没有存储该对象的引用,因此在此语句之后,您将无法在代码中使用同一对象。但是,如果您希望在以后的代码中使用该对象的引用,则最好存储该对象的引用。这将帮助您减少管理多个对象和内存的工作量

“为什么有人想这么做?”这取决于
Class_Name()的构造函数中的内容
。为了更快地获得更好的帮助,请发布一个。无意冒犯,但3年后,您应该真正知道如何格式化您的文档posts@MarcoForberg抱歉,我刚刚复制了格式化的代码,并希望它也在这里格式化。是否编辑了
new Class_Name().someMethod()如果OP的代码做到了这一点,这将是一个合理的解释。OP的代码没有做到这一点。
class RunnableTest implements Runnable{
    public void run(){
       for(int i=0;i<10;i++){
          System.out.println("i : "+i);
       }
    }
}
new Class_Name();