数组
数组的定义
相同数据类型数据的有序集合
若干元素安宅先后次序排列组合而成
每个数据成为一个数组匀速可以通过一个下标来访问他们
数组声明创建
首先必须声明数组变量才能在程序中是使用数组。
dataType[ ] arrayRefVar;
java使用new操作符来创建数组。
dataType[ ] arrayRefVar=new dataType[arraySize ];
package Array;
public class Demon1 {
public static void main(String[] args) {
int[] nums;// 1.声明了一个数组 未分配空间
//变量类型 变量名
nums = new int[8];//2.这里可以存放10个int类型的数 //长度
nums[0]= 1;
nums[1]= 18;
nums[2]= 51;
nums[3]= 31;
nums[4]= 14;
nums[5]= 15;
nums[6]= 41;
nums[7]= 1;
//3.给数组里的空间赋值
System.out.println(nums[0]);
int sum = 0 ;
for (int i = 0; i < nums.length; i++) {
//遍历数组 //数组长度↑
sum= sum+ nums[i];
}System.out.println(sum);
}
}
内存分析
在声明时
int[] nums;
栈中压入一块空间为nums,接着
nums = new int[8];
在堆中开辟一块nums空间,其中有8个空位
nums[0]= 1;
nums[1]= 18;
nums[2]= 51;
nums[3]= 31;
nums[4]= 14;
nums[5]= 15;
nums[6]= 41;
nums[7]= 1;
然后通过赋值,堆中的nums空间里的8个空间都有数值。
初始化状态
package Array;
public class Demom2 {
public static void main(String[] args) {
int[] a = {12,8,9,3,12,54,2};//静态初始化
int[] b = new int[10];//动态初始化 只分配了空间其中的值都是0
b[1]= 10; //包含了默认初始化,new之后所有空间均被初始化为0
}
}
知识点在程序注释中。
数组的四个基本特点
长度确定,数组一旦被创建,他的大小就是不可改变的
元素必须相同类型
元素可以时任何数据类型,包括基本类型和引用类型
数组变量属于引用类型,数组本身就是对象,元素相当于对象的成员变量,java中对象是在堆中的(数组对象本身是在堆中的)
数组边界
小标的合法区间为 [0~长度-1],越界会报错。
数组的使用
package Array; //数组的简单使用方法,以下三种
public class Demon3 {
public static void main(String[] args) {
int[] Array = {12,2,3,4,5,6,};
for (int i = 0; i < Array.length; i++) {
System.out.println(Array[i]);//打印数组中的所有元素
}
int sum = 0 ;
for (int i = 0; i <Array.length; i++){
sum += Array[i];
} System.out.println(sum);//数组中数字的和
int max = 0;
for (int i = 0; i < Array.length; i++) {
if(max < Array[i]){
max= Array[i];
}
}System.out.println("最大值为:"+ max); //数组中的最大值
}
}
增强型for循环
输入 数组名.for 回车 ,省去了下标,适合打印输出,但不适合操作里面的元素。
package Array;
public class Demon4 {
public static void main(String[] args) {
int[] array = {12,2,3,4,5,6,};
for (int i : array) { //增强型for循环
System.out.println(i);
}
}
}
数组的其他使用例子
package Array;
public class Demon5 {
public static void main(String[] args) {
int[] array = {1,2,3,5,6,6}; //定义一个数组
printArray(array);//打印数组array
reverse(array);//反转数组array
int[ ] reverse = reverse(array);//定义数组reverse为反转后数组
printArray(reverse);//输出reverse数组
}
//无返回值 方法名 输入参数
public static void printArray(int[] array) { //方法:打印数组的所有元素
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
public static int[] reverse(int[] array){ //方法:反转数组
int[] result= new int[array.length]; //定义数组result,长度于输入数组相同
for (int i = 0,j = array.length - 1; i < array.length; i++,j--) {
result[j]=array[i]; //头尾交换
}return result; //返回值为result数组,int[]
}
}
多维数组
多维是数组可以看作数组的数组,即数组的元素为数组。多维数组就是数组的嵌套。
二维数组的定义
int a[] [] = new int [3] [5];
以上二位数组a可以看成一个三行五列的数组。
package Array;
public class Demon6 {
public static void main(String[] args) {
int[][] a = new int[3][5]; //多维数组
int[][] b = {{1,2},{3,4},{45,5} }; //多维数组
}
}
如何遍历二维数组中的元素
int[][] b = {{1,2},{3,4},{45,5} }; //二维数组
for (int i = 0; i < b.length; i++) { //遍历二维数组中的元素
for(int j = 0; j< b[i].length;j++){
System.out.println(b[i][j]);
}
}