任何空的特定类型的数组是否包含该类型的对象或空插槽? (垃圾收集器)

时间:2016-11-23 23:08:44

标签: java garbage-collection

在以下我想了解的例子中。他们说(Core Java SCJP Quiz Questions (Google Play))创建 5 对象, 2 用于垃圾收集器。

当我试图解决它时。我为 3 对象和 1 出来了垃圾收集器(我知道错误)。这三个对象是:

  1. College [] c = new College[3];
  2. c[0] = new College();
  3. College co = new College();
    • co= null用于垃圾收集器。
    • c 1只是一个参考。
    package example;
    
    class Class {
        int [] cls = {1,2,3,4};
    }
    
    public class College{
    
        public static void main(String [] args){
            College [] c = new College[3];
            c[0] = new College();
    
            College co = new College();
            c[1] = co;
            co= null;
            c[1] = null;
        }
    }
    

    问题

    • 5个创建的对象和2个发送给GC的对象是什么。
    • 我不明白。如果我们已经在数组中创建了3个对象。那么我们为什么要实例化c[0] = new College();
    • 我了解College [] c = new College[3]College类型的数组,但尚未包含任何对象。是对还是错?

    从现在开始,我将坚持使用官方的Java书籍。

1 个答案:

答案 0 :(得分:4)

int [] cls = {1,2,3,4};

这会创建一个int[]对象。

  

5个创建的对象是什么

创建了四个对象[除非他们计算String[] args,否则他们可能不应该这样做。

  

和2发送给GC。

没有任何内容被发送到GC'通过您发布的代码,但是当此类代码位于方法范围内时所有在退出时都符合GC的条件,并且无效的引用使之前引用的对象也符合GC的条件,如果没有其他参考。

  

我不明白。如果我们已经在数组中创建了3个对象。那么我们为什么要实例化c [0] = new College();

我们没有在数组中创建3个对象'。我们创建了一个包含三个空插槽的数组。

  

我明白学院[] c =新学院[3]是一个类型学院的阵列,但还没有任何对象。是对还是错?

正确。