可能重复:
Java是"传递引用"吗?
数组在Java 中不是原始类型,但它们也不是对象,它们是通过值还是通过引用传递的?它取决于数组包含的内容,例如引用或基本类型吗?
我有这样的数组声明:
int a[];
Run Code Online (Sandbox Code Playgroud)
这a是一个原始int类型的数组.这个数组存储在哪里?它是存储在堆还是堆栈上?这是一个原始类型int,所有原始类型都不存储在堆上.
在我的计算机科学课程中,我们被告知在创建数组时,JVM将根据数组的大小自动分配内存.例如,如果创建大小为10的整数数组,JVM将为该数组分配10*32位数据.
我的问题是,当您创建具有不同大小的对象数组时,此过程究竟是如何工作的?例如一个String对象.当你创建一个包含10个字符串的数组时,系统上是否为这些字符串实际保留了任何内存,或者因为它们只是指针,所以不需要内存分配?
到目前为止,我在阅读一些Java教程时使用以下语法分配数组:
// Ok, all the elements are zero upon creation
int[] a = new int[5];
// I can set all the elements however I want!
for (int i = 0; i < a.length; i++)
a[i] = i+1
Run Code Online (Sandbox Code Playgroud)
但是自从我开始使用课程以来,事情让我感到困惑:
class Employee
{
public Employee(String name, int age) {
emp_name = n;
emp_age = a;
}
void setName(String name) {
emp_name = name;
}
void setAge(int age) {
emp_age = age;
}
private String emp_name;
private String emp_age;
}
Run Code Online (Sandbox Code Playgroud)
我在main函数中使用此类,如下所示:
Employee[] staff …Run Code Online (Sandbox Code Playgroud)