目录
数组的定义
数组是相同类型数据的有序集合。其中,每一个数据称为一个元素,每一个元素可以通过一个索引也就是下标来访问。
数组四个基本特点:
- 长度是确定的。一旦被创建,大小长度就是不可变的
- 其元素的类型必须是相同类型,不允许出混合类型
- 数组类型可以是任何数据类型,包括基本类型和引用数据类型
- 数组变量属于引用类型,数组也是对象,其中的元素相当于对象的属性
创建数组和初始化
数组的声明:
数据类型【】 数组名;
数据类型 数组名 【】;
创建的语法格式:
数据类型 【】数组名=new 数据类型 【长度】;
或: 数据类型 数组名【】=new 数据类型 【长度】;
初始化
默认初始化:
动态初始化:
静态初始化:
数组的遍历与拷贝
普通遍历:
for--each遍历:专门用于读取数组或容器中所有的元素
- for--each增强for循环在遍历数组过程中不能修改数组中某元素的值
- for--each仅适用于遍历,不涉及有关索引的操作
数组的拷贝:
System.arraycopy(object src , int srcpos , object dest , int destpos , int length )
该方法可以将 src 数组里的元素值赋给 dest 数组的元素,其中 srcpos 指定从 src 数组的第几个 元素 开始赋值,length 参数指定将 src 数组的多少个元素赋给 dest 数组的元素。
package com.bjsxt.Array;
public class Test01 {
public static void main(String[] args) {
//int [] arr1=null;
int [] arr1=new int[5];
//默认初始化
arr1[0]=1;arr1[1]=2;
//动态初始化
//遍历
for (int i = 0; i <arr1.length ; i++) {
arr1[i]=2*i+1;//数组是对象,元素对应对象的属性
}
int arr2[]={1,2,3};
//静态初始化
String[] s={"艾瑞利亚","劫","塞拉斯","努努"};
String [] ss=new String[5];
System.arraycopy(s,0,ss,0,s.length);
for(int i=0;i<ss.length;i++){
System.out.println(ss[i]+'\t');
}
}
}
java.util.Arrays 类
Arrays类包含了:排序、查找、填空、打印内容等常见的数组操作。
package com.bjsxt.Array;
import java.lang.reflect.Array;
import java.util.Arrays;
/*
*测试java.util,Array类
* 提供了常见的:排序、查找、填充、打印数组的相关方法*/
public class Test3 {
public static void main(String[] args) {
int [] a={22,11,33,66,77,88,99};
System.out.println(Arrays.toString(a));
Arrays.sort(a);//排序
System.out.println(Arrays.toString(a));
System.out.println("该元素的索引:"+Arrays.binarySearch(a,22));
//查找数组元素在排序后的位置 没有择返回负数(只能排序后才能使用)
Arrays.fill(a,2,4,100);
//将索引2到4 元素替换为100 左开右闭
System.out.println(Arrays.toString(a));
}
}
多维数组
多维数组可以看出以数组为元素的数组。不仅仅局限于二维,但最常见是二维数组。
package com.bjsxt.Array;
import java.util.Arrays;
public class Test04 {
public static void main(String[] args) {
//每一个以为数组代表一行数据
Object [] emp0={ 1001,"WJH0",18,"程序员","2019-9-9"};
Object [] emp1={ 1002,"WJH1",19,"程序员","2019-10-9"};
Object [] emp2={ 1003,"WJH2",20,"程序员","2019-11-9"};
Object[][] emps=new Object[3][];
emps[0]=emp0;
emps[1]=emp1;
emps[2]=emp2;
//打印二维数组的内容
for(int i=0;i<emps.length;i++)
{
System.out.println(Arrays.toString(emps[i]));
}
//使用嵌套循环打印二维数组
for (int i = 0; i < emps.length; i++) {
for (int j = 0; j <emps[i].length ; j++) {
System.out.print(emps[i][j]+"\t");
}
System.out.println();
}
}
}
package com.bjsxt.Array;
/*
*
*
*
*
*
* */
public class Test05 {
public static void main(String[] args) {
Emo emp0=new Emo(01,"吴",18,"码农1","2003-04-12-1");
Emo emp1=new Emo(02,"某",18,"码农2","2003-04-12-2");
Emo emp2=new Emo(03,"人",18,"码农3","2003-04-12-3");
Emo [] emps={emp0,emp1,emp2};
Emo[] emps1=new Emo[3];
emp0=emps1[0];
emp1=emps1[1];
emp2=emps1[2];
for (int i = 0; i <emps.length ; i++) {
System.out.println(emps1[i]);
}
}
}
class Emo{
private int id;
private String name;
private int age;
private String job;
private String hiredate;
@Override
public String toString() {
return id+'\t'+name+'\t'+age+'\t'+job+"\t"+hiredate;
}
public Emo(){}
public Emo(int id, String name, int age, String job, String hiredate) {
this.id = id;
this.name = name;
this.age = age;
this.job = job;
this.hiredate = hiredate;
}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}
}