当前位置:首页 > 内存 > 正文

java二维数组动态分配内存

  • 内存
  • 2024-06-02 05:00:43
  • 7551

一、如何给二维数组动态分配内存空间(转)具体方法是这样的:intr,c;//r代表行,c代表列cinrc;cout


二、java关于二维数组分配空间1.你的答案不正确。答案应为[3][],(仅填写一维)
2.两种分配方式其实是一样的。它们都是先开辟内存空间,然后赋值。。有两点不同。一是何时赋值。第一种方法,程序员不赋值,而是系统默认赋值(默认值根据数据类型不同,赋值的值也不同。一般整数赋值为0,浮点数赋值为0)点赋值为0.0),二是边分配边赋值。第二个区别是数组维度的设置:ints[][]=newint[3][4];只要你这样写,你的数组的维数就确定了。它是一个3行4列的数组。(请注意,每3行有4个元素)。如果这样写:ints[][]={{1,2},{3,4,5},{6,7,8,9}};那么它就是一个3行X列的数组,X代表2,3,4,也就是说第1行有2个元素,第2行有3个,第3行有4个。它不是常规的3行4列。
至于这两个方法的输出结果,你的第一个分析是正确的。第二种形式,根据我上面说的,你应该能够理解下面四个输出:
n();//输出3
n(s[0].length);//输出2
n(s[1].length);//输出3
n(s[2].length);//输出4
我们来分析一下下面三行代码:
n(s[0][2]);//这句话报错,溢出
这句话的意思是输出第0行的第3个元素(是的,是3个元素,因为数组是从第0个元素开始的,所以2代表第3个元素),由于第0行只有2个元素,所以你的句子是错误的。
n(s[1][2]);//这句话是5
这句话打印出第2行的第三个元素,确实是5
n(s[1][3]);]);//这句话也报错,溢出
这句话打印出第二行4元素,然会溢出。


三、java定义二维数组的几种写法

下面介绍

//如何定义二维数组1

同时定义和分配空间大小

classnumfour

{

publicstaticvoidmain(String[]args)

{

short[][]numfour=newshort[5][8];//定义短类型表,分配5行8列空间

numfour[0][7]=10;

numfour[1][6]=20;

numfour[2][5]=30;

numfour[3][4]=40;

numfour[4][3]=50;

n(numfour[0][7]);

n(numfour[1][6]);

n(numfour[2][5]);

n(numfour[3][4]);

<系统。n(numfour[4][3]);

}

}

//定义两个Array的写法-维2数组不规则<​​/p>

classnumFive

{

publicstaticvoidmain(String[]args)

{

long[][]numFive=纽隆[5][];//定义一个long类型的不规则数组

numFive[0]=newlong[5];//将5列分配给第1行

numFive[1]=newlong[6];//在第2行分配6列

NumFive[2]=newlong[7];//在第3行分配7列

numFive[3]=newlong[8];//在第4行分配8列

NumFive[4]=newlong[9];第5行

numFive[0][4]=10000000000L;//1行5列=10000000000

numFive[1][5]=20000000000L//2行6列=20000000000

numFive[2][6]=30000000000L;//3行7列=30000000000

numFive[3][7]=40000000000L//4;行和8列=40000000000

numFive[4][8]=50000000000L;//5行9列=50000000000

n(numFive[0][4]);//打印新行输出

e[1][5]);

n(numFive[2][6]);

n(numFive[3][7]);

n(numFive[4][8]);

n(numFive[4][7]);//打印没有定义数组元素的数组Java会自动将其初始化为0

//设置数组写入方法为2维3设置时赋初值

classnumsix

{

publicstaticvoidmain(String[]args)

{

double[][]numsix={{1.111D,2.222D,3.333D},{4.444D,5.555D,6.666D}};//设置double类型数组分配同时分配3行3列的空间

n(numsix[0][0]);//打印新行输出1行1列=1.111

n(numsix[1][1]);//打印换行输出2行2列=5.555

//定义二维数组的写入方法4定义一个不规则二维数组并赋初始值

classnumseven

{

publicstaticvoidmain(String[]args)

{

int[][]numseven=newint[][]{{10,20,30},{40,50},{60}};//不懂就没什么好说的,就别学了!

n(numseven[0][2]);

n(numseven[1][1]);

n(numseven[0][0]);

}

}

//设置数组写入方式为2维5定义不规则性二维数组同时接收一个初始值;

classnumeight

publicstaticvoidmain(String[]args)

{

int[][]numeight={{100,200,300,400},{500,600,700,800},{900,1000,1100,1200,1300}};

系统输出.println(numeight[0][2]);

n(numeight[1][2]);

n(numeight[2][1]);

}