数组
一:定义
- 相同类型数据的有序集合
- 数组描述的是相同类型的若干数据,按照一定的先后顺序排列组合而成
- 每一个数据叫做数组元素,并且可以通过下标访问
-
数组的声明创建
- int [] sum;(首选,建议)
- int sum[];
- new操作符定义数组:sum=new int(类型)+[数值];
-
元素通过索引访问的,注意角标从0开始
-
数组长度array(创建的数组名).length
二:特点
- 一旦被创建,长度不可更改
- 元素必须是相同类型
- 元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属于引用类型,数组可以看成是对象,数组中每个元素相当于是该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论是保存原始类型还是其他对象类型,数组对象本身是在堆之中
三:内存分析
-
三种初始化
-
静态初始化:创建+赋值
int[] sum={1,3,2,6,4,5};
-
动态初始化:先创建,再赋值
int[] sum1=new int[3]; sum1[0]=1; sum1[1]=2; sum1[2]=3;
-
默认初始化:按照实例变量隐藏初始化值
-
四:数组边界
- 下标合法区间(0,length-1):下标以0开头,所以区间要减一
- 超出会提示:ArrayIndexOutOfBoundsException(下标越界)
五:数组的使用
-
For-each循环
-
数组作为方法入参
-
数组作为返回值
-
综合示例代码:
public class Array04 { public static void main(String[] args) { int[] a={1,2,3,4,5}; //增强 for (int a1 : a) { System.out.println(a1); } System.out.println(); System.out.println("==============分割线================"); //打印数组 printArray(a); System.out.println(); System.out.println("==============分割线================"); //翻转数组 int[] reverse = reverse(a); printArray(reverse); } //创建一个打印数组的方法 public static void printArray(int[] a){ for (int i = 0; i < a.length; i++) { System.out.print(" "+a[i]); } } //创建一个翻转数组的方法 public static int[] reverse(int[] a){ int[] b=new int[a.length]; for (int i = 0,j=b.length-1; i <a.length ; i++,j--) { b[j]=a[i]; } return b; } }
-
实现:
1 2 3 4 5 ==============分割线================ 1 2 3 4 5 ==============分割线================ 5 4 3 2 1 Process finished with exit code 0
-
六:多维数组
-
数组的数组,二维数组为例,它是一个特殊的一维数组,其中每一个元素都是一维数组
-
二维数组:
int a[][]=new int[2][2];
-
二维数组a(例子)可以看作是一个二行二列的数组
-
应用实例代码:
public class Array05 { public static void main(String[] args) { int[][] a={{1,2},{2,3},{3,4}}; printArray(a[0]); System.out.println(); System.out.println(" "+a[0][1]); System.out.println("=====================分割线======================="); //输出二维数组中的每一个元素 for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { System.out.print(a[i][j]+" "); } } } //创建一个打印数组的方法 public static void printArray(int[] a){ for (int i = 0; i < a.length; i++) { System.out.print(" "+a[i]); } } }
-
实现
1 2 2 =====================分割线======================= 1 2 2 3 3 4
-