java - Java中的数组以及它们如何存储在内存中

标签 java arrays memory

我正在尝试了解 java 中的数组设置。为什么必须在创建数组后为数组中的每个对象初始化空间。它是如何存储在内存中的:

[object][object]

或者像这样:

[*class]->[object]  
[*class]->[object]

换句话说,在内存中实际做了什么。 array[0] = new class() 是否只返回对内存中保留位置的引用,而 class[] array = new class[10] 语句会创建一些东西沿着 10 个指针的行,这些指针稍后由新语句分配?

最佳答案

Java 中的数组存储以下两种内容之一:原始值(intchar、...)或引用(也称为指针)。

因此,new Integer[10] 仅为 10 个 Integer 引用创建空间。它确实创建 10 个 Integer 对象(甚至是 10 个 Integer 对象的可用空间)。

顺便说一句,字段、变量和方法/构造函数参数的工作方式完全相同:它们也只存储原始值或引用。

关于java - Java中的数组以及它们如何存储在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564423/

相关文章:

php - 将 Base64 图像插入数组 PHP PDO

iOS 纹理占用 33% 额外内存

C无法从函数中读取字符串数组

java - 可以将 'this' 传递给 ScheduledExecutorService.scheduleWithFixedDelay() 吗?

java - 网站无法显示土耳其语字符。 Tomcat 服务器,Mysql 数据库

python - 如何引导 numpy 数组的最里面的数组?

java - 关于java按值传递的澄清

java - 无法将 Java 中提供程序的标签名称发送到 Pact Broker

java - 如何添加正则表达式来匹配字母数字字符和一些特殊字符

arrays - Swift:遍历字典数组