数组的简单知识

本文深入探讨Java中数组类型的定义、初始化、访问以及高级用法,包括一维和二维数组,通过具体实例演示如何在Java中高效地操作数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指明该变量是一个数组类型变量。例如:

int intArray[];

声明了一个整型数组,数组中的每个元素为整型数据。与C、C++不同,Java在数组的定义中并不为数组元素分配内存,因此[]中不用指出数组中元素个数,即数组长度,而且对于如上定义的一个数组是不能访问它的任何元素的。我们必须为它分配内存空间,这时要用到运算符new,其格式如下:

arrayName=new type[arraySize];

其中,arraySize指明数组的长度。如:

intArray=new int[3];
一维数组的初始化
对数组元素可以按照上述的例子进行赋值。也可以在定义数组的同时进行初始化。
例如:int a[]={1,2,3,4,5};
一维数组程序举例:

例5.2Fibonacci数列

Fibonacci数列的定义为:

F1=F2=1,Fn=Fn-1+Fn-2(n>=3)

public classFibonacci{
public static void main(String args[]){
int i;
int f[]=new int[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-1]+f[i-2];
for(i=1;i<=10;i++)
System.out.println("F["+i+"]="+f[i-1]);
}
}

运行结果为:

C:\>java Fibonacci

F[1]=1
F[2]=1
F[3]=2
F[4]=3
F[5]=5
F[6]=8
F[7]=13
F[8]=21
F[9]=34
F[10]=55

例5.3冒泡法排序(从小到大)

冒泡法排序对相邻的两个元素进行比较,并把小的元素交到前面。

public class BubbleSort{
public static void main(String args[]){
int i,j;
int intArray[]={30,1,-9,70,25};
int l=intArray.length;
for(i=0;i<l-1;i++)
for(j=i+1;j<l;j++)
if(intArray[i]>intArray[j]){
int t=intArray[i];
intArray[i]=intArray[j];
intArray[j]=t;
}
for(i=0;i<l;i++)
System.out.println(intArray[i]+"");
}
}
二维数组的定义方式为:

type arrayName[][];

例如:

int intArray[][];

与一维数组一样,这时对数组元素也没有分配内存空间,同要使用运算符new来分配内存,然后才可以访问每个元素。

对高维数组来说,分配内存空间有下面几种方法:

1直接为每一维分配空间,如:

int a[][]=new int[2][3];

2从最高维开始,分别为每一维分配空间,如:

int a[][]=new int[2][];
a[0]=new int[3];
a[1]=new int[3];
1直接对每个元素进行赋值。

2在定义数组的同时进行初始化。

如:int a[][]={{2,3},{1,5},{3,4}};
例5.4矩阵相乘

两个矩阵Am×n、Bn×l相乘得到Cm×l,每个元素Cij=?aik*bk (i=1..m,n=1..n)

public class MatrixMultiply{
public static void main(String args[]){
int i,j,k;
int a[][]=new int[2][3];
int b[][]={{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};
int c[][]=new int[2][4];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
a[i][j]=(i+1)*(j+2);
for(i=0;i<2;i++){
for(j=0;j<4;j++){
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
System.out.println("\n***MatrixA***");
for(i=0;i<2;i++){
for(j=0;j<3;j++)
System.out.print(a[i][j]+"");
System.out.println();
}
System.out.println("\n***MatrixB***");
for(i=0;i<3;i++){
for(j=0;j<4;j++)
System.out.print(b[i][j]+"");
System.out.println();
}
System.out.println("\n***MatrixC***");
for(i=0;i<2;i++){
for(j=0;j<4;j++)
System.out.print(c[i][j]+"");
System.out.println();
}
}
}





//定义二维数组写法1  

class numthree
{
public static void main(String[] args)
{
float[][]numthree;            //定义一个float类型的2维数组
numthree=newfloat[5][5];      //为它分配5行5列的空间大小
numthree[0][0]=1.1f;           //通过下标索引去访问    1行1列=1.1
numthree[1][0]=1.2f;                                 // 2行1列=1.2
numthree[2][0]=1.3f;                                 // 3行1列=1.3
numthree[3][0]=1.4f;                                 // 4行1列=1.4
numthree[4][0]=1.5f;                                 // 5行1列=1.5
System.out.println(numthree[0][0]); //打印换行输出喽
System.out.println(numthree[1][0]);
System.out.println(numthree[2][0]);
System.out.println(numthree[3][0]);
System.out.println(numthree[4][0]);
}
}

//定义二维数组写法2  定义的同时分配空间大小
class numfour
{
public static void main(String[] args)
{
   short[][] numfour=newshort[5][8]; //定义一个short类型的数组同时为它分配5行8列的空间大小
   numfour[0][7]=10;
   numfour[1][6]=20;
   numfour[2][5]=30;
   numfour[3][4]=40;
   numfour[4][3]=50;
  System.out.println(numfour[0][7]);
  System.out.println(numfour[1][6]);
  System.out.println(numfour[2][5]);
  System.out.println(numfour[3][4]);
  System.out.println(numfour[4][3]);
}
}


//定义二维数组写法3       不规则数组
class numfive
{
public static void main(String[] args)
{
long[][] numfive=newlong[5][];    //定义一个long类型的不规则数组
numfive[0]=newlong[5];            //为第1行分配5列
numfive[1]=newlong[6];            //为第2行分配6列
numfive[2]=newlong[7];            //为第3行分配7列
numfive[3]=newlong[8];            //为第4行分配8列
numfive[4]=newlong[9];            //为第5行分配9列

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

System.out.println(numfive[0][4]);//打印换行输出喽
System.out.println(numfive[1][5]);
System.out.println(numfive[2][6]);
System.out.println(numfive[3][7]);
System.out.println(numfive[4][8]);
System.out.println(numfive[4][7]); //打印输出一个没有定义数组元素的数组java会自动将他初始化值为0
}
}


//定义2维数组写法4   定义的同时赋初始值
class numsix
{
public static void main(String[] args)
{
double[][]numsix={{1.111D,2.222D,3.333D},{4.444D,5.555D,6.666D}};//定义double型的数组分配3行3列的空间同时赋值
System.out.println(numsix[0][0]); //打印换行输出1行1列=1.111
System.out.println(numsix[1][1]); //打印换行输出2行2列=5.555
}
}


//定义2维数组写法5  定义不规则的2维数组同时赋初始值
class numseven
{
public static void main(String[] args)
{
int[][] numseven=new int[][]{{10,20,30},{40,50},{60}};//没什么好说的如果你在看不懂 那就别学了!
System.out.println(numseven[0][2]);
System.out.println(numseven[1][1]);
System.out.println(numseven[0][0]);
}
}

//定义2维数组写法6 定义不规则的2维数组同时赋初始值;
class numeight
{
public static void main(String[] args)
{
int[][]numeight={{100,200,300,400},{500,600,700,800},{900,1000,1100,1200,1300}};
System.out.println(numeight[0][2]);
System.out.println(numeight[1][2]);
System.out.println(numeight[2][1]);
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值