一维数组
1.定义(类型名[] 数组名 = new 类型名[数组长度])
public class Hee {
public static void main(String[] args){
int[] arr = new int[5];//这里定义了一个长度为5的一维数组
}
}
2.调用(数组名[索引])
import java.util.Scanner;
public class Hee {
public static void main(String[] args){
int[] arr = new int[5];//定义长度为5的一维数组
int sum=0;//定义了一个sum变量,赋值
for (int i=0;i<5;i++){//遍历整个一维数组
arr[i]=i;//将下标的值逐个赋给数组(arr[0]=0...)
sum+=arr[i];//求整个数组的和
}
System.out.println(sum);//输出整个数组的下标和
}
}
3.理解
- 整个数组存储数据的类型必须一致,像我刚刚举的那个例子,定义整个数组为int型,整个数组中就只能全部存储int型数据
- 数组名.length:可获取整个数组的长度,是数组的一个属性,譬如上文定义了一个长度为5的arr数组,arr.length就等于5
- 数组的下标范围:0~数组长度-1,上文用例的下标为0,1,2,3,4
- 数组未赋值的话,默认值为0
- 一维数组的内存情况这里可以大概的讲解一下:
JVM将自己的内存分为了寄存器,本地方法栈,方法和数据共享,方法栈和堆。
arr引用类型,保存的数据实质是内存中的地址。
我们定义的方法main存储在方法栈中,在方法栈中,我们new了一个长度为5的一维数组arr,我们数组中的数据在堆中存储,这个 arr指向堆中我们存储数据的首地址。
二维数组
1,定义
类型名[][] 数组名 = new 类型名[数组长度][数组长度]
public class Hee {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int[] arr = new int[5][6];//定义了一个包含5个长度为6的一维数组的二维数组
}
}
用这种方法定义二维数组只能够定义包含n个长度一致的一维数组的二维数组,若想要定义n个长度不一致的二维数组,可以采用直接赋值的方式(int[][] arr={{1},{2,3},{4,5,6}};)。此外还有一种比较麻烦的方法,也不是特别常用,这里就不做介绍了。
2,调用(数组名[索引][索引])
public class Hee {
public static void main(String[] args){
int[][] arr ={{1},{2,3}};
System.out.print(arr[0][0]);//输出arr[0][0]处的值
//输出结果为1
}
}
若需要遍历二维数组,可利用两层for循环和数组的length属性来进行实现
public class Hee {
public static void main(String[] args){
//Scanner sc = new Scanner(System.in);
int[][] arr ={{1},{2,3},{4,5,6,7}};
for (int i=0;i<3;i++){
for (int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]);//遍历输出整个二维数组
System.out.print(" ");//输出空格
}
System.out.println();//换行
}
}
}
//这个是输出结果
1
2 3
4 5 6 7
3.理解
- 一个二维数组,相当于包含了n个一维数组,其中每个一维数组的长度可以相同或不同
- 二维数组中存储的数据类型也必须一致
- 二维数组的下标和一维数组的下标范围一致,包含的n个一维数组由0~n编号。
- 二维数组的内存理解:拿一个实例来讲吧,arr[n]m,arr可以理解为指向arr[n]的首地址,arr[n]分别指向a[n][m]的首地址,具体的还是来看图示吧。(这个图不是本人做的~)
这一次要讲的内容就差不多了,文章中有什么不足或错误的话情读者们批评指正哦~