首页 > 解决方案 > 我们可以不在 Trie 构造函数中初始化引用数组吗

问题描述

这个Trie 实现中,children数组元素null使用for循环单独赋值。

TrieNode(){ 
    isEndOfWord = false; 
    for (int i = 0; i < ALPHABET_SIZE; i++) 
    children[i] = null; 
}

但是,默认情况下,当我们在 Java 中创建引用类型数组时,所有条目都将具有默认值null,如下所示:

TrieNode[] children = new TrieNode[ALPHABET_SIZE];

上述步骤将children数组条目的默认值分配为null.

是否需要在该构造函数内的循环中 null再次进行赋值?forTrieNode

标签: javadata-structurestrie

解决方案


不,这不是必需的——对于每个类变量、实例变量或数组组件,Java 总是会分配合理的默认值(比如0forint或 null for Object)——你可以在这里阅读更多

但是请注意,对于局部变量,不能保证

编译器会为上述类型的字段分配一个合理的默认值;对于局部变量,从不分配默认值。

这就是为什么你不得不手动初始化它

public void f() {
    String s;
    System.out.println(s); // will cause Error: java: variable s might not have been initialized
}

推荐阅读