Java 在运行时分配阵列的问题
我在运行时分配数组时遇到问题,我的意思是Java 在运行时分配阵列的问题,java,Java,我在运行时分配数组时遇到问题,我的意思是 Scanner Scan = new Scanner(System.in); int size; int[] myarr = new int[size]; size = Scan.nextInt(); 这里的问题是数组大小没有任何更新 线索:这是我正在处理的一个类的简化版本,其中数组的大小作为参数传递给构造函数,我不能在主函数中声明数组。数组需要保留此类的属性。更改此属性 Scanner Scan = new Scanner(System.in); i
Scanner Scan = new Scanner(System.in);
int size;
int[] myarr = new int[size];
size = Scan.nextInt();
这里的问题是数组大小没有任何更新
线索:这是我正在处理的一个类的简化版本,其中数组的大小作为参数传递给构造函数,我不能在主函数中声明数组。数组需要保留此类的属性。更改此属性
Scanner Scan = new Scanner(System.in);
int size;
int[] myarr = new int[size];
size = Scan.nextInt();
到
请注意,数组的大小是固定的,如果不创建新数组,则无法在运行时动态更改大小。
int[] myarr = new int[size];
变量大小已声明,但尚未初始化。在使用之前,应先对其进行初始化:
Scanner Scan = new Scanner(System.in);
int size = Scan.nextInt();
int[] myarr = new int[size];
注:
创建阵列myarr后,其大小无法更改。如果要更改大小,可以创建具有所需大小的新数组,或使用其他结构(如ArrayList)。
您在实例化数组后定义了大小。如果您想频繁调整字段大小,您很可能不想使用数组,因为它无法调整大小。正如在上面的一条评论中提到的,您可以使用ArrayList。但是,它仍然是一个列表,在内部是一个数组:即使您不必手动调整它的大小,JVM也会在内部调整它的大小-这可能会导致运行时的不良行为,前提是调整大小是您的首要任务 如果经常调整列表的大小,您可能希望查看更动态的结构,例如LinkedList
然而,这一决定总是基于您将如何使用您的列表以及您的主要目标。首先询问列表的大小。然后创建你的数组。你的期望都错了。Java是按值传递的。数组是静态类型,您无法调整它们的大小。为什么希望它更新?
Scanner Scan = new Scanner(System.in);
int size = Scan.nextInt();
int[] myarr = new int[size];
Scanner Scan = new Scanner(System.in);
int size= Scan.nextInt();
int[] myarr = new int[size];