一维数组
数组定义:数组就是一个相同数据类型的值按照一定的顺序排放的集
数组是数据类型中的引用类型;
数据类型包括数据类型
基本数据类型
4个整形 byte/short/int/long
2个浮点 float/double
1个字符 char
1个布尔 boolean
引用类型
接口
类
数组
…
String
数组的定义
定义数组非常简单
int[] typeName;
int typeName[];//早期是这么写的,但是可读性不好,所以不推荐
直接在数据类型后面加个[]
byte byte[]
short short[]
char char[]
int int[]
long long[]
float float[]
double double[]
boolean boolean[]
注意:异常:1)空指针异常 NullPointerException
一、数组默认值
整形的默认值是0
Char默认值是 ‘\u0000’
浮点的默认值是0.0
boolean默认值是false
String默认值是null
Object默认值是null
二、数组可以动态声明和静态声明初始化
1. 动态声明初始化
**int[] array=new int[8] **//[]这里面只能放int类型的数值,这是有8个元素的int类型的数组
2.静态声明初始化
int[] array=new int[] {3,4,5,8,9,9} 声明数组的同时并初始化,静态初始化
注意:此数组已经固定数组的长度了,即下标是从0-5,长度为6
//如何获取数组里面的值?数组是有下标,或者叫角标,或者叫索引,索引是从0开始的,根据索引访问数组的元素
int value = arr3[0];
System.out.println("arr3[0]:" + value);
System.out.println("arr3[1]:" + arr3[1]);//数组的第二个元素
System.out.println("arr3[2]:" + arr3[2]);//数组的第三个元素
System.out.println("arr3[3]:" + arr3[3]);//数组的第四个元素
三、数组的长度访问方式
语法: 数组名[数组名.length]
int[] arr = {3,5,7};
//数组的长度 是数组的属性
System.out.println("数组的长度为:" + arr.length);
注意:数组是空,访问空数组的元素的时候导致空指针异常
四、数组的复制(拷贝)
1.浅拷贝:目标对象=源对象 =>只存储源对象的数据地址,源对象内容改变影响目标对象内容。
2.深拷贝:目标对象=源对象 =>只存储源对象的数据内容,源对象内容改变“不会”影响目标对象内容。区别:一个“会”,一个“不会”
浅拷贝具体代码范例:
public static void main(String[] args) {
//定义一个数组
int[] arr = {3,5,8};
//复制给一个新数组 这种拷贝是浅拷贝
int[] arr2 = arr;
//在修改数组 的元素之前,先打印
System.out.println("arr[2]:" + arr[2]);//第一个数组的第三个元素
System.out.println("arr2[2]:" + arr2[2]);//第二个数组的第三个元素
System.out.println("arr数组地址:" + arr);
System.out.println("arr2数组地址:" + arr2);
//修改第二个数组的第三个元素
arr2[2] = 30;
System.out.println("arr[2]:" + arr[2]);//第一个数组的第三个元素
System.out.println("arr2[2]:" + arr2[2]);//第二个数组的第三个元素
}
运行结果:
arr[2]:8
arr2[2]:8
arr数组地址:[I@15db9742
arr2数组地址:[I@15db9742
arr[2]:30
arr2[2]:30
深拷贝具体代码范例:
二维数组
二维数组初始化和一维数组是一样的
具体代码如下
静态初始化:
//二维数组
int[][] arr = new int[][]{{1,2,3},{4,5},{6,7,8,9}};
//定义 如何解析这行代码? arr2这个数组有3个一维数组,每个数组有4个元素
int[][] arr2 = new int[3][4];//
arr2[0][3] = 5;//把5赋值给arr2第一个数组的第4个元素
二维数组和一维数组可以这样赋值,例:
//定义一个二维数组并静态初始化
int[][] arr = new int[][]{{1,2,3},{4,5},{6,7,8,9}};
//定义一个新的数组并把二维数组arr[0]赋值给它
int[] arr1 = arr[0];//arr[0]是二维数组中的{1,2,3}
System.out.println("arr1[0]:" + arr1[0]);//一维数组arr1的长度就为3,元素值是1,2,3
输出结果为:
arr1[0]:1 //一维数组arr1的长度就为3,元素值是1,2,3