Java知识点总结【2】数组

目录

 

1.数组的作用

2.数组的创建

3.数组的使用

4.数组作为方法的参数

5.数组作为方法的返回值

6.数组的相关练习

①整型数组转字符串

②二分法查找有序数组中某一元素

③数组逆序

④检查数组的有序性

⑤数组拷贝


1.数组的作用

能让我们批量创建相同类型的变量

2.数组的创建

下面这三种创建方式都是可以的

int[] arr1=new int[] {1,2,3,4};
int[] arr2={1,2,3,4};
int[] arr3=new int[4];

3.数组的使用

①获取长度(使用.length)

public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4};
        System.out.println(arr.length);   
    }
}

②访问元素

通过取下标的方式访问数组中的元素,注意下标不能越界。

for循环遍历数组

public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4};
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

for each遍历数组,如下

public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4};
        for(int x:arr){
            System.out.println(x);
        }
    }
}

运行结果:

4.数组作为方法的参数

举例:

public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4};
        printArr(arr);

    }
    public static void printArr(int[] arr) {
        for(int x:arr){
            System.out.println(x);
        }
    }
}

运行结果:

5.数组作为方法的返回值

示例:将数组中每个元素乘2

public class Pra0104 {
    public static void main(String[] args) {
        int[] arr1={1,2,3,4};
        int[] arr2=transform(arr1);
        for(int x:arr2){
            System.out.println(x);
        }

    }

    public static int[] transform(int[] arr1) {
        int[] arr2=new int[arr1.length];
        for(int i=0;i< arr1.length;i++){
            arr2[i]=arr1[i]*2;
        }
        return arr2;
    }

}

运行结果:

6.数组的相关练习

①整型数组转字符串

代码

import java.util.Arrays;
public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4};
        String str= Arrays.toString(arr);
        System.out.println(str);
    }
}

运行结果

②二分法查找有序数组中某一元素

具体思路,在之前C语言专栏中有写过

import java.util.Scanner;

public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={2,4,6,8,10};
        find(arr);
    }

    public static void find(int[] arr) {
        System.out.println("请输入要查找的数字");
        Scanner sc=new Scanner(System.in);
        int find=sc.nextInt();
        int left=0;
        int right=arr.length-1;
        while(left<=right){
            int mid=(left+right)/2;
            if(find<arr[mid]){
                right=mid-1;
            }else if(find>arr[mid]){
                left=mid+1;
            }else{
                System.out.println("找到了!下标是:"+mid);
                break;
            }
        }
        if(left>right){
            System.out.println("找不到!");
        }
    }
}

运行结果:

③数组逆序

设定两个下标,left和right

public class Pra0104 {
    public static void main(String[] args) {
        int arr[]={1,2,3,4};
        reverseArr(arr);
        //输出逆序后的数组
        for(int x:arr){
            System.out.println(x);
        }
    }

    public static void reverseArr(int[] arr) {
        int left=0;
        int right=arr.length-1;
        while(left<right){
            int temp=arr[left];
            arr[left]=arr[right];
            arr[right]=temp;
            left++;
            right--;
        }
    }
}

运行结果:

④检查数组的有序性

这里检查数组是否为升序,返回true或者false

public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4};
        System.out.println(isOrder(arr));
    }

    public static boolean isOrder(int[] arr) {
        for(int i=0;i<arr.length-1;i++){
            if(arr[i]>arr[i+1]){
                return false;
            }
        }
        return true;
    }
}

运行结果:

⑤数组拷贝

实现自己的拷贝方法

public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4};
        int[] newArr=copy(arr);
        for(int x:newArr){
            System.out.println(x);
        }

    }

    public static int[] copy(int[] arr) {
        int[] ret=new int[arr.length];
        for(int i=0;i<arr.length;i++){
            ret[i]=arr[i];
        }
        return ret;
    }
}

运行结果:

使用库中的

import java.util.Arrays;
public class Pra0104 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4};
        int[] newArr=Arrays.copyOf(arr,arr.length);
        System.out.println(Arrays.toString(newArr));
    }
}

运行结果:

注意:在拷贝的时候,可能还会存在疑问,为什么不直接int[] newArr=arr呢?这是因为这样直接赋值相当于,给原本的数组又起了一个别名,newArr指向arr指向的数组,所以实际还是同一个数组,并没有达到拷贝的效果,如下图

猜你喜欢

转载自blog.csdn.net/weixin_43939602/article/details/112325394
今日推荐