数组的基本概念
- 数组是相同类型数据的有序集合.
- 相同类型的若干个数据,按照一定先后次序排列组合而成。
- 其中,每一个数据称作一个数组元素
- 每个数组元素可以通过一个下标来访问它们.
数组特点
- 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
- 其元素必须是相同类型,不允许出现混合类型。
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
备注:数组属引用类型
创建数组
- 一维数组的声明方式有两种
type[] arr_name;
type arr_name[];
例如:
int[] intArrays; int intArrays[];
double[] doubleArrays;
Person[] pArrays;
String[] strArrays;
代码示例
package com.cwl.base.day03.array;
import com.cwl.base.day03.User;
/**
* @program: java_base
* @description:
* @author: ChenWenLong
* @create: 2019-11-07 14:13
**/
public class Test01 {
public static void main(String[] args) {
int[] arr01 = new int[10] ; //索引下标[0, length-1]:0,1,2,3,4,5,6,7,8,9
String arr02[] = new String[5];
arr01[0] = 13;
arr01[1] = 15;
arr01[2] = 20;
// arr01[10] = 100; // java.lang.ArrayIndexOutOfBoundsException
//通过循环初始化数组
for(int i=0;i<arr01.length;i++){
arr01[i] = 10*i;
}
//通过循环读取数组里面元素的值
for(int i=0;i<arr01.length;i++){
System.out.println(arr01[i]);
}
User[] arr03 = new User[3];
arr03[0] = new User(1001,"**");
arr03[1] = new User(1002,"**");
arr03[2] = new User(1003,"**");
for(int i=0;i<arr03.length;i++){
System.out.println(arr03[i].getName());
}
}
}
动态初始化
- 数组定义与为数组元素分配空间并赋值的操作分开进行
静态初始化:
- 除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。
格式: 类型 [] 数组名 = {元素1[, 元素2 ……]};
int [] a = {1, 2, 3, 4, 5};
- 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个 元素也被按照实例变量同样的方式被隐式初始化
代码示例
package com.cwl.base.day03.array;
import com.cwl.base.day03.User;
/**
* @program: java_base
* @description:
* @author: ChenWenLong
* @create: 2019-11-07 14:37
**/
public class Test02 {
public static void main(String[] args) {
//静态初始化
int[] a = {2,4,65};
User[] b ={
new User(1001,"赵一"),
new User(1002,"张三"),
new User(1003,"李四")
};
//默认初始化
int[] c = new int[3]; //默认给数组的元素进行赋值。赋值的规则和成员变量默认赋值规则一致。
//动态初始化
int[] a1 = new int[2];//动态初始化数组,先分配空间;
a1[0]=1;//给数组元素赋值;
a1[1]=2;//给数组元素赋值;
}
}
数组的拷贝
- 使用java.lang.System类的静态方法
public static void arraycopy
(Object src,int srcPos,Object dest,
int destPos,int length)
- 可以用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组从destPos项开始 的length个位置。
如果源数据数目超过目标数组边界会抛出IndexOutOfBoundsException
异常。
package com.cwl.base.day03.array;
/**
* @program: java_base
* @description:
* @author: ChenWenLong
* @create: 2019-11-07 15:10
**/
public class Test03 {
public static void main(String[] args) {
int[] a = new int[4];
//初始化数组元素的值
for(int i=0;i<a.length;i++){
a[i] = 100*i;
}
//读取元素的值
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
System.out.println("##########");
//foreach循环:用于读取数组元素的值,不能修改元素的值
for(int m : a){
System.out.println(m);
}
String[] ss = { "aa", "bbb", "ccc", "ddd" };
for (String temp : ss) {
System.out.println(temp);
}
}
}
命令行参数
- JAVA应用程序的主方法(程序的入口)
public static void main (String args[]) {…}
public static void main (String[] args) {…}
- 命令行参数
- 在启动Java应用程序时可以一次性地向应用程序中传递0~多个参数----命令行参数
- 命令行参数使用格式:
- 由参数args接收
- 空格将参数分开
- 若参数包含空格,用双引号引起来
java ClassName lisa "bily" "Mr Brown“
Java.uitl.Arrays
- 该类提供了关于数组操作的API.
- 打印数组----toString方法。
- 比较两个数组是否相同----equals方法。
- 数组排序----sort方法。
- 数组查找----binarySearch 方法