java中的数组

1、数组作为函数的返回值
例1:写一个方法, 将数组中的每个元素都 * 2

public class TestDome {
    public static int[] sum(int[] array1){
        int[] array2 = new int[array1.length];
        for(int i = 0; i < array1.length; i++) {
            array2[i] = array1[i] * 2;
        }
        return array2;
    }
    public static void main(String[] args) {
        //写一个方法, 将数组中的每个元素都 * 2
        int[] array1 = {1,2,3,4,5,6};
        int[] ret = sum(array1);
        System.out.println(Arrays.toString(ret));
    }
}

由于数组是引用类型, 返回的时候只是将这个数组的首地址返回给函数调用者, 没有拷贝数组内容, 从而比较高

2、数组练习
2.1、数字转字符串

public static void main(String[] args) {
        //数组转字符串
        int[] array = {1,2,3,4,5,6};
        System.out.println(Arrays.toString(array));
    }

java中方法的返回类型是枚举类型 java方法返回值为数组_开发语言


Arrays.toString()这是一个方法,将数字转换成字符串

接下来我们实现一个自己的转换方法MytoString()

我们看到打印出来是[1,2,3,4,5,6]是这个样子的,打印一个元素加上一个“,”(逗号),最后一个元素打印不加上“,”就行了,再将“[ ]”中括号加上去,这样就得到了 字符串。

public static String MytoString(int[] array){
        if(array == null || (array.length == 0)){
            return null;
        }
        String ret = "[";
        for (int i = 0; i < array.length; i++) {
            ret += array[i];
            if(i != array.length){
                ret += ",";
            }
        }
        ret += "]";
        return ret;
    }
    public static void main(String[] args) {
        //数组转字符串
        int[] array = {1,2,3,4,5,6};
        System.out.println(MytoString(array));
    }

java中方法的返回类型是枚举类型 java方法返回值为数组_开发语言_02


2.2、数组拷贝

就是将一个数组拷贝到另一个新的数组当中那个去

这是用for循环来实现,得到array的么每个 元素,将他赋值到ret这个新数组中去

public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
        int[] ret = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            ret[i] = array[i];
        }
        System.out.println("ret为:"+Arrays.toString(ret));
    }

java中方法的返回类型是枚举类型 java方法返回值为数组_java_03


那java中有没有用方法来实现呢???

public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
        int[] ret = Arrays.copyOf(array,array.length);
        System.out.printf(Arrays.toString(ret));
    }

java中方法的返回类型是枚举类型 java方法返回值为数组_java_04


Arrays.copyOf():这是拷贝数组的方法

Arrays.copyOf(数组名,数组大小);

那可不可以 拷贝 一个 数组中有个范围的元素呢???

public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
        int[] ret = Arrays.copyOfRange(array,1,5);
        System.out.printf(Arrays.toString(ret));
    }

java中方法的返回类型是枚举类型 java方法返回值为数组_数组_05


Arrays.copyOfRange();

Arrays.copyOfRange(数组名,拷贝的起始位置,拷贝的终止位置); from: 1 to: 5,意思是拷贝数组的1到5范围的元素,但是这是一个左闭右开区间[1 , 5)不包含5位置的元素。

3、二维数组
二维数组实际上是一种特殊的一维数组,他的没每个 元素是由一维 数组组成的

java中方法的返回类型是枚举类型 java方法返回值为数组_排序算法_06


上图中我们可以看到array[0],array[1],代表的两哥一维数组,这样我们就可确定二维数组的行数array.lenght ,array[0].lenght 表示第一行的列数。

2.1、二维数组的定义与使用

int[][] array1 = {{1,2,3},{4,5,6}};
       int[][] array2 = new int[2][3];
       int[][] array3 = new int[][]{{1,2,3},{4,5,6}};

二维数组中的[ ] 中也不能写数值

java中方法的返回类型是枚举类型 java方法返回值为数组_java_07

打印数组中的每个数:

java中方法的返回类型是枚举类型 java方法返回值为数组_排序算法_08


使用Arrays.deepToString打印数组

java中方法的返回类型是枚举类型 java方法返回值为数组_数组_09

java中方法的返回类型是枚举类型 java方法返回值为数组_开发语言_10


java中方法的返回类型是枚举类型 java方法返回值为数组_排序算法_11

我们可以看到 二维数组 中的列可以省略,行不可以省略

java中方法的返回类型是枚举类型 java方法返回值为数组_java_12


这是不规则数组,第一行只有两个元素,,第二行有三个元素,所以说明了行不能省略不规则二维数组

java中方法的返回类型是枚举类型 java方法返回值为数组_开发语言_13


java中方法的返回类型是枚举类型 java方法返回值为数组_java中方法的返回类型是枚举类型_14