数组的定义:
数组是指一组数据的集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。
数组的基本特点:
1. 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
2. 其元素必须是相同类型,不允许出现混合类型。元素的类型可以是java 支持的任意类型
3. 数组类型可以是任何数据类型,包括基本类型和引用类型。
4. 数组的元素在堆内存中被分配空间,并且是连续分配的
5. 使用new 关键字对数组进行 内存的分配。每个元素都会被jvm 赋予默认值。
6. 数组的元素都是有序号的,序号从0开始,0序的。称作数组的下标、索引、角标
数组的声明:
1. 声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
2. 声明一个数组的时候并没有数组真正被创建。
3. 构造一个数组,必须指定长度。
数组格式:
元素类型[ ] 数组名 = new 元素类型 [元素个数或数组长度]; // int [] arr = new int [3];
[]:代表这是数组类型。
数组名:一个合法的标识符,命名规范 和 局部变量 规范一致。
new:是java 的关键字。用来向JVM申请内存的。
元素类型[元素个数] :决定了向JVM申请的内存空间的大小。
大小 :元素类型字节数 * 元素个数
元素的个数:只要是一个合法的java 表达式就可以。 返回一个int 类型的值即可
1 public class Example { 2 public static void main(String[] args) { 3 int[] arr =new int[4]; //定义可以储存4个整数的数组 4 arr[0] = 1; //为第一个元素赋值 5 arr[1] = 2; //为第二个元素赋值 6 //下面的 代码是打印数组中每个元素的值
7 System.out.println("第一个元素的值为:" + arr[0]); 8 System.out.println("第二个元素的值为:" + arr[1]); 9 System.out.println("第三个元素的值为:" + arr[2]); 10 System.out.println("第四个元素的值为:" + arr[3]); 11 12 } 13 14 }
运行结果如图--
第三,四个元素没有赋值,数组会自动赋予一个默认值:
byte,short,int,long--默认初始化值:0
float,double--默认初始化值:0.0
char--默认初始化值:一个空字符,即'u0000'
boolean--默认初始化值:false
引用数据类型:null,表示变量不引用任何对象
数组的常见问题:
数组的优缺点:
优点:
1:可以保存若干个数据。
2:随机访问的效率很高。根据下标访问元素效率高(元素连续分配空间)。
缺点:
1:数组的元素的类型必须一致。元素类型必须一致。
2:连续分配空间在堆中,如果数组的元素很多,对内存的要求更加的严格。
3:根据内容查找元素效率比较低,需要逐个比较个。
4:删除元素、插入元素效率比较低,需要移动大量的元素。
5:数组定长,不能自动扩容。
6:数组没有封装,数组对象只提供了一个数组长度的属性,但是没有提供方法用来操作元素。
java 提供了一整套的 针对不同需求的 对于容器的解决的方案。集合框架部分。不同的容器有不同的特点,满足不同的需求。数组的缺点都会被干掉。
数组的初始化:静态初始化、动态初始化、默认初始化
静态初始化:int
[] arr = {
1
,
2
,
3
};
// 静态初始化基本类型数组;
动态初始化:
int
[] arr =
new
int
[
2
];
//动态初始化数组,先分配空间;
arr[
0
]=
1
;
//给数组元素赋值;
arr[
1
]=
2
;
//给数组元素赋值;
默认初始化:int
arr[] =
new
int
[
2
];
// 默认值:0,0
boolean
[] b =
new
boolean
[
2
];
// 默认值:false,false
String[] s =
new
String[
2
];
// 默认值:null, null
数组遍历
1 public class Example { 2 public static void main(String[] args) { 3 int[] arr = {1, 2, 3, 4, 5}; //定义一个数组 4 5 //for循环 6 for (int i = 0; i <arr.length ; i++) { 7 System.out.println(arr[i]);; 8 } 9 } 10 11 }
数组最值
1 public class Example { 2 public static void main(String[] args) { 3 int[] arr = {1, 6, 3, 4, 9, 8}; //定义一个数组 4 int max = getMax(arr); //调用获取元素最大值的方法 5 System.out.println("最大值为 :" + max); //打印最大值 6 } 7 static int getMax(int[] arr){ 8 //定义变量max用于记住最大数,首先假设第一个元素为最大值 9 int max =arr[0]; 10 //for循环 11 for (int i = 0; i <arr.length ; i++) { 12 if (arr[i] > max) { //比较 13 max = arr[i]; //赋值 14 } 15 } 16 return max; //返回最大值 17 } 18 19 }
多维数组
多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组,但是实际开发中用的非常少。