目录
- 一、声明数组
- 二、初始化数组
- 三、访问数组元素
- 四、遍历数组
- 五、数组复制
- 1、基本类型数组复制
- 2、Object数组复制
- 3、多维数组复制
- 4、对象数组复制
大家好,我是哪吒。
🏆本文收录于,49天精通Java从入门到就业。
全网最细Java零基础手把手入门教程,系列课程包括:基础篇、集合篇、Java8新特性、多线程、代码实战,持续更新中(每周1-2篇),适合零基础和进阶提升的同学。
Java中的数组是一种有序的数据结构,用于存储相同类型的元素。
一、声明数组
在Java中,声明数组需要指定数组的类型、名称和长度。
int[] arr;
声明一个长度为10的整型数组:
int[] arr= new int[10];
二、初始化数组
初始化数组:
int[] arr= {1, 2, 3, 4, 5};
使用以下语法来逐个初始化数组元素:
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
三、访问数组元素
可以使用以下语法来访问数组元素:
// 获取数组元素的值
int value = arr[index];
// 设置数组元素的值
arr[index] = value;
其中,index是数组元素的索引,从0开始计数。
例如,arrayName[0]表示数组的第一个元素。
四、遍历数组
可以使用for循环来遍历数组。
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}
数组必须确定大小,如果无法确定大小,还可以使用数组吗?
五、数组复制
1、基本类型数组复制
package com.guor.test.javaSE.collection;
import java.util.Arrays;
import com.guor.test.User;
public class ArrayTest {
public static void main(String[] args) {
beanCopy();
}
//**************************************************************
private static void copySelf() {
int[] ids = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.toString(ids));
//System.arraycopy(src, srcPos, dest, destPos, length);
// 把从索引0开始的2个数字复制到索引为3的位置上
System.arraycopy(ids, 0, ids, 3, 2);
System.out.println(Arrays.toString(ids));//[1, 2, 3, 1, 2]
}
private static void copyToOther() {
int[] ids = { 1, 2, 3, 4, 5 };
//将数据的索引1开始的3个数据复制到目标的索引为0的位置上
int[] other = new int[5];
System.arraycopy(ids, 1, other, 0, 3);
System.out.println(Arrays.toString(ids));//[1, 2, 3, 4, 5]深复制
System.out.println(Arrays.toString(other));//[2, 3, 4, 0, 0]
}
}
2、Object数组复制
//如果是类型转换问题,获取整形
private static void getIntegerArrayFromObjectArray() {
Object[] obj1 = { 1, 2, 3, "4", "5" };
Integer[] obj2 = new Integer[5];
try {
System.arraycopy(obj1, 0, obj2, 0, obj1.length);
} catch (Exception e) {
System.out.println("transfer exception:"+e);
}
System.out.println(Arrays.toString(obj1));
System.out.println(Arrays.toString(obj2));
}
//获取Object数组中的字符串类型数据
private static void getStringArrayFromObjectArray1() {
Object[] obj3 = { 1, 2, 3, "4", "5" };
String[] obj4 = new String[5];
try {
System.arraycopy(obj3, 2, obj4, 2, 3);
} catch (Exception e) {
//transfer exception:java.lang.ArrayStoreException
System.out.println("transfer exception:"+e);
}
System.out.println(Arrays.toString(obj3));
//[null, null, null, null, null]
System.out.println(Arrays.toString(obj4));
}
//获取Object数组中的字符串类型数据
private static void getStringArrayFromObjectArray2() {
Object[] obj3 = { 1, 2, 3, "4", "5" };
String[] obj4 = new String[5];
try {
System.arraycopy(obj3, 3, obj4, 3, 2);
} catch (Exception e) {
System.out.println("transfer exception:"+e);
}
System.out.println(Arrays.toString(obj3));
//[null, null, null, 4, 5]
System.out.println(Arrays.toString(obj4));
obj3[3] = "zhangssan";
System.out.println("查看是浅复制还是深复制~~~~~");
System.out.println(Arrays.toString(obj3));
System.out.println(Arrays.toString(obj4));
}
3、多维数组复制
//多维数组
public static void twoArray() {
int[] arr1 = {1, 2};
int[] arr2 = {3, 4};
int[] arr3 = {5, 6};
int[][] src = new int[][]{arr1, arr2, arr3};
print("原始模样:", src);
int[][] dest = new int[3][];
System.arraycopy(src, 0, dest, 0, 3);
System.out.println("改变前");
print("src = ", src);
print("dest = ", dest);
//原数组改变后观察新数组是否改变,改变->浅复制,不改变->深复制
src[0][0] = -1;
System.out.println("改变后");
print("src = ", src);
print("dest = ", dest);
}
4、对象数组复制
//对象复制
private static void beanCopy() {
User user1 = new User("zs",18);
User user2 = new User("ls",18);
User user3 = new User("ww",18);
User[] userArraySrc = {user1, user2, user3};
User[] userArrayDest = new User[3];
System.out.println("对象复制,原始模样:"+Arrays.toString(userArraySrc));
System.arraycopy(userArraySrc, 0, userArrayDest, 0, userArraySrc.length);
System.out.println("userArrayDest," + Arrays.toString(userArrayDest));
System.out.println("------------改变原对象------------------");
userArraySrc[0] = new User("su",20);
System.out.println("***" + Arrays.toString(userArraySrc));
System.out.println("***" + Arrays.toString(userArrayDest));
}
//二维数组toString()
private static void print(String string, int[][] arr) {
System.out.print(string);
for (int[] a : arr) {
for (int i : a) {
System.out.print(i + " ");
}
System.out.print(",");
}
System.out.println();
}
🏆本文收录于,49天精通Java从入门到就业。
全网最细Java零基础手把手入门教程,系列课程包括:基础篇、集合篇、Java8新特性、多线程、代码实战,持续更新中(每周1-2篇),适合零基础和进阶提升的同学。
🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师。