java数组介绍与运用
数组
-
基本概念及作用
数组是一种线性数据结构
数组是相同数据类型元素的集合
数组本身是引用数据类型,即对象.但是数组可以存储基本数据类型,也可以存储引用数据类型.
-
声明格式
数组的声明的两种方式:
-
数据类型[] 数组名字
例如:int [] a;
-
数据类型 数组的名字 []
例如: int a [];
注意:在Java语言中声明方法没有任何区别,但是建议大家用第一种,避免混淆a的数据类型.
-
-
数组的创建
java中数组在创建时,必须要为其定义长度,长度定义后就不能修改
数组在内存中是一个连续的空间,为其中每个存储空间初始化值- int [] ary0 = new int[10];//动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
- int [] ary1 = new int[]{1,2,3,4,5};//静态创建数组,在创建的时候,即为每个元素赋初值.
- int [] ary2 = {1,2,3,4,5};//与前一种方式相同,仅仅只是语法相对简略
数组各个数据类型的默认值:
int [] a = new int[10]; //默认0
float [] f = new float[10];//默认0.0
String [] f = new String[10];//默认nullchar [] f = new char[10];//默认空格
System.out.println(a);//[[email protected] 对象的hashCode值 public native int hashCode();
//System.out.println(Arrays.toString(f));//将对象以字符串的形式输出数组中如果存储的是基本类型,存储的是具体的值
如果存储的是引用类(类类型),会存储对象的引用
数组的长度:length属性
int [] b1 new int []{1,2,3,4,5,6,7};
System.out.println(b1.length);
-
数组访问
数组元素的访问:
数组名字[索引] 例如: a[0],a[1];
注意:
- 数组的索引从0开始
- 索引的数据类型是整型
- 索引最大值和数组长度始终差1
注意使用合法的索引访问,否则会程序终止,抛出异常
int [] a = new int[5];
System.out.println(Arrays.toString(a));
byte b = 10;
a[0] = b;
a[1] = 5;
a[2] = 1;
a[3] = 2;
a[4] = 3;
System.out.println(a.length);
/* a[5] = 3;
运行时才会出现的异常
数组越界
* Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 5
at com.ff.java.array.ArrayDemo2.main(ArrayDemo2.java:17) 位置 -
数组的迭代
-
for循环
int [] b1 = new int []{1,2,3,4,5,6,7};
数组的迭代
for(int i = 0; i<b1.length;i++){
System.out.println(b1[i]);
}
-
增强for循环(foreach)
int [] b1 = new int []{1,2,3,4,5,6,7};
for(数组元素类型 临时变量名字 : 数组的名字){
System.out.println(临时变量名字);// 每循环一次从数组中取出一个元素赋给前面声明的变量,知道数组中所有的元素遍历完,循环终止
}
即:
for(int x : b1){
System.out.println(x);
}
-
-
二维数组
-
概念
数组的数字–二维数组的每个元素是一个一维数组.
例如:int [][]a = {{1,2,3},{1,2,3},{1,2,3}};
-
声明
int [] [] a;
int a [] [];
注意:建议用第一种,不容易混淆a的数据类型.
-
创建
int [] [] a = new int [] [] {{1,2,3},{1,2,3},{1,2,3}};
int [] [] b = {{1,2,3},{1,2,3},{1,2,3}};
int [] [] c = new int [3] [5];
int[] [] arr = new int [3] [5];//定义了一个整型的二维数组,这个二维数组有3个一维数组,每一个一维数组包含5个元素.
-
二维数组的迭代
int [][] b1 = new int [][]{{1,2},{3,4}};
for(int i =0;i<b1.length;i++){//每次负责从二维数组中取出一个一维数组
for(int j =0;j<b1[i].length;j++){//负责对取出的一维数组进行遍历
System.out.print(b1[i][j]);
}
System.out.println();
}
-