java中的数组(2)

1.数组的使用场景

1.1保存数据

public static void main(String[] arsg){
        //使用数组保存数据
        int array[]={1,2,3};
        for(int i=0;i

1.2作为函数的参数

1.参数传基本数据类型

  public static void main(String[] args){
        int a=0;
        fun1(a);
        System.out.println(a);
    }
    public static int fun1(int a){
        a=90;
        return a;
    }

发现在fun方法中修改形参x的值,不影响实参的值

2.参数传数组类型(引用数据类型)

public static void main(String[] args){
        int[] arr=new int[]{1,2,3};
        System.out.println(arr[0]);
        fun(arr);
        System.out.println(arr[0]);
  }
  public static void fun(int[] arr){
        arr[0]=88;
        return;
  }

在fun方法内部修改数组的内容,方法外部的数组内容也发生改变。因为数组是引用类型的变量,按照引用类型来进行传递,是可以修改其中存放的内容的。

引用本质上只是存放了一个地址,传参时,数组传递的是堆上数组的地址。

1.3作为函数的返回值

获取斐波那契数列的前N项

public static void main(String[] args){
        int[] array=fib2(2);
        for(int j=0;j

2.数组练习

2.1数组转字符串

public static void main(String[] args){
        int[] arr=new int[]{1,2,3,5};
        String newArr=Arrays.toString(arr);
        System.out.println(newArr);

    }

使用这个方法让打印数组更加方便

2.2数组拷贝

public static void main(String[] args){
        int[] arr=new int[]{1,2,32,222,3321};
        int[] newarr=arr;
        newarr[0]=10;
        System.out.println("newarr"+Arrays.toString(arr));
        //newArr和arr引用的是同一个数组
        //因此newarr修改空间中的内容之后,arr也可以看见修改的结果
        newarr[0]=807;
        newarr=Arrays.copyOf(arr,arr.length);
        System.out.println("newarr"+Arrays.toString(arr));
        //使用Arrays中copyOf方法完成数组的拷贝;
        //此时,arr和newarr指向的不是同一块堆的区域,创建了一个新的数组
        arr[0]=10;
        System.out.println("arr"+Arrays.toString(arr));
        System.out.println("newarr"+Arrays.toString(newarr));
        //由输出的内容可见,两个引用指向的不是堆中的同一个空间
        //拷贝某个范围
         int[] array1=Arrays.copyOfRange(arr,1,3);
         System.out.println("array1"+Arrays.toString(array1));
         //拷贝的区间是左闭右开
    }

实现自己版本的拷贝数组

 public static void main(String[] args){
        int[] array=new int[]{1,2,3,44};
        int[] array1=mycopy(array);
        System.out.println(Arrays.toString(array1));
    }
    public static int[] mycopy(int[] array){
        int[] array1=new int[array.length];
        for(int i=0;i

2.3求数组元素的平均值

给定一个整型数组,求平均值

 public static void main(String[] args){
        int[] arr={1,2,3,43,544};
        System.out.println(fun1(arr));
    }
    public static double fun1(int[] arr){
        int sun=0;
        for(int i=0;i

2.4查找数组中的指定元素(顺序查找)

给定一个数组,一个元素,找出该元素在数组中的位置。

public static void main(String[] args){
        double[] arr=new double[]{2.22,3.22,121.3,232.212,232.4};
        System.out.println(find(arr,2.22));
    }
    public static int find(double[] arr,double a){
        int i=0;
        for(i=0;i

3.二维数组

基本语法

数据类型[][] 数组名称=new 数组类型[数组行数][数组列数]{初始化的数据}

public static void main(String[] args){
        int[][] arr=new int[][]{{1,2,3},{23,33,211}};
    }

二维数组的本质就是一维数组,与一维数组的使用没有太大差别。

你可能感兴趣的:(java,开发语言,算法)