Java —— 数组(arrays)
1.一维数组的定义与使用方法
数组:数组是相同类型数据的有序结合。
定义:数据类型[] 数组名称;或 数据类型 数组名称[]; 在引用数据类型时,只声明不赋值
的话,其存在默认值,为null;
eg: char[] arr; 或 char arr[];
特点:
(1)定长
(2)数组内部只能有一个数据类型
(3)元素有次序
(4)数组本身来说是对象,在堆中储存
(5)数组可以储存单一的任意类型数据
初始化
动态初始化:数组的定义,数组元素分配空间,赋值;分三部或两部进行
数据类型[] 数组名 = new 数据类型[长度];
元素为引用类型的数组,其每一个元素都需要实例化
Person[] people; //声明数组
people = new People[3]; //创建数组
people[0] = new Person(); //数组元素实例化
people[1] = new Person();
people[2] = new Person();
静态初始化:一步完成数组的定义,元素空间分配以及赋值;
数据类型[] 数组名 = new 数据类型[]{数值1,数值2,数值3,... ... };
int[] arr = new int[]{2,4,6,... ...};
数据类型[] 数组名 = {数值1,数值2,数值3,... ...}
int[] arr = {2,4,6,... ...};
*对于返回值类型为数组的方法来说可以采用:
return new int[3]; 或 return new int[]{1,2,3};
不可以采用 return {1,2,3};不能脱离数组的声明,{1,2,3}不能返回一个数组对象
错误的初始化
~~int[] arr = new int[4]{1,2,3,4}~~
默认值:
byte , short , int , long:默认值为 0 ;
char :默认值为编码为 0 的字符 ,'\u0000';
String (引用数据类型): 默认值为 null;
float , double :默认值为 0.0 ;
boolean :默认值为 false;
数组的索引&遍历
int[] arr = new int[5];
for(int i=0;i<5;i++){
arr[i] = i;
System.out.print("*"+arr[i]);
}
System.out.println(Arrays.toString(arr));
//结果为 [0, 1, 2, 3, 4] ,* Arrays.toString(数组名) 为打印数组的方法
int[] arr = new int[]{4,6,8,9,31};
for(int i:arr){
System.out.print(" "+i);
}
// 增强for循环(for-each)打印時,i表示的是元素,不是下标;System.out.print(" "+arr[i]);错误
**增强for循环打印時,i表示的是元素,不是下标;System.out.print(" "+arr[i]);错误
2. Arrays工具类
import java.util.Arrays;
public class Arrays_1 {
public static void main(String[] args){
int[] arr = new int[]{0,4,6,8,0};
int[] arr1 = new int[]{1,4,6,8,1};
int[] arr2 = new int[]{0,4,6,8,0};
//打印数组——Arrays。toString(arr)
System.out.println(Arrays.toString(arr));
System.out.println();
//比较两个数组是否相同,两个数组比较
System.out.println(Arrays.equals(arr,arr1));
System.out.println(Arrays.equals(arr,arr2));
//数组排序(升序)
Arrays.sort(arr); //仅能排序,不能打印
System.out.println(Arrays.toString(arr));
}
}
3. 二维数组
初始化
动态初始化
数据类型[][] 数组明 = new 数据类型[一维][二维];
int[][] arr = new int[2][3];
arr[0][0] = 1;
arr[0][1] = 1;
arr[0][2] = 1;
arr[1][0] = 1;
arr[1][1] = 1;
arr[1][2] = 1;
数据类型[][] 数组明 = new 数据类型[一维][];
内层数组可以自己创建,也可以参照一维数组创建方式;
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[]{2,3};
arr[2] = new int[]{2,4,7};
arr[0][0] = 2;
arr[0][1] = 4;
二维数组的遍历
int[][] arr = new int[2][];
arr[0] = new int[]{2,5,7,2,1};
arr[1] = new int[]{4,7,4,32};
int[][] arr1 = {{1,3,5},{34,6,7,9},{23,1},{2,3}};
//普通for循环嵌套普通for循环
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+",");
}
}
System.out.println("+++++++++++");
//普通for循环嵌套增强for循环
for(int i=0;i<arr.length;i++){
for(int j:arr[i]){
System.out.print(j+",");
}
}
System.out.println("+++++++++++");
//增强for循环嵌套增强for循环
for(int[] i:arr){
for(int j:i){
System.out.print(j+",");
}
}
System.out.println("+++++++++++");
//增强for循环嵌套普通for循环
for(int[] i:arr1){
for(int j=0;j<i.length;j++){
System.out.print(i[j]+",");
}
}
上述四种遍历的结果
2,5,7,2,1,4,7,4,32,+++++++++++
2,5,7,2,1,4,7,4,32,+++++++++++
2,5,7,2,1,4,7,4,32,+++++++++++
1,3,5,34,6,7,9,23,1,2,3,
**当包含for-each時,需要注意两点
1.输出结果和下脚标的问题
2.增强for循环的使用