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

在Java中不使用'new'关键字声明数组

华哲茂
2023-03-14
问题内容

以下两个声明之间有什么区别?

int arr[] = new int [5];

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

arr1在堆栈上还是在堆上声明?


问题答案:

一个明显的区别是,一个全为零,另一个包含[1..5]。

但这是唯一的区别。两者都是5元素整数数组,都以相同的方式分配。用大括号声明不只是语法上的方便new

请注意,只有在声明数组时才能使用此形式:

int[] blah = {}

但不是

int[] blah;
blah = {};

要么

return {};

对象(数组是对象)在堆上分配。



 类似资料:
  • 问题内容: 您使用关键字还是引发一些验证运行时异常?它给您带来什么好处,或者为什么您认为不值得使用呢? 问题答案: 如果条件为假,则声明将抛出运行时错误(AssertionError)。断言为您提供了一种简化的方式来记录,检查和强制执行代码的正确性标准。好处是用于定义和操纵这些正确性条件的语言级挂钩。如果您希望启用或禁用它们(存在一些关于是否是个好主意的争论),则可以从JVM命令行中启用。下面的一

  • 问题内容: 如果我在一个类中有以下声明,其中是抽象类型: 是否能让我仍然能够更改中的对象的状态,但阻止我将新对象添加到列表中?如果我写错了,请您解释一下正在做什么以及何时应该使用关键字。 问题答案: 不,final关键字不会使列表或其内容不可变。如果您想要一个不可变的列表,则应使用: final关键字的作用是防止您为’synapses’变量分配新值。即,您不能写: 但是,您可以编写:

  • 我是java新手,但我的理解是关键字出现在构造函数之前。然而,在来自Oracle的Java教程的这个示例中,情况并非如此。 卡是阶级,我不明白这一行是什么意思: 有人能解释一下这行代码是什么意思吗。

  • 如果我在一个类中有以下语句,其中Synapse是一个抽象类型: 最终是否允许我仍然能够更改列表中Synapse对象的状态,但阻止我向列表中添加新的Synapse对象?如果我错了,请您解释一下final正在做什么,以及我应该在什么时候使用关键字final。

  • 问题内容: 如果声明变量而不使用“ var”,则变量始终变为GLOBAL。 在函数内部声明全局变量是否有用?我可以想象在某个事件处理程序中声明一些全局变量,但这有什么用呢?更好地使用RAM? 问题答案: 不,没有RAM好处或类似的好处。 w3schools谈论的是我所说的“内隐全球性恐怖” 。考虑以下功能: 看起来很简单,但是由于线路上的错字,它返回,而不是。并创建一个带有输入错误名称的全局变量:

  • 这对我来说毫无意义,因为异步已经存在。 我最初的计划是这样的: 因为所有测试都不是异步的,但这会产生相同的错误: 移除 并将tokio宏用作tokio::ex。Tokio::try_join!解决了眼前的问题,尽管知道为什么会发生这种情况会很好。