Java小结 ------数组

一、定义
数组指的就是⼀组相关类型的变量集合,并且这些变量可以按照统⼀的⽅式进⾏操作。
二、数组初始化
数组是引⽤数据类型,有内存分配问题。
1.数组动态初始化(声明并开辟数组):

数据类型[] 数组名称 = new 数据类型 [⻓度] ;

例如定义一个 int型数组:

public class ArrayDemo{
      public static void main(String[] args) {
             int[] x = new int[3] ; // 开辟了⼀个⻓度为3的数组
             System.out.println(x.length) ;
             x[0] = 1 ; // 数组第⼀个元素
             x[1] = 2 ; // 数组第⼆个元素
             x[2] = 3 ; // 数组第三个元素
             for (int i = 0; i<x.length ; i++) {
             System.out.println(x[i]) ; // 通过循环控制索引下标更改
             }
      }
}

2、数组静态初始化
在之前的数组定义都有⼀个明显特点:数组⾸先先开辟内存空间,⽽后再使⽤索引进⾏内容的设置,这种定义数组的⽅式称为动态初始化;⽽如果希望数组在定义的同时可以设置内容,那么就可以采⽤静态初始化。

数据类型[] 数组名称 = new 数据类型[] {值,值,....}

示例:

public class ArrayDemo{
       public static void main(String[] args) {
             int[] x = {1,2,5,55,555,223,45545,666465,6443} ; // 静态初始化定义数组
             System.out.println(x.length) ;
             for (int i = 0; i<x.length ; i++) {
             System.out.println(x[i]) ;
             }
       }
}

数组最⼤的缺陷:⻓度固定(存在越界问题)
三、二维数组
我对于二维数组的理解是,二维数组就以一个一维数组,只不过他的每一个元素又是一个一维数组。
初始化:
1静态初始化:

数据类型[][] 对象数组 = new 数据类型[][]{{值,值,..},{值,值,..},..} ;

2动态初始化:

数据类型[][] 对象数组 = new 数据类型[][]{{值,值,..},{值,值,..},..} ;

示例: 定义一个二维数组:

public class ArrayDemo{
     public static void main(String[] args) {
          // 数组并不是等列数组
          int[][] data = new int[][] { 
          {1,2,3},{4,5},{6,7,8,9}
          };
              // 在进⾏输出的时候⼀定要使⽤双重循环
    for (int x = 0; x<data.length ; x++) {
           for (int y = 0; y<data[x].length ; y ++) {
            System.out.println("data{"+x+"]
            ["+y+"]="+data[x][y]+"、") ;
            }
             System.out.println();
        }
     }
}

四、数组拷贝
拷贝对于基本类型来说他是深拷贝
4种拷贝方式:对于引用类型来说都是浅拷贝。
四种方式:

  1. 利用for语句
    示例:
public static void main3(String[] args) {
        int[] array = {1,2,23,4,15,6,7,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));
    }
  1. clone
    示例
public static void main5(String[] args) {
        int[] array = {1,2,23,4,15,6,7,8,9};
        int[] array2 = new int[array.length];
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(array2));

        array2 = array.clone();
        array2[0] = 100;

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

    }
  1. System.arraycopy()
    示例;
public static void main(String[] args) {
        int[] array = {1,2,23,4,15,6,7,8,9};
        int[] array2 = new int[array.length];
        System.out.println("array2:"+array2);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(array2));
        System.arraycopy(array,0,array2,0, array.length);        
        System.out.println("array2:"+array2);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(array2));
    }

4Arrays.copyOf()
示例

public static void main(String[] args) {
        int[] array = {1,2,23,4,15,6,7,8,9};
        int[] array2 = new int[array.length];
        System.out.println("array2:"+array2);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(array2));
        array2 = Arrays.copyOf(array,array.length);
        System.out.println("array2:"+array2);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(array2));
    }

四种拷贝方式中System.arraycopy() 这种方式速度最快 因为底层代码是有c/c++编写的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值