Java——数组

本文深入讲解数组的概念,包括动态和静态初始化,二维数组的定义与使用,数组拷贝的不同方式,以及排序方法。同时,详细介绍了对象数组的创建和初始化过程。

1、 数组基本概念
① 数组动态初始化( 声明并开辟数组):

数据类型[]数组名称 = new 数据类型 [长度]
例如:int[] x = new int[3] ; // 开辟了了一个长度为3的数组

另外一种开辟模式:分步进行数组实例化

int[] x = null ;
x = new int[3] ;

数组属于引用数据类型,因此在使用之前一定要开辟空间(实例化)

同一块堆内存空间可以被不同的栈内存所指向。
在这里插入图片描述
②数组静态初始化:

数据类型[] 数组名称 = {值,值,…}
int[] x = {1,2,8,5,3,3} ;
数据类型[] 数组名称 = new 数据类型[] {值,值,…}

数组的缺陷在于:存在越界问题

  1. 二维数组
    二维数组的每一个元素就是一个一维数组,是一个存放一维数组的容器,实际上二维数组中存储的就是一维数组在堆内存中一维数组待得内存地址。
    对于二维数组的定义有两种声明格式:

动态初始化: 数据类型[][] 对象数组 = new 数据类型[行个数][列个数]];
静态初始化: 数据类型[][] 对象数组 = new 数据类型[][]{{值,值,…},{值,值,…},…} ;
int[][] data = new int[][] {
{1,2,3},{4,5},{6,7,8,9}
};

在进行输出的时候一定要使用双重循环

  1. 数组拷贝
    是将一个数组的部分内容替换掉另一个数组的部分内容(必须是连续的)
    java.util.Arrays.copyOf(源数组名称,新数组长度)
    System.arraycopy()
    System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度);
    System.arraycopy(dataB,4,dataA,1,3) ;

目标数组A: 1、2、3、4、5、6、7、8、9
源数组B: 11、22、33、44、55、66、77、88、99
替换后:1、55、66、77、5、6、7、8、9

//代码示例
public class ArrayDemo{
public static void main(String[] args) {
int[] dataA = new int[]{1,2,3,4,5,6,7,8,9} ;
int[] dataB = new int[]{11,22,33,44,55,66,77,88,99} ;
System.arraycopy(dataB,4,dataA,1,3) ;
printArray(dataA) ;
}
public static void printArray(int[] temp) {
for (int i = 0 ; i<temp.length ; i++) {
System.out.println(temp[i]) ;
}
System.out.println() ;
}
}

四种拷贝方式:
Arrays.copyof()——>拷贝最快
for循环 对于基本数据类型是深拷贝
clone array2=array.clone 对于基本数据类型是深拷贝
System.arraycopy() 对于基本数据类型是深拷贝
四种对于引用类型来说都是浅拷贝
ii、数组排序
只要是基本数据类型的数组,sort方法都可以进行排序处理(升序处理)。
java.util.Arrays.sort(数组名称)
4. 对象数组
对象数组动态初始化:

class Person {
    public int age;
}
//主类
public class Test {
    public static void main(String[] args) {
        //对象数组动态初始化
        Person[] pers = new Person[3]; 
        //实例化
        pers[0] = new Person("张三",18);     
        pers[1] = new Person("李四",5);
        pers[2] = new Person("赵六",26); 
    } 
}

静态初始化

//定义Person类
class Person {
    public int age;
}
//主类
public class Test {
    public static void main(String[] args) {
        对象数组静态初始化
        Person[] pers = new Person[]{
        new Person("张三",18),
        new Person("李四",5),
        new Person("赵六",26)
        };
    } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值