当前位置: 首页 > 面试题库 >

用值初始化数组-我应该显式地实例化该类吗?

萧嘉禧
2023-03-14
问题内容

我经常看到这样初始化数组:

String[] array = new String[] { "foo", "bar", "baz" };

但是,阅读《语言基础-
数组》
显示,短语法不需要显式实例化构造函数:

另外,您可以使用快捷方式语法创建和初始化数组:

 int[] anArray = {
     100, 200, 300,
     400, 500, 600,
     700, 800, 900, 1000
 };

因此,假设这两种初始化方法:

String[] array = new String[] { "foo", "bar", "baz" };
String[] array2 = { "foo", "bar", "baz" };

这些之间有什么区别吗?两者看起来都一样,在这种情况下,我应该假设第二个隐式调用the new String[],第一个只是更冗长的方式,还是在幕后呢?

从Java开始,如果这太愚蠢了,对不起,但是我在网上找不到关于此的任何信息。


问题答案:

这两种方法是等效的。但是请注意,简洁的语法只能在变量声明中使用。在变量声明之外,您必须使用详细语法:

    String[] array;
    array = new String[] { "foo", "bar", "baz" }; // OK

    String[] array2;
    array2 = { "foo", "bar", "baz" };             // ERROR

有关更多讨论,请参见此答案。



 类似资料:
  • 问题内容: 在我的Hibernate类中,应该初始化实例集合 或不引起注意 对Hibernate有什么不同吗?我遇到了这个Hibernate文档,它在其中初始化了他们的HashSet,但是我经常看到他们没有被初始化。 问题答案: 从Hibernate的文档中: 由于存在基础关系模型,因此,具有集合值的属性不支持空值语义。Hibernate不会区分空集合引用和空集合。 还有… 当您使实例具有持久性时

  • 关于编译器(GCC)所做的优化,标准做法是什么?每个选项(-O、-O1、-O2、-O3、-Os、-s、-fexpensive-optimizations)有什么不同,我如何决定什么是最优的?

  • 问题内容: 我知道您可以在实例化期间初始化数组,如下所示: 有没有办法用ArrayList做同样的事情?还是我必须单独添加内容? 问题答案: Arrays.asList可以在这里提供帮助:

  • 问题内容: 我知道当我初始化一个char数组时: 要么 为什么不喜欢 初始化数组: 为什么它们不同?它是Java哲学的本质之一还是其​​背后的某些原因? 问题答案: 如果您曾经使用过 C ,那么答案就非常简单。在 C语言中 ,创建数组的方式是在堆栈上分配一个足以容纳元素数量的静态内存长度,并使用指针指向第一个元素-或堆上动态内存长度,然后用指针指向第一个元素。 在 C ++中 ,第二个版本已更改为

  • 你已经有了基本的页面布局和需要用的CSS以及JS文件。现在我们需要初始化我们的应用,比如在 my-app.js中 var myApp = new Framework7(); 上面这个例子中我们使用了 myApp 作为变量名存储 Framework7 初始化之后的实例。 这样初始化非常简单,但是Framework7 也提供了更多个性化的定制,只需要在初始化的时候传入一个配置对象即可。 var myA

  • 本文向大家介绍tensorflow 初始化未初始化的变量实例,包括了tensorflow 初始化未初始化的变量实例的使用技巧和注意事项,需要的朋友参考一下 今日在Stack Overflow上看到一个问如何只初始化未初始化的变量,有人提供了一个函数,特地粘贴过来共大家品鉴: 通过tf.global_variables()返回一个全局变量的列表global_vars, 然后以python列表解析式的