数组的定义与使用
1.数组的基本概念
1.1什么是数组
数组是一组相同类型元素的集合,在内存中连续存放。
1.2数组的创建及其初始化
1.2.1数组的创建
T[] 数组名 = new T[N];
T:表示数组中存放元素的类型
T[]:表示数组的类型
N:表示数组的长度
1.2.2数组的初始化
数组的初始化分为动态初始化和静态初始化
-
动态初始化:
创建数组时直接指定数组的元素个数
int[] arr = new int[10]; -
静态初始化:
创建数组时不指定数组元素个数,将数组具体数据内容进行直接指定
int[] arr1 = new int[]{1,2,3,4,5,6}; int[] arr2 = {1,2,3,4,5,6}; //省略格式不可以拆分 下面编译失败 int[] arr3 ; arr3 = {1,2,3};- 静态初始化虽然没有指定数组长度,但编译器会根据{}中元素个数确定数组长度
- 静态初始化可以简写,省略后面的new int[],但是编译器编译代码时会进行还原
- 如果没有对数组进行初始化,数组元素为默认值,默认值为基类类型对应的默认值
1.3数组的使用
1.3.1数组元素访问
数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素
1.3.2遍历数组
所谓遍历是指将数组中的所有元素都访问一遍, 访问是指对数组中的元素进行某种操作,比如:打印
int[] arr = new int[]{1,2,3,4,5,6};
for(int i = 0; i < arr.length; i++) {
System.out.println(array[i]);
}
//foreach
for(int x : arr) {
System.out.println(x);
}
2.数组是引用类型
2.1基本类型变量与引用类型变量的区别
基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值
引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址,null 在 Java 中表示 "空引用" , 也就是一个不指向对象的引用
3.数组的应用
3.1保存数据
public static void main(String[] args) {
int[] array = {1, 2, 3};
for(int i = 0; i < array.length; ++i){
System.out.println(array[i] + " ");
}
}
3.2作为函数参数
3.2.1参数传基本类型
3.2.2参数传数组类型
public static void main(String[] args) {
int[] arr = {1, 2, 3};
func(arr);
System.out.println("arr[0] = " + arr[0]);
}
public static void func(int[] a) {
a[0] = 10;
System.out.println("a[0] = " + a[0]);
}
3.3作为函数返回值
//获取斐波那契数列的前N项
public class TestArray {
public static int[] fib(int n){
if(n <= 0){
return null;
}
int[] array = new int[n];
array[0] = array[1] = 1;
for(int i = 2; i < n; ++i){
array[i] = array[i-1] + array[i-2];
}
return array;
}
public static void main(String[] args) {
int[] array = fib(10);
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
4.二维数组
二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组
基本语法:
数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };
二维数组的用法和一维数组并没有明显差别, 因此不再赘述,使用频率较低