Java 数组

数组

数组,是由数目固定的、相同类型的元素组成的有序集合,每个元素相当于一个变量。
在Java中,数组是最简单的复合数据类型
数组元素可以是任意类型,可以是简单类型,也可以是引用类型。
访问数组中的某个元素,可以通过数组名加下标的形式,例如:a[4]。
数组下标的个数就是数组的维数: 有一个下标就是一维数组,有两个下标就是二维数组,依次类推。

使用数组四步

1、声明数组 int[ ] a;
2、分配空间 a = new int[5];
3、赋值 a [0] = 3;
4、处理数据 a [0] = a[0] * 10;

1.声明数组
声明数组时不规定数组长度

2.分配空间
可以声明数组的同时分配空间:数据类型[ ] 数组名 = new 数据类型[大小] ;

3.赋值
方法一:边声明边赋值 (静态初始化)
int[ ] score = {89, 79, 76};
int[ ] score = new int[ ]{89, 79, 76};(此处不能指明数组长度

注意:静态初始化必须在声明数组时进行,而不能写成如下形式:
int a [ ]; a[ ]={89, 79, 76};
或 int a [ ] = new int [3]; a={89, 79, 76};

方法二:动态地从键盘录入信息并赋值

Scanner input = new Scanner(System.in); 
for(int i = 0; i < 30; i ++) { 
	score[i] = input.nextInt(); 
}

4.处理数据

for each访问数组与数组作为函数参数和返回值

public class TestJavaArray { 
	public static void main(String[] args){ 
		int[] test= {1,2,4,5,7};
		
		for (int i : test) {   
			System.out.print(i+" ");   
		} 
		
		System.out.println("\n"); 
		test = TestJavaArray.reverse(test); 
		
		for (int i : test) {  
			System.out.print(i+" ");   
		} 
	} 
	
	public static int[] reverse(int[] arr){ 
		int[] result = new int[arr.length]; 
		
		for (int i = 0,j=result.length-1; i < arr.length; i++,j--) { 
			result[j] = arr[i]; 
		} 
		
		return result; 
	} 
}

数组边界

数组类中有唯一的成员变量:length,用来表示数组的长度,即数组元素的个数。
在Java中,数组的下标从0开始,到length-1结束,即数组a的第 一个元素是a[0],最后一个元素是a[length-1]。
与C、C++中不同,Java对数组元素要进行越界检查。
使用new创建数组对象时,自动给length赋值,数组一旦创建完毕,length就确定下来,除非重新使用new创建新的数组对象。
程序在运行过程中会对length进行检查,若发生越界访问,则会抛出一个异常

二维数组

在JAVA中,数组的元素可以是任何已存在的类型(包括数组)。
一个一维数组又可以作为另一个一维数组的元素。
在JAVA中,元素是一维数组的数组被称为二维数组。
在这里插入图片描述

二维数组的创建

二维数组的创建格式:
类型名[][] 数组名=new 类型名[][];
例如:int[][] a=new int[3][4];
其意义是:a引用了一个其元素类型为int[4]的数组, a的长度是3。
或者说,数组a有3个元素,每个元素都是一个长度为4的一维整型数组。

二维数组的初始化

语法格式: 类型名[][] 数组名={{初值n1, …初值nm},{…},…};
例如, int[][] a={{1,2,3},{3,4,5},{5,6,7},{7,8,9}};
需要注意的是,下面几种表示法的语法意义:
a[i]是数组a中第i个一维数组的数组名; 例如: a[0]是数组a中第1个一维数组的数组名;
而 a[i][j]是数组a中第i个一维数组中的第j个元素的变量名; 例如: a[0][2]是数组a中第1个一维数组中的第3个元素的变量名;

二维数组每一维的大小允许不同

Java语言中,由于把二维数组看作是数组的数组,并且二维数组每一维的大小可以不同。
int intArray[ ][ ] = { {1,2}, {2,3}, {3,4,5} };
int a[ ][ ] = new int[2][ ];
a[0] = new int[3];
a[1] = new int[5];

eg:矩阵的简单处理

class   Matrax{ 
	public  static  void   main(String[]  args){ //按矩阵形式输出数组元素、计算正对角线元素之和 
		int[][]  a={{1,2,3},{4,5,6},{7,8,9,10} ; 
		int  i, j, diagonal_sum=0; 
		
		for( i=0;i<a.length; i++{ //按矩阵形式输出数组元素  
			for( j=0;j<a[i].length; j++)
				System.out.print( a[i][j]+”\t” ); 
			System.out.println(); //换行 
		} 
		
		for( i=0;i<a.length; i++//计算正对角线元素之和 
			for( j=0;j<a[i].length; j++if (i==j) diagonal_sum+=a[i][j]; 
		System.out.print(“正对角线元素之和是:+diagonal_sum ); 
	} 
}

注:数组变量是引用变量
对引用数据类型,赋值是把原对象的引用传递给另一个引用,两个引用指向同一块内存空间(浅复制)
可以通过数组变量拷贝或者clone方法实现深复制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值