Java中Arrays打印二维数组、Arrays数组的常用操作

Java中Arrays.toString ()打印二维数组及Array数组的常用操作

关键词:java 数组 数组常用操作 空数组 空串 Arrays Arrays.toString () Arrays.deepToString() HashSet



1.Java创建数组的几种方式

以一维数组为例,讲解Java创建数组的三种方式。

1)先声明再初始化
String []a = new String[length];
a[0]=?......;//再赋值2)声明的同时初始化
String []a = new String[]{
    
    a,b,...};3)不用new直接初始化
String []a = {
    
    ?,?....}

对于二维、三维甚至更高维度的数组,可以看做是元素是数组的数组,第一维可以不写,其他维度都要写,数组初始化默认元素为0。

4)Java 定义长度为 0 的数组 / 空数组

int[] array = new int[0];     // 定义一个长度为 0 的数组 / 空数组
Sring[] arr = new String[0];  // 定义一个长度为 0 的数组 / 空数组

长度为 0 的数组 / 空数组 并不是 null

有时数组里可能只有一个空字符串 “”,这时数组长度是 1。这种情况也要注意判断。

if ( arr.length == 1 && arr[ 0 ].equals( "" ) ) {
    
    
    System.out.println( "输入的数组不能只包含一个空字符串" );
    return;
}

2.Java中Arrays.toString ()

已知打印一维数组的API为System.out.println ( Arrays.toString (arr0));,其参数为数组名或数组指针,其支持的数据类型有很多,如:int[]、char[]、byte[]等。

import java.util.Arrays;

public class ArrayPrint {
    
    
    public static void main(String[] args) {
    
    
        //第一种方式:
        int a[][] = {
    
    {
    
    0,9,8},{
    
    1,2,3}};
        System.out.println("打印a的地址"+a);
        int b[][] = {
    
    {
    
    0,9,8},{
    
    1,2,3}};
        System.out.println("嵌套打印b的地址"+ Arrays.toString(b));
        int c[][] = {
    
    {
    
    0,9,8},{
    
    1,2,3}};
        System.out.println("嵌套打印c"+Arrays.deepToString(c));

        //第二种方式;
//        int[][] ints = new int[2][2];
//        ints[i][j] = __; //分别赋值

        //第三种方式:第二维的长度可以动态申请
        int[][] arr3 = new int[5][];
        for (int i = 0; i < arr3.length; i++) {
    
    
            arr3[i]= new int[i+1];
            for (int j = 0; j < arr3[i].length; j++) {
    
    
                arr3[i][j]= i+j;
                System.out.println("arr3[i][j]:"+arr3[i][j]);
            }
            System.out.println("arr3[i][j]:"+Arrays.toString(arr3[i]));
        }
    }
}

打印结果:

打印a的地址[[I@b2558153
嵌套打印b的地址[[I@5d1a7b26, [I@fe9889fa]
嵌套打印c[[0, 9, 8], [1, 2, 3]]
arr3[i][j]:0
arr3[i][j]:[0]
arr3[i][j]:1
arr3[i][j]:2
arr3[i][j]:[1, 2]
arr3[i][j]:2
arr3[i][j]:3
arr3[i][j]:4
arr3[i][j]:[2, 3, 4]
arr3[i][j]:3
arr3[i][j]:4
arr3[i][j]:5
arr3[i][j]:6
arr3[i][j]:[3, 4, 5, 6]
arr3[i][j]:4
arr3[i][j]:5
arr3[i][j]:6
arr3[i][j]:7
arr3[i][j]:8
arr3[i][j]:[4, 5, 6, 7, 8]

Process finished with exit code 0



[[I@5d1a7b26, [I@fe9889fa]这种输出结果是因为:
因为b是一个二维数组。相当于一个长度为2的数组,但是这个数组的元素是数组。
当执行Arrays.toString的时候相当于遍历数组,并且输出数组的元素,但是这个数组的元素是数组,所以这里输出的是数组元素的地址。

3. Java中对Array数组的常用操作

import java.util.*;

public class ArraysPrint {
    
    

    public static void main(String[] args) {
    
    
        //声明数组
        // String [] arr;
        int arr[];
        //初始化数组
        int arr2[]=new int[]{
    
    9,8,7,6,5,4};
        String[] array1={
    
    "马超","马云","关羽","刘备","张飞"};
        String[] array2=new String[]{
    
    "黄渤","张艺兴","孙红雷","小猪","牙哥","黄磊"};
        String[] array=new String[5];
        //查看数组的长度
        System.out.println("length:  "+array1.length);
        System.out.println("length:  "+array2.length);
        System.out.println("length:  "+array.length);

        //输出数组
        System.out.println(array1);     //结果:[Ljava.lang.String;@32f22097
        System.out.println("arr2:  "+ Arrays.toString(arr2));

        //遍历数组
        for (int i = 0; i < array1.length; i++) {
    
    
            System.out.println(array1[i]);
        }

        //int数组转成string数组
        int[]  array3={
    
    1,2,3,4,5,6,7,8,9,0};
        String arrStrings = Arrays.toString(array3);
        System.out.println("arrStrings:"+arrStrings);

        //从array中创建arraylist
        ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(array1));
        System.out.println("arrayList:"+arrayList);
        System.out.println("arrayList长度:"+arrayList.size());

        //数组转为列表,查看数组中是否包含某一个值
        String a="马超";
        if (Arrays.asList(array1).contains(a)){
    
    
            System.out.println("马超在这里");
        }

        //将数组转成set集合
        Set<String> set = new HashSet<String>(Arrays.asList(array2));
        System.out.println("set:"+set);

        //数组转为list集合
        List<String> list_1 = new ArrayList<String>();
        for (int i = 0; i < array2.length; i++) {
    
    
            list_1.add(array2[i]);
        }
        System.out.println("list_1:"+list_1);

        //Arrays.fill() 填充数组
        int[] arr3 = new int[5];
        Arrays.fill(arr3,10);
        System.out.println("arr3:"+arr3);
//        for (int i = 0; i < arr3.length; i++) {
    
    
//            System.out.println("arr3[3]"+ arr3[i]);
//        }

        //数组排序
        int[] arr4 = {
    
    2,3,4,5,6,8};
        Arrays.sort(arr4);
        System.out.println(Arrays.toString(arr4));
        System.out.println("arr4:"+ arr4);
//        for (int i = 0; i < arr4.length; i++) {
    
    
//            System.out.println("arr4[i]" + arr4[i]);
//        }

        //复制数组
        int[] arr6 = {
    
    2,3,4,5};
        int[] arr7 = Arrays.copyOf(arr6,10); //指定新数组的长度
        int[] arr8 = Arrays.copyOfRange(arr6,1,3);//只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)

        System.out.println(Arrays.toString(arr7));
        System.out.println(Arrays.toString(arr8));

        int[] arr9 = {
    
    1,2,3,4,5,6,7,8};
        boolean arr10 = Arrays.equals(arr6,arr9);
        System.out.println(arr10);

        //去重复
        //利用set的特性

        int[] arr11 = {
    
    1,2,2,6,3,3,4,7,5,5,6,9,6,4,7,8,8,9,5,9};
        Set<Integer> set2 = new HashSet<Integer>();
        for (int i = 0; i < arr11.length; i++) {
    
    
            set2.add(arr11[i]);
        }
        System.out.println(set2);

        //重新遍历
        int[] arr12 = new int[set2.size()];
        int j = 0;
        for (Integer integer:set2
             ) {
    
    
            arr12[j++] = integer;
        }
        System.out.println(Arrays.toString(arr12));

    }
}


输出结果:

扫描二维码关注公众号,回复: 13133009 查看本文章
length:  5
length:  6
length:  5
[Ljava.lang.String;@9e77591c
arr2:  [9, 8, 7, 6, 5, 4]
马超
马云
关羽
刘备
张飞
arrStrings:[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
arrayList:[马超, 马云, 关羽, 刘备, 张飞]
arrayList长度:5
马超在这里
set:[小猪, 牙哥, 黄渤, 黄磊, 孙红雷, 张艺兴]
list_1:[黄渤, 张艺兴, 孙红雷, 小猪, 牙哥, 黄磊]
arr3:[I@383479e
[2, 3, 4, 5, 6, 8]
arr4:[I@b9f0595f
[2, 3, 4, 5, 0, 0, 0, 0, 0, 0]
[3, 4]
false
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

猜你喜欢

转载自blog.csdn.net/weixin_45091011/article/details/114213456