一、数组的特点
- 大小固定
- 连续内存地址
- 存储的数据类型固定
- 数组是保存在堆内存中,因此数组是对象
二、java中定义数组的方式
- 第一种: 数据类型[] 变量名称 = new 数据类型[size];
- 第二种: 数据类型[] 变量名称 = new 数据类型[]{值1,值2,......};
- 第三种: 数据类型[] 变量名称 = {值1,值2,......};
代码示例:
int[] array1 = new int[4]; //第一种
int[] array2= new int[]{1,2,3,4,5}; //第二种
int[] array3 = {10,20,40,50}; //第三种
二、数组的使用
1.数组的长度
- 数组的长的即元素的个数。
数组对象.length //属性
代码示例:
public static void main(String[] args){
int[] array3 = {1,2,3,4,5};
System.out.print(array3.length);
}
/**
*输出结果为:
*5
*
*/
注意:数组的每一元素都有其对应的下标,下标从0开始,想找到这个数组中的某个数据,是通过数组的下标来进行访问的。
数组对象[下标] //通过下标来访问元素的个数
2.下标越界
数组下标从0开始,范围是[0,arr.length),为左闭右开区间,或者[0,arr.length-1]
如下代码是错误的❌
public static void main(String[] args){
int[] array3 = {1,2,3,4,5};
System.out.print(array3[10]);
}
3.修改数组的数值
数组对象[下标] = 新值
4.遍历数组
- 遍历即把数组中的所有元素都访问一遍
(1)for循环遍历
public static void main(String[] args){
int[] array3 = {1,2,3,4,5};
for(int i = 0; i <= array3.length;i++){
System.out.print(array3[i]);
}
}
/**
*输出结果为:
*1
*2
*3
*4
*5
*/
(2)for-each遍历
- foreach // 循环加强,是jdk5的新特性,是一种迭代容器操作
for (数据类型 临时变量: 可迭代对象) {
System.out.println(临时变量);
}for(表达式1 :表达式2){
}
表达式1:数组中的每个元素的变量
表达式2:数组名
代码示例:
public static void main(String[] args){
int[] array3 = {1,2,3,4,5};
for (int item: array3 ) {
System.out.println(item);
}
}
for循环和for - each的区别:
for循环是可以拿到数组下标的,for-each拿不到数组下标,所以for-each只能够全部遍历,无法对数组元素进行修改或进行操作.
三、二维数组
二维数组即行和列组成的一个表格,矩阵Matrix。
二维数组具体是在内存中如何存储的呢?
- 无论是二维数组,还是多维数组,它们本身就是一个一维数组。
- 尤其对于二维数组而言,无非就是一个一维数组,只不过该一维数组中的每一个元素是另一个 一维数组罢了。
定义方式:
//数据类型[][] 数组名称 = new 数据类型[size][size];
//创建一个3行4列的二维数组,元素默认都是0
int[][] array1 = new int[3][4];
//创建个指定元素的二维数组
int[][] array2 = new int[][]{
{ 1, 2, 3, 4 } ,
{ 5, 6, 7, 8 } ,
{ 9, 10, 11, 12 }
};
//锯齿矩阵
int[][] array3 = {
{ 1, 2, 3, 4 } ,
{ 5, 6, 7 } ,
{ 8, 9 },
{ 10 }
};
四、Arrays数组工具类
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查 看的静态工厂。
• static int binarySearch(int[] a, int key) :使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
• static int[] copyOf(int[] original, int newLength) :复制指定的数组,截取或用 0 填充(如有必 要),以使副本具有指定的长度。
• static boolean equals(int[] a, int[] a2) :如果两个指定的 int 型数组彼此相等 ,则返回 true 。
• static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序。
• static String toString(int[] a) :返回指定数组内容的字符串表示形式。