我尝试在java中使用整数数组,代码如下:
public static void main(String[] args) {
int[] array = testArray(100);
System.out.println(array.length);
for(int i = 0; i < 100; i++)
System.out.println(array[i]);
}
public static int[] testArray(int size){
int[] array = new int[size];
for(int i = 0; i < size; i++)
array[i] = i;
return array;
}
我还在C ++中测试一个整数数组,如下所示:
#include<iostream>
using namespace std;
void getArray(int size)
{
int array[size];
for(int i=0; i<size; i++)
array[i]=i;
}
int main()
{
getArray(10);
return 0;
}
我总是用两个片段得到正确的答案,为什么?因为我认为数组的长度不能为java,c和c ++这样的语言变化。
答案 0 :(得分:4)
三种语言不同,不同语言的功能也会有所不同。特别是,在C99中,您可以在堆栈中定义变量的数组(对于那些主要编程为Java的数组,这通常用于指代不是编译时常量的大小,而不是数组将更改大小)。
在C ++中,你不能在堆栈中声明它们(GCC允许这样做,对模仿C99行为的语言有不一致的扩展),但是你可以用给定大小和存储的new
动态分配内存。变量中的指针。
在Java中,你不能在堆栈中创建一个数组,你所能做的就是用new
动态分配数组并存储一个引用。
int size = 100;
// C99
int data[size];
// C++
// int data[size]; // error, but allowed by gcc
int *data = new int[size];
// Java
int[] data = new int[size];
答案 1 :(得分:2)
Java和C是不同的语言。标准C中允许的仅作为动态分配(malloc
/ calloc
)在Java中是允许的,因为Java中的所有数组分配都是动态; Java中缺少显式堆栈分配的概念。
答案 2 :(得分:2)
Java中数组的长度不可变。它是在创建数组时定义的(即,在运行时动态),但在此之后无法更改。
此外,每个数组都有一个length
属性,可用于使for循环能够遍历任何长度的数组:
for(int i = 0; i < array.length; i++)
System.out.println(array[i]);
答案 3 :(得分:0)
这里没有变数。您是通过将大小传递给创建所请求大小的数组的方法来初始化数组。换句话说,初始化后无法操纵数组的大小,而ArrayList
则可以改变大小。