日期:2014-05-20  浏览次数:20624 次

关于java不能动态决定数组大小的疑问
import java.util.Scanner;


public class AssignTaskDemo {


public static void main(String[] args) {
int m;
int n;
int[][] cost;
Scanner input =new Scanner(System.in);
m=input.nextInt();
n=input.nextInt();
cost=new int[m][n];
System.out.print(cost[m-1][n-1]);

}

}

mn取决于外部事件,这样子不就算是动态决定数组大小了吗?请大牛指点迷津,不胜感激!

------解决方案--------------------
嗯,主要看个人怎么理解。

你认为这样就是动态的决定了数组的大小。

但是,这样等数组创建完毕之后,数组的大小是不能改变的。

有的人认为,数组创建之后,还可以改变其大小,才算动态决定了数组的大小。

语义不一样。

不要纠结于这样的问题。

ps:记得结贴。
------解决方案--------------------
楼主你在new这个数组的时候,已经指定了m,n的大小,而这个数组对象创建后,长度就不可改变了。当然,在创建数组分配内存之前能接受维参数变量,比C要方便一些,但如果事先都不知道数组有多大, 用的时候只管往里放东西就行,Java中也是不行的。动态数组指的是一种在使用中可以任意伸缩数组长度的数组对象,例如ArrayList。
------解决方案--------------------
其实我个人觉得动态数组是不存在的,从构建对象开始说来的话,jvm在给创建对象之前先会确定对象的大小,这样才好给对象分配空间,当然数组也是一样,jvm会根据你需要创建的数组的大小从而给你分配一定大小的内存空间,但是这部分内存空间就已经固定了,是不会改变的了。