Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以用Java中的变量创建数组吗?_Java_Arrays - Fatal编程技术网

可以用Java中的变量创建数组吗?

可以用Java中的变量创建数组吗?,java,arrays,Java,Arrays,在我的计算机科学课程中,我被告知只能使用文字和命名常量来创建数组,如 int[] myarray = new int[10]; int arraysize = 10; int[] myarray = new int[arraysize]; 或 教授说可变变量不能用来创建数组,比如 int[] myarray = new int[10]; int arraysize = 10; int[] myarray = new int[arraysize]; 我认为一旦创建了一个数组,它的大小就不能

在我的计算机科学课程中,我被告知只能使用文字和命名常量来创建数组,如

int[] myarray = new int[10];
int arraysize = 10;
int[] myarray = new int[arraysize];

教授说可变变量不能用来创建数组,比如

int[] myarray = new int[10];
int arraysize = 10;
int[] myarray = new int[arraysize];
我认为一旦创建了一个数组,它的大小就不能改变,因此创建它所使用的内容(文字、命名常量或变量)无关紧要。此外,“final”关键字是否只影响变量(如ARRAY_SIZE),而不影响分配给它的内容

那么为什么我不能使用变量(例如arraysize)来创建数组呢


我的教授拒绝与我讨论这个问题,因此我把这个问题带到这里。

我知道你在这里问什么,我可以告诉你为什么你的教授告诉你这个。 主要的原因是,costant(final)整数在整个代码中不会改变,因此它不会以任何方式改变数组的维数

但是 这并不意味着你不能使用它 注意下面的代码:

short numberOne =5;
int numberTwo = 5;
byte numberThree = 5;
final int NUMBER_FOUR = 5;
    
int[] arrayOne = new int[numberOne]; //short
int[] arrayTwo = new int[numberTwo]; //int
int[] arrayThree = new int[numberThree]; //byte
int[] arrayFour = new int[NUMBER_FOUR];  //final INT 

所有这些组合都是经过验证的,可以使用,即使不是最终的

我知道你在这里问什么,我可以告诉你为什么你的教授告诉你这些。 主要的原因是,costant(final)整数在整个代码中不会改变,因此它不会以任何方式改变数组的维数

但是 这并不意味着你不能使用它 注意下面的代码:

short numberOne =5;
int numberTwo = 5;
byte numberThree = 5;
final int NUMBER_FOUR = 5;
    
int[] arrayOne = new int[numberOne]; //short
int[] arrayTwo = new int[numberTwo]; //int
int[] arrayThree = new int[numberThree]; //byte
int[] arrayFour = new int[NUMBER_FOUR];  //final INT 

所有这些组合都经过验证并可以使用,即使在Java中不是最终的,也完全可以创建一个以长度为变量的数组,这本身并没有什么不好的地方。无论用作长度的变量是否声明为
final

在Java中,完全可以创建一个以长度作为变量的数组,它本身并没有什么不好的地方。你用作长度的变量是否被声明为final也无关紧要。

你的教授错了。用于初始化数组的大小不需要是常量。如果你真的想把这一点带回家,你可以引入随机性:

int samples = 6; // 6 proofs
int maxSize = 100;
for (int i = 0; i < samples; i++) {
    int mysterySize = ThreadLocalRandom.current().nextInt(maxSize); // Random size
    int[] mysteryArray = new int[mysterySize];
    System.out.println("Mystery Array is size: " + mysteryArray.length);
}
请注意,从这个输出中,数组大小决不是常数。数组初始化后,确实不能更改其大小。但是,始终可以创建一个大小可变的新数组,并将元素从原始数组复制到新数组


如果您需要一种可以改变其大小的数据类型,请查看和其他。

您的教授错了。用于初始化数组的大小不需要是常量。如果你真的想把这一点带回家,你可以引入随机性:

int samples = 6; // 6 proofs
int maxSize = 100;
for (int i = 0; i < samples; i++) {
    int mysterySize = ThreadLocalRandom.current().nextInt(maxSize); // Random size
    int[] mysteryArray = new int[mysterySize];
    System.out.println("Mystery Array is size: " + mysteryArray.length);
}
请注意,从这个输出中,数组大小决不是常数。数组初始化后,确实不能更改其大小。但是,始终可以创建一个大小可变的新数组,并将元素从原始数组复制到新数组


如果您需要可以更改其大小的数据类型,请查看,然后执行其他操作。

他错了……他错了。。。。