1.数组的概念
<1.>数组的定义
数组是相同类型数据的有序集合,数组描述的是相同类型数据的若干个元素,按照一 定的先后次序排列组合而成。
<2.>数组的四个基本特点
Ⅰ.长度确定,一旦被创建,数组大小不可以改变;
Ⅱ.元素的类型必须是相同类型;
Ⅲ.数据类型可以是任何数据类型,包括基本数据类型和应用数据类型;
Ⅳ.数组变量属于应用类型,数组也是对象;
<3.>创建数组和初始化
<3.1>数组声明
Ⅰ. type[] arr_name;
Ⅱ.type arr_name[];
注:只有再实例化数组对象时,JVM分配空间,这时才有数组长度有关;
<3.2>初始化
Ⅰ.静态初始化
int [] a = {1,2,3};
Mans[] mans = {new Man(1,1),new Man(2,2)};
Ⅱ.动态初始化
int [] a = new int[2];
a[0] = 1;
a[1] = 2;
Ⅲ.默认初始化(隐式初始化)
int[] a = new int [2];
2.数组的常见操作
<1.>遍历:通过循环遍历数组的所有元素;
//定义以及初始化数组
int [] a = new int [5];
for (int i = 0;i<a.length;i++){
a[i] = i*10;
}
//for 循环遍历数组
for (int i = 0;i<a.length;i++){
System.out.println(a[i]);
}
//for-each循环(不涉及下标操作,不能修改数组中元素的值)
for(int temp:a){
System.out.println(temp);
}
<2.>拷贝:某个数组的内容拷贝到另一个数组内;
//定义数组以及初始化数组
String[] s = {"百度","腾讯","谷歌","火狐","网易"};
//数组拷贝
String[] sBak = new String[5];
System.arraycopy(s,sBak,0,s.length);
<3.>数组操作(java.util.Arrays类)
方法 | 操作 |
Arrays.toString(a) | 打印a数组中元素的值 |
Arrays.sort(a) | 对a数组元素进行从小到大排序 |
Arrays.fill(a,2,4,100) | 将a数组2到4索引替换为100 |
<4.>Compareable接口
import java.util.Arrays;
public class TestComparable {
public static void main(String[] args) {
Man[] man = {new Man(3,"a"),new Man(60,"b"),new Man(2,"c")};
Arrays.sort(man);
System.out.println(Arrays.toString(man));
}
}
class Man implements Comparable{
private int age;
private int id;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Man(int age, String name) {
this.age = age;
this.name = name;
}
public Man() {
}
@Override
public int compareTo(Object o) {
Man man = (Man) o;
if(this.age<man.age){
return -1;
}
if(this.age> man.age){
return 1;
}
return 0;
}
@Override
public String toString() {
return this.name;
}
}
运行结果:[c, a, b]
注:如果p比q大,返回一个大于0的整数,如果p比q小,返回一个小于0的整数,如果p=q, 返回0;
3.多维数组
<1.>二维数组的声明
int [][] a = new int [3][];
a[0] = new int [2];
a[1] = new int [4];
a[2] = new int [3];
<2.>二维数组的初始化
Ⅰ.静态初始化
int [][] a = {{1,2,3},{4,5,6},{7,8,9}};
Ⅱ.动态初始化
int [] [] a = new int [3][];
a[0] = new int[]{1,2};
a[1] = new int[]{4,5,6};
a[2] = new int[]{7,8,9};
<3.>获取二维数组的长度
Ⅰ.获取二维数组第一维数组的长度
a.length;
Ⅱ.获取第二维第一个数组长度
a[0].length;