第一阶段——javaSE——03.java数组

数组是用来存储固定大小同类型元素。

  1. Java 数组的声明、创建和初始化

声明数组首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

dataType[] arrayRefVar; // 首选的方法 或

dataType arrayRefVar[]; // 效果相同,但不是首选方法

创建数组

arrayRefVar = new dataType[arraySize];

声明创建

dataType[] arrayRefVar = new dataType[arraySize];

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。

初始化:可分为静态初始化和动态初始化

1)静态初始化的简单写法

int[] arr2 = {1,2,3,4,5};//声明、创建、初始化

2)动态初始化

int[] arr1 = new int[5]; //声明、创建

arr1[0] = 0;//初始化

arr1[0] = 1;

arr1[0] = 2;

arr1[0] = 3;

arr1[0] = 4;

2.引用对象的内存分析

public class Test1 {

    public static void main(String[] args) {

        int[] x = null;

        x = new int[3];

        x[0] = 10;

        x[1] = 20;

        x[2] = 30;

        x = null;

    }

}

 

3.处理数组

(1)调用

数组的访问通过索引完成,即:“数组名称[索引]”,如arr2 [2], 但是需要注意的是,数组的索引从0开始,所以索引的范围就是0 ~ 数组长度-1,例如开辟了3个空间的数组,所以可以使用的索引是:0,1,2,如果此时访问的时候超过了数组的索引范围,会产生java.lang.ArrayIndexOutOfBoundsException 异常信息;

(2)遍历
第一种

int data[] = new int[3]; /*开辟了一个长度为3的数组*/
data[0] = 10; // 第一个元素
data[1] = 20; // 第二个元素
data[2] = 30; // 第三个元素
for(int x = 0; x < data.length; x++) {
    System.out.println(data[x]); //通过循环控制索引
 }


第二种for-each(增强for)

int [] array = {1,2,3};

for(int i : array){

    System.out.println(i);

}

(3)排序

java.util.Arrays.sort(arrayName) ;
import java.util.Arrays;

public class ArrayUtil {

    public static void main(String[] args) {

        int[] a = new int[]{1, 33, 5, 44, 76};//1,5,33,44,76

        System.out.println("排序之前:");

        arrayPrint(a);//1,5,33,44,76

        Arrays.sort(a);

        System.out.println("排序之后:");

        //改变原数组

        arrayPrint(a);//1,5,33,44,76

    }



    public static void arrayPrint(int[] c) {

        if (c == null) {

            return;

        }

        for (int j = 0; j < c.length; j++) {

            System.out.print(c[j] + " ");

        }

        System.out.println();

    }

}

 

(4)拷贝
将指定源数组中的数组从指定位置复制到目标数组的指定位置。j

ava.lang.System.arraycopy(Object src,int srcPos,Object dest, int destPos,int length);
public class ArrayUtil {

    //拷贝

    public static void main(String[] args) {

        int[] src = new int[]{1, 2, 3, 4, 5, 6, 7, 8};

        int[] dest = new int[3];

        arrayPrint(src);//1,2,3,4,5,6,7,8

        arrayPrint(dest);0,0,0

        //方法一

        // for(int i=2;i<5;i++){

        // dest[i-2]=src[i];

        // }

        //方法二

        System.arraycopy(src, 2, dest, 0, 3);

        arrayPrint(src);//1,2,3,4,5,6,7,8

        arrayPrint(dest);3,4,5

    }



    public static void arrayPrint(int[] c) {

        if (c == null) {

            return;

        }

        for (int j = 0; j < c.length; j++) {

            System.out.print(c[j] + " ");

        }

        System.out.println();

    }

}

方法二:复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。

java.util.Arrays.copyOf(源数组名称,新数组长度)

import java.util.Arrays;



public class ArrayUtil {

    public static void main(String[] args) {

        int[] src = new int[]{1, 2, 3, 4, 5, 6, 7, 8};

        arrayPrint(src);//1,2,3,4,5,6,7,8



        int[] dest1 = Arrays.copyOf(src, 7);

        //Arrays.copyOf不改变原数组

        arrayPrint(src);//1,2,3,4,5,6,7,8

        arrayPrint(dest1);//1,2,3,4,5,6,7,



        int[] dest2 = Arrays.copyOf(src, 10);

        arrayPrint(dest2);//1,2,3,4,5,6,7,8,0,0



    }



    public static void arrayPrint(int[] c) {

        if (c == null) {

            return;

        }

        for (int j = 0; j < c.length; j++) {

            System.out.print(c[j] + " ");

        }

        System.out.println();

    }

}

 

(5)数组转集合

java.util.Arrays.asList(arg);
String[] array = new String[] {"zhu", "wen", "tao"};

// String数组转List集合

List<String> mlist = Arrays.asList(array);

// 输出List集合

for (int i = 0; i < mlist.size(); i++) {

   System.out.println("mlist-->" + mlist.get(i));

}

 

注意:数组int[]用Integer[],double[]用Double[] ,因为List集合是对象的集合,而int、double等不是对象,所以需要用字段的对应对象类

可以使用apache commons-lang3  jar 

org.apache.commons.lang3.ArrayUtils.toObject(int[]) 方法 先转成Integer数组

再使用 java.util.Arrays.asList(Integer...) 转成list 

 public static void main(String[] args){

        int[] src = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        Integer[] is = ArrayUtils.toObject(src);

        List<Integer> asList = Arrays.asList(is);

        System.out.println(asList);

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章