Day24 Java数组的使用举例

本文展示了如何使用Java进行数组操作,包括使用普通for循环遍历数组,计算数组元素之和,寻找最大值。此外,还演示了如何定义方法,将数组作为参数传入并返回反转后的数组,以及打印数组元素。通过这两个实例,深入理解Java中数组的基本操作和方法调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

普通循环

数组作方法入参及数组作返回值

例1:

//        用数组和普通for循环来解以下内容
//        计算所有元素的和
//        查找最大元素

package array;

public class ArrayDemo03 {
    public static void main(String[] args) {
//        用数组和普通for循环来解以下内容
        int[] arrays = {1,2,3,4,6};
//        1.打印全部元素
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);

        }
        System.out.println("==========");

//        计算所有元素的和
        int sum = 0;
        for(int i=0;i <arrays.length;i++){
//            sum= sum +arrays[i] ;
           sum+=arrays[i];//注意是+=,不是=+
        }
        System.out.println("sum="+sum);
        System.out.println("==========");
//        查找最大元素
        int max = arrays[0];
        for (int i = 0; i < arrays.length; i++) {
            if (arrays[i]>max){
                max =arrays[i];
            }

        } System.out.println("max="+max);
    }
    }


例2:

package array;
//目标:数组作方法入参及数组作返回值
//反转数组,并打印数组元素
public class ArrayDemo04 {

    public static void main(String[] args) {
    int[] arrays = {1,2,3,4,6};
//    for (int array : arrays){  //这里直接用arrays数组遍历,不过无法输出有下标
//        System.out.println(array);
        printArray(arrays);
        int[] reverse =reverse(arrays);
        printArray(reverse);
    }
//以下为方法

//反转数组
    public static int[] reverse(int[] arrays){
        int[] result =new int[arrays.length];
        for (int i = 0,j = arrays.length-1; i < arrays.length; i++,j--) {
            result[j] = arrays[i];

        }return result  ;//返回数组
    }
//    打印数组元素
    public static void printArray(int [] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);

        }
    }
    }


<think>嗯,用户想了解Java中枚举的使用。首先,我应该先回忆一下枚举的基本概念,然后整理出常见的用法和场景。枚举在Java中是用来定义固定数量的常量,比如星期几或者状态码之类的。可能需要从基础语法开始讲起,比如如何声明一个枚举类型,然后举几个例子说明。 接下来,用户可能想知道枚举的高级用法,比如添加方法和构造函数。比如,每个枚举实例可以有自己的属性,比如颜色枚举可能有十六进制代码。这时候需要说明枚举可以有构造方法,并且每个实例在定义的时候可以传入参数。 然后,可能需要提到枚举的方法。枚举可以有自己的方法,比如判断状态是否成功的方法。或者覆盖toString方法,让输出更友好。这部分需要举例说明,比如在状态枚举中添加一个isSuccess()的方法。 还有,枚举可以实现接口,这样不同的枚举可以共享相同的行为。比如日志级别的枚举实现一个接口,每个实例实现具体的方法。这里可能需要一个例子来说明如何实现接口。 另外,枚举在单例模式中的应用也是一个重点,因为枚举实例默认是线程安全且单例的,这样比传统的实现方式更简洁安全。需要解释为什么枚举单例是更好的选择,比如避免反射攻击和序列化问题。 还有switch语句中使用枚举的情况,这是很常见的用法,可以举一个根据枚举值执行不同操作的例子。 可能还要提到一些工具类,比如EnumSet和EnumMap,它们针对枚举做了优化,性能更好。比如用EnumSet代替普通的集合,或者用EnumMap来作为键的映射。 需要检查是否有遗漏的部分,比如枚举的ordinal()和values()方法,这两个方法的作用是什么,或者比较枚举的时候使用==还是equals,以及枚举的序列化机制等。 用户可能的疑问点包括:枚举和常量的区别,为什么用枚举而不是常量类,枚举的实际应用场景,如何遍历枚举值,如何处理枚举的持久化(比如数据库存储)等。可能需要简要提到这些内容,或者作为扩展点。 最后,要确保语言通俗易懂,例子简单明了,结构清晰,分点说明。避免使用过于专业的术语,或者适当解释术语。同时,注意代码示例的正确性和简洁性,让用户能够直接复制使用。</think>在 Java 中,**枚举(Enum)** 是一种特殊的数据类型,用于定义一组固定的常量。它比传统的常量(如 `public static final`)更安全、更易读,且支持方法、接口等面向对象特性。以下是枚举的常见用法和场景: --- ### **1. 基础语法** ```java public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } ``` - 每个枚举值都是 `Day` 类的实例,默认是 `public static final`。 - 直接通过 `Day.MONDAY` 调用。 --- ### **2. 枚举的进阶用法** #### **添加属性和方法** ```java public enum Color { RED("#FF0000"), GREEN("#00FF00"), BLUE("#0000FF"); private String hexCode; // 属性 // 构造方法(默认私有) Color(String hexCode) { this.hexCode = hexCode; } public String getHexCode() { return hexCode; } } // 使用 Color red = Color.RED; System.out.println(red.getHexCode()); // 输出 #FF0000 ``` #### **实现接口** ```java public interface Loggable { void log(); } public enum LogLevel implements Loggable { INFO { public void log() { System.out.println("信息日志"); } }, ERROR { public void log() { System.out.println("错误日志"); } }; } ``` #### **覆盖方法** ```java public enum Status { SUCCESS("成功"), FAILURE("失败"); private String desc; Status(String desc) { this.desc = desc; } @Override public String toString() { return this.desc; } } System.out.println(Status.SUCCESS); // 输出 "成功" ``` --- ### **3. 常用场景** #### **单例模式** 枚举天然线程安全且防止反射攻击,是单例的最佳实现方式: ```java public enum Singleton { INSTANCE; public void doSomething() { System.out.println("执行操作"); } } // 使用 Singleton.INSTANCE.doSomething(); ``` #### **Switch 语句** ```java Day today = Day.MONDAY; switch (today) { case MONDAY -> System.out.println("工作日开始"); case SATURDAY -> System.out.println("周末!"); default -> System.out.println("普通工作日"); } ``` #### **枚举工具类** - **EnumSet / EnumMap**:高效处理枚举集合。 ```java EnumSet<Day> weekdays = EnumSet.range(Day.MONDAY, Day.FRIDAY); EnumMap<Day, String> schedule = new EnumMap<>(Day.class); schedule.put(Day.MONDAY, "会议"); ``` --- ### **4. 枚举的常见方法** - `values()`:返回所有枚举值数组。 ```java for (Day day : Day.values()) { System.out.println(day); } ``` - `valueOf(String name)`:根据名称获取枚举实例。 ```java Day monday = Day.valueOf("MONDAY"); ``` - `ordinal()`:返回枚举值的声明顺序(从 0 开始)。 --- ### **为什么使用枚举?** 1. **类型安全**:避免无效的常量值。 2. **代码可读性**:名称自解释(如 `Day.MONDAY` 比 `1` 更直观)。 3. **功能扩展**:支持方法、接口、字段等。 4. **单例优化**:线程安全且简洁。 --- ### **总结** Java 枚举不仅用于定义常量集合,还能通过面向对象特性实现复杂逻辑。适合状态码、错误类型、配置选项等固定值的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值