《JAVA筑基》第30天:JAVA高级技术-内部类4(静态内部类)

7,623 阅读2分钟

​​持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

❤️作者主页:小虚竹

❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆

❤️技术活,该赏

❤️点赞 👍 收藏 ⭐再看,养成习惯

PC端主页可联系我,欢迎问题咨询和技术交流!

零、前言

我的学习策略很简单,题海策略+ 费曼学习法。如果能把这100题都认认真真自己实现一遍,那意味着 JAVA语言 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。

题目描述:JAVA高级技术-内部类4(静态内部类)

一、题目

题目:在类中,除以可以定义参数,方法和块,还可以定义类。这种类叫做内部类。

实现:使用静态内部类来实现使用一次遍历求最大值和最小值。

二、解题思路

写一个求最大值最小值的类:MaxMin

在MaxMin类中,定义一个静态内部类:Result

然后在该类中定义两个参数,一个是max,表示最大值。一个是min,表示最小值。

写这两个参数的get方法和通过构造方法初始化值。

再定义一个静态方法,返回的类型是Result。这样返回的值同时包含最大值和最小值。

静态内部类是使用static修饰的内部类。

三、代码详解

最大值最小值的类MaxMin:

public class MaxMin {

    public static class Result {
        private int max;
        private int min;

        public Result(int max, int min) {
            this.max = max;
            this.min = min;
        }

        public int getMax() {
            return max;
        }

        public int getMin() {
            return min;
        }
    }

    public static Result getResult(int[] array) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        for (int i : array) {
            if (i > max) {
                max = i;
            }
            if (i < min) {
                min = i;
            }
        }
        return new Result(max, min);
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        int[] array = new int[5];
        Random random = new Random();
        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(100);
        }
        System.out.println("源数组:");
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
        System.out.println("最大值:" + MaxMin.getResult(array).getMax());
        System.out.println("最小值:" + MaxMin.getResult(array).getMin());
    }
}

如图

多学一个知识点

在静态内部类中,可以使用外部类定义的静态变量。但是不能使用非静态变量,这个是静态内部类与非静态内部类的区别。