数组(十一)

数组(十一)

我原本以为Java中的数组与Python中的list差不多,学习之后发觉还是有很大的区别的,总体感觉Java的数组限制要严格许多。

声明和创建数组

数组的创建有两种方式,静态创建(即创建出一个确定值的数组)和动态创建(即创建一个空的数组,可以后续往里面添加值)。

package com.luca.arrays;

public class ArrayDemo1 {
    public static void main(String[] args) {
        //静态创建
        int[] nums = {1, 2, 3, 4, 5};

        //动态创建
        //1.声明和创建分两步
        int[] nums2; //先声明一个数组
        nums2 = new int[5]; //然后创建一个数组

        //2.声明和创建放在一起
        int[] nums3 = new int[5];

        for (int i : nums3) {
            System.out.println(i); //这里nums3没有进行赋值,则会输出默认值0
        }
    }
}

关于栈和堆

我们创建一个数组,需要先声明然后创建(就是new),然后再往里面赋值;这当中就涉及到了栈和堆的概念。

image-20210210100745858

数组的使用

  1. 遍历数组中的值

    package com.luca.arrays;
    
    public class ArrayDemo2 {
        public static void main(String[] args) {
            int[] nums = new int[5];
            nums[0] = 1;
            nums[1] = 2;
            nums[2] = 3;
            nums[3] = 4;
            nums[4] = 5;
            //遍历数组
            //普通for循环遍历
            for (int i = 0; i < nums.length; i++) {
                System.out.print(nums[i]+" ");
            }
            System.out.println();
    
            //使用增强型for循环遍历
            for (int num : nums) {
                System.out.print(num+" ");
            }
    
        }
    }
    
  2. 方法参数和返回值为数组

    package com.luca.arrays;
    
    public class ArrayDemo3 {
        public static void main(String[] args) {
            int[] nums = {1, 2, 3, 4, 5};
            //遍历返回的新数组
            int[] result = revert(nums);
            for (int i: result) {
                System.out.print(i+" ");
            }
        }
    
        public static int[] revert(int[] arrays) {
            //将数组倒序存放在新数组result中并返回
            int[] result = new int[arrays.length];
            for (int i = 0, j = arrays.length - 1; i < arrays.length; i++, j--) {
                result[j] = arrays[i];
            }
    
            return result;
        }
    }
    

Arrays类的使用

  1. 常用方法1:toString() 打印数组

    package com.luca.arrays;
    
    import java.util.Arrays;
    
    public class ArrayDemo4 {
        public static void main(String[] args) {
            //Arrays类的使用
            int[] nums = {4, 99, 67, 123, 23, 77};
    
            //Arrays类常用方法:1.toString() 打印数组
            System.out.println(nums); //[I@28d93b30 直接打印的是数组对象的哈希值
            System.out.println(Arrays.toString(nums));
    
            printArray(nums); //打印效果:[4, 99, 67, 123, 23, 77]
    
        }
    
        //自己实现数组打印方法
        public static void printArray(int[] arrays) {
            if (arrays.length==0) {
                System.out.println("this is a empty array.");
            } else {
                for (int i = 0; i < arrays.length; i++) {
                    if (i==0) {
                        System.out.print("["+arrays[i]+",");
                    } else if (i==arrays.length-1) {
                        System.out.print(" "+arrays[i]+"]");
                    } else {
                        System.out.print(" "+arrays[i]+",");
                    }
    
                }
            }
        }
    }
    
  2. 常用方法2:fill() 填充数组

    package com.luca.arrays;
    
    import java.util.Arrays;
    
    public class ArrayDemo5 {
        public static void main(String[] args) {
            int[] nums = {4, 99, 67, 123, 23, 77};
    
            //Arrays类常用方法:2.fill() 填充
            //将数组所有的值都填充66
            Arrays.fill(nums, 66);
    
            System.out.println(Arrays.toString(nums)); //打印结果:[66, 66, 66, 66, 66, 66]
    
            //将数组第二个到第四之间填充77(不包含第四个)
            Arrays.fill(nums, 2, 4, 77);
    
            System.out.println(Arrays.toString(nums)); //打印结果:[66, 66, 77, 77, 66, 66]
    
        }
    }
    
  3. 常用方法3:sort() 排序数组

    package com.luca.arrays;
    
    import java.util.Arrays;
    
    public class ArrayDemo6 {
        public static void main(String[] args) {
            int[] nums = {4, 99, 67, 123, 23, 77};
    
            mySort(nums);
    
            //Arrays类常用方法 3.sort() 排序数组
            Arrays.sort(nums);
            System.out.println(Arrays.toString(nums)); //打印结果:[4, 23, 67, 77, 99, 123]
        }
    
        //自己实现冒泡排序方法
        public static void mySort(int[] arrays) {
            for (int i = 0; i < arrays.length-1; i++) {
                for (int j = 0; j < arrays.length-i-1; j++) {
                    if (arrays[j] > arrays[j+1]) {
                        int cont = arrays[j];
                        arrays[j] = arrays[j+1];
                        arrays[j+1] = cont;
                    }
                }
            }
            System.out.println(Arrays.toString(arrays));
        }
    }
    
posted @ 2021-02-10 14:38  LucaZ  阅读(43)  评论(0编辑  收藏  举报