一、创建数组
在java中数组的定义与c语言不同。
// 动态初始化
数据类型[] 数组名称 = new 数据类型 [] { 初始化数据 };
// 静态初始化
数据类型[] 数组名称 = { 初始化数据 };
数组:存放相同数据类型的集合,内存是连续的。
new:实例化一个对象。
int[] array={1,2,3,4,5}中array是一个引用,存放的是数据的地址
public static void main(String[] args) {
int[] array = {1,2,3,4};
int[] array2=new int[]{11,22,33,44};
int[] array3=new int[4];
}
二、数组的使用
int[] arr = {1, 2, 3};
System.out.println("length: " + arr.length); // 执行结果: 3
// 访问数组中的元素
System.out.println(arr[1]); // 执行结果: 2
System.out.println(arr[0]); // 执行结果: 1
arr[2] = 100;
System.out.println(arr[2]); // 执行结果: 100
注意事项:
- 使用 arr.length 能够获取到数组的长度. . 这个操作为成员访问操作符. 后面在面向对象中会经常用到.
- 使用 [ ] 按下标取数组元素. 需要注意, 下标从 0 开始计数
- 使用 [ ] 操作既能读取数据, 也能修改数据.
- 下标访问操作不能超出有效范围 [0, length - 1] , 如果超出有效范围, 会出现下标越界异常。
遍历数组的两种方法
public static void main(String[] args) {
int[] array={1,2,3,4}
for (int i=0;i<array.length;i++){
System.out.println(array[i]+" ");
}
System.out.println("===============");
for (int val:array) {
System.out.println(val+" ");
}
}
for和foreach的区别:如果对象是可以随机访问的用for,效率更高,如果访问对象是顺序的用foreach,同时注意foreach用作访问,不进行数组或者列表的操作。
数组进行参数传递
对于数组传参,数组名称是一个引用,类似于c语言中的地址,传进函数的参数也是引用,这样可以避免数组进行无效拷贝。
认识null
这里的null和c语言中的不同,null在java中表示空引用,也就是一个无效引用。
public static void main(String[] args) {
int a=0;
System.out.println(a);
int[] array=null;//array引用的是个空对象
System.out.println(array);
}
Arrays
Arrays:操作数组的工具类。java.until.Arrays;很多实用的方法。
Arrays.toString();//将数组当中的数据,以字符串的形式输出。
public static void main(String[] args) {
int[] array={1,2,3,4,5,6,7,8,9,10};
//将数组以字符串的形式进行输出
System.out.println(Arrays.toString(array));
}
三、数组的拷贝
在java中数组的拷贝有四种方式:
1.用for循环
public static int[] copyArray(int[] array) {
int[] ret=new int[array.length];
for (int i = 0; i < array.length; i++) {
ret[i]=array[i];
}
return ret;
}
public static void main(String[] args) {
int[] array={1,2,3,4,5,6,7};
int[] ret=copyArray(array);
System.out.println(Arrays.toString(ret));
}
2.用Arrays.copyOf
Arrays.copyOf(拷贝谁,拷贝的内容)
public static void main(String[] args) {
int[] array={1,2,3,4,5,6,7};
int[] ret=Arrays.copyOf(arraya,rray.length);
System.out.println(Arrays.toString(ret));
}
3.System.arraycopy
System.arraycopy(原数组,原数组当中开始拷贝的位置,目的地数组,拷到那个位置,拷贝的长度)
public static void main(String[] args) {
int[] array={1,2,3,4,5,6,7};
int[] ret=new int[array.length];
System.arraycopy(array,srcPos:0,ret,destPos:0,array.length);
System.out.println(A rrays.toString(ret));
4.clone()
clone:产生了这个对象的一个副本,这个方法是Object的克隆方法。
public static void main(String[] args) {
int[] array={1,2,3,4,5,6,7};
int[] ret=array.clone();
System.out.println(A rrays.toString(ret));