BD-13-day10-数组

静态初始化 int[] arr = new int[]{11,22,33};

动态初始化 int[] arr = new int[5];     //申请5个内存地址。

数组是引用类型,地址存放在栈中,数组元素是放在堆中。

内存中的存放情况:

地址a[1]表示现在指针指在a第二个地址指向数组第二个值。

插话:A ascii码 = 65,a = A+32 =97

初级题:

1.定义一个长度为10的int数组,统计数组中的最大值、最小值、以及奇数和偶数的个数,选择排序,反转数组;



package com.judy.demo;


public class ATest {
    public static void main(String[] args) {
        int[] arr = {5, 7, 1, 8, 6, 23, 9, 11, 56, 44};//数组初始化静态写法(简写的)
        asc(arr);
        System.out.println();
        reverse(arr);
        System.out.println();
        max(arr);
        min(arr);
        count(arr);

    }

    public static void reverse(int[] arr) {
        for (int i = 9; i >= 0; i--) {
            System.out.print(arr[i] + "  ");
        }
    }

    public static void count(int[] arr) {
        int oushu = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % 2 == 0) {
                oushu++;
            }

        }
        int jishu = arr.length - oushu;
        System.out.println("偶数=" + oushu + ",奇数=" + jishu);
    }

    public static void max(int[] arr) {
        int max_num = arr[0];
        for (int i = 1; i < arr.length; i++) {

            if (arr[i] > max_num) {
                max_num = arr[i];

            }
        }
        System.out.println("最大数=" + max_num);
    }

    public static void min(int[] arr) {
        int min_num = arr[0];
        for (int i = 1; i < arr.length; i++) {

            if (arr[i] < min_num) {
                min_num = arr[i];

            }
        }
        System.out.println("最小数=" + min_num);
    }

    public static void asc(int[] arr) { //升序

        for (int i = 0; i < arr.length; i++) {
            int min = arr[i];
            for (int j = i + 1; j < arr.length; j++) {
                if (min > arr[j]) {
                    int temp;
                    temp = min;
                    min = arr[j];
                    arr[j] = temp;
                }
            }
            arr[i] = min;
        }
        for (int a : arr)
            System.out.print(a + "  ");

    }
    
}



2.给定一个整型数组,数组成员10个,求该数组中第二大的数

函数返回值是数组时,用法如下:主要是用法,题目不重要,现在arr2和arr指向同一块地址空间,所以arr的值也变了



package com.judy.demo;


public class ATest {
    public static void main(String[] args) {
        int[] arr = {5, 7, 1, 8, 6, 23, 9, 11, 56, 44};
        int[] arr2 = asc(arr);
        for (int a : arr2) {
            System.out.print(a + "  ");
        }
         System.out.println();
        for (int a : arr) {
            System.out.print(+a + "  ");
        }
        System.out.println("\n arr数组中第二大的数是" + arr2[arr2.length - 2]);
    }

    public static int[] asc(int[] arr) { //升序

        for (int i = 0; i < arr.length; i++) {
            int min = arr[i];
            for (int j = i + 1; j < arr.length; j++) {
                if (min > arr[j]) {
                    int temp;
                    temp = min;
                    min = arr[j];
                    arr[j] = temp;
                }
            }
            arr[i] = min;
        }
        return arr;
    }

}



所以main可以直接写成:

public static void main(String[] args) {
        int[] arr = {5, 7, 1, 8, 6, 23, 46, 11, 56, 44};

        asc(arr);

        System.out.println();
        for (int a : arr) {
            System.out.print(+a + "  ");
        }
        System.out.println("\n arr数组中第二大的数是" + arr[arr.length - 2]);


    }

至于函数返回值是数组,但是可以直接调用而不设接收变量的原因我也不知道,我刚开始想着既然已经把原来数组的值改变了返回来,那这样直接输出,应该是成立的,所以就试了一下,果然可以,原因待解。

猜你喜欢

转载自blog.csdn.net/weixin_42474930/article/details/81324598
BD