java-数组的定义和使用

1、基本概念

数组:用于储存多个相同类型数据的集合。

        优点:可以使用统一的方式进行管理。

        缺点:长度是固定的,有越界的风险。

需要注意:数组属于引用数据类型,因此使用之前必须实例化。

2、一维数组的初始化方式:

(1)动态初始化(很常用):

基本格式:数据类型[] 数组名称 = new 数据类型 [长度] ;

 方式一:int[] Array = new int[5];

public class Demo1 {
    public static void main(String[] args) {
        int[] Array = new int[5];   //开辟空间
        for (int i = 0; i < Array.length; i++) {    
            //Array.Length是数组的属性,得到数组长度
            Array[i] = i;   //使用for循环初始化
        }
    }
}

 方式二:

int[] Array = null; 
Array = new int[5];

(2)静态初始化

完整格式:int[] Array = new int[]{1,2,3,4,5};   -->注意 []里面不能写数字

简化格式: int[] Array = {1,2,3,4,5,6};   


3、二维数组的初始化方式:

(1)动态初始化

数据类型[][] 对象数组 = new 数据类型[行个数][列个数] ;

//定义一个3行2列的二维数组
int[][] 2dArray = new int[3][2];

(2)静态初始化

int[][] 2dArray = new int[][]{
    //数组并不一定是等列的
     {1,2},{3,4,5},{6,7,8,9}
};

4、数组的访问方式:

(1)对一维数组,可以使用for循环遍历、foreach遍历以及Arrays.toString字符打印。

//方式一:for循环遍历
        for (int i = 0; i < Array.length; i++) {
            System.out.println(Array[i]);
        }
//方式二:foreach遍历
        for (int i:Array) {
            System.out.println(i);
        }
//方式三:字符打印
        System.out.println(Arrays.toString(Array));

(2)对二维数组,可以使用双重for循环,或者使用Arrays.deepToString字符打印。

//方式1、--->双重for循环遍历
for (int i = 0; i < 2dArray.length; i++) {
      for (int j = 0; j < 2dArray[i].length; j++) {
          System.out.println("data["+i+"]["+j+"]="+2dArray[i][j]) ;
      }
}  
//方式2、--->deepToString()
System.out.println(Arrays.deepToString(2dArray));

5、数组的四种拷贝方式:

(要注意每种拷贝方式有无返回值、是否有参数以及参数的个数)

(1)for循环拷贝:

/*for循环拷贝*/
public static void main(String[] args) {
    int[] array = {5,2,13,4,25,6,71,8,9};
    int[] array2 = new int[array.length];
    System.out.println(Arrays.toString(array));
    System.out.println(Arrays.toString(array2));

    for (int i = 0; i < array.length; i++) {
        array2[i] = array[i];
    }
    array2[0] = 99;

    System.out.println(Arrays.toString(array));
    System.out.println(Arrays.toString(array2));
}

(2)clone拷贝 : 原内存被回收,新分配一段内存

array2 = array.clone();

(3)System.arraycopy()拷贝:速度最快,因为底层由C/C++实现,使用native标志

//有5个参数
System.arraycopy(array,0,array2,0,array.length);

(4)Arrays.copyof()

array2 = Arrays.copyOf(array,array.length);

总结:四种数组拷贝方式,对基本数据类型来说都是深拷贝;如果数组里面是引用类型,四种拷贝都是浅拷贝。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值