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

时间:2013-07-09 07:40:44

标签: java class reference

我遇到了这个代码

new Class_Name();    // (i)

现在,通常我会看到分配给变量的新语句的结果:

Class_Name n = new Class_Name();

n引用创建的对象。当(i)被叫时真正发生了什么?为什么有人想要这样做?有什么用途?

CODE

class Tree {
  int height;
  Tree() {
    print("Planting a seedling");
    height = 0;
  }

  Tree(int initialHeight) {
    height = initialHeight;
    print("Creating new Tree that is " +
    height + " feet tall");
  }

  void info() {
    print("Tree is " + height + " feet tall");
  }
  void info(String s) {
    print(s + ": Tree is " + height + " feet tall");
  }
}
enter code here
public class Overloading {
public static void main(String[] args) {
  for(int i = 0; i < 5; i++) {
  Tree t = new Tree(i);
  t.info();
  t.info("overloaded method");
  }
// Overloaded constructor:
new Tree();
}
}

4 个答案:

答案 0 :(得分:4)

当(i)被称为

时会发生什么

下面的代码行创建了一个Class_Name类型的对象,由于它没有被任何引用变量引用,它会立即死掉。

new Class_Name();

通过这种方式,您可以创建该类的对象,并在其上调用方法,而无需将其分配给引用。当您在代码中仅需要该对象一次并且不希望不必要地保留对它的引用时,您将执行此操作。匿名对象被创建并立即死亡。这很快又脏:

new Class_Name().someMethod();

在I / O流和AWT中,我们在程序中只使用一次对象;对于他们来说,最好选择匿名对象,如下所示。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

编辑后:

new Tree();

您的意图是在构造函数中执行代码。但是您的代码将无法编译我相信您需要将最后一行放在某个方法中。

答案 1 :(得分:2)

new Class_Name(); 

此语句将创建Class_Name的对象,并且将调用构造函数,但您没有持有该类的引用,因此您无法调用任何其他方法。在这里,这个对象范围将被限制在它所写的位置,比如方法或块。

它的一般用途。 new Thread(new RunnableTest()).start();

class RunnableTest implements Runnable{
    public void run(){
       for(int i=0;i<10;i++){
          System.out.println("i : "+i);
       }
    }
}

答案 2 :(得分:0)

当你想使用oop时,你必须创建许多具有大量属性的类

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

使用

创建这些类的对象
new Class_Name();

答案 3 :(得分:0)

new class_name()将创建class_name的对象。由于您没有存储它的引用,因此在此语句之后您将无法在代码中使用相同的对象。但是,最好将它存储在如果你想在稍后的代码中使用它,那么对象的引用。它将帮助你减少管理多个对象和内存的工作量。