百度笔试题目及答案,【Java知识点详解 5(1)

关于枚举与switch是个比较简单的话题,使用switch进行条件判断时,条件参数一般只能是整型,字符型。而枚举型确实也被switch所支持,在java 1.7后switch也对字符串进行了支持。这里我们简单看一下switch与枚举类型的使用


​static void testSwitch(Week week){

    switch (week){

        case MONDAY:

            System.out.println(week.getMeaning());

            break;

        case TUESDAY:

            System.out.println(week.getMeaning());

            break;

        case WEDNESDAY:

            System.out.println(week.getMeaning());

            break;

        case THURSDAY:

            System.out.println(week.getMeaning());

            break;

        case FRIDAY:

            System.out.println(week.getMeaning());

            break;

        case SATURDAY:

            System.out.println(week.getMeaning());

            break;

        case SUNDAY:

            System.out.println(week.getMeaning());

            break;

        default:

            System.out.println("您输入有误");

            break;

    }

}



​

四、枚举的常用方法

=========

==================================================================================================================================================================================================

1、枚举类



enum Weekday {

    SUNDAY(0),

    MONDAY(1),

    TUESDAY(2),

    WEDNESDAY(3),

    THURSDAY(4),

    FRIDAY(5),

    SATURDAY(6);

    

    private int value;

    

    Weekday(int value) {

        this.value = value;

    }

}

2、枚举类变量中添加属性



enum Week{

    SUNDAY(0,"星期日"),

    MONDAY(1,"星期一"),

    TUESDAY(2,"星期二"),

    WEDNESDAY(3,"星期三"),

    THURSDAY(4,"星期四"),

    FRIDAY(5,"星期五"),

    SATURDAY(6,"星期六");



    private int id;

    private String meaning;



    Week(int id,String meaning) {

        this.id = id;

        this.meaning = meaning;

    }

}

3、测试类



public static void main(String[] args) {

        //1、ordinal(),枚举顺序值

        System.out.println("枚举顺序值,"+Weekday.MONDAY.ordinal());//1



        /*

         * 2、valueOf()

         * public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)

         * enumType -- 这是枚举类型,返回一个常量的类的对象。

         * name -- 这是常量,要返回的名称。

         * return:此方法返回具有指定名称的枚举类型的枚举常量。

         * 如果你传了一个不存在的字符串,那么会抛出异常。

         * */

        Week week = Enum.valueOf(Week.class,Week.MONDAY.name().toString());

        Week week1 = Week.valueOf(Week.class,Week.MONDAY.name());

        System.out.println("Enum.valueOf,"+week);//MONDAY

        System.out.println("Week.valueOf,"+week1);//MONDAY



        //3、values()

        System.out.println("Week.values(),"+Weekday.values());//返回一个Weekday数组,[Ljavase.enumeration.Weekday;@2a84aee7



        //4、通过compareTo方法比较,实际上其内部是通过ordinal()值比较的

        System.out.println("Weekday.MONDAY.compareTo(Weekday.TUESDAY),"+Weekday.MONDAY.compareTo(Weekday.TUESDAY));//false



        //5、获取该枚举对象的Class对象引用,当然也可以通过getClass方法

        Class<?> declaringClass = Weekday.MONDAY.getDeclaringClass();

        System.out.println("获取该枚举对象的Class对象引用,"+declaringClass);//javase.enumeration.Weekday



        //6、通过getEnumConstants()获取该枚举类型的所有元素,如果Class对象不是枚举类型,则返回null。

        Object[] enumConstants = declaringClass.getEnumConstants();

        //枚举类个数,Weekday.values().length)

        for (int i = 0; i < Weekday.values().length; i++) {

            System.out.println("getEnumConstants,"+enumConstants[i]);//SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY

        }



        //7、判断是否是枚举类型

        System.out.println("declaringClass.isEnum(),"+declaringClass.isEnum());//true



        //8、获取枚举变量的属性

        System.out.println("编号,"+Week.MONDAY.getId()+",含义,"+Week.MONDAY.getMeaning());

    }

4、向上转型



//9、向上转型Enum

Enum e = Weekday.FRIDAY;

这个东西意义何在,有待研究。

5、部分方法源码介绍


(1)valueof


public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name) {

    T result = enumType.enumConstantDirectory().get(name);

    if (result != null)

        return result;

    if (name == null)

        throw new NullPointerException("Name is null");

    throw new IllegalArgumentException(

        "No enum constant " + enumType.getCanonicalName() + "." + name);

}

(2)compareTo


public final int compareTo(E o) {

    Enum<?> other = (Enum<?>)o;

    Enum<E> self = this;

    if (self.getClass() != other.getClass() && self.getDeclaringClass() != other.getDeclaringClass())

        throw new ClassCastException();

    return self.ordinal - other.ordinal;

}

五、枚举类中定义抽象方法

============

1、定义抽象方法



package javase.enumeration;



public enum Season{

    SPRING("1"){

        @Override

        public Season getNextSeason() {

            return SUMMER;

        }

    },

    SUMMER("4"){

        @Override

        public Season getNextSeason() {

            return AUTUMN;

        }

    },

    AUTUMN("7"){

        @Override

        public Season getNextSeason() {

            return WINTER;

        }

    },

    WINTER("10"){

        @Override

        public Season getNextSeason() {

            return SPRING;

        }

    };



    private String monthStart;

    private Season(String monthStart){

        this.monthStart = monthStart;

    }



    public abstract Season getNextSeason();

}

2、测试类



class Test{

    public static void main(String[] args) {

        System.out.println("SPRING下一个季节是:"+Season.SPRING.getNextSeason());

    }

}

3、控制台输出


六、实现接口

=======

1、接口



package javase.enumeration;



public interface Study {

    void StudyJava();

    void StudyDataStrucure();

    void StudyDesignMode();

    void StudySpring();

} 

2、实现接口



enum Week implements Study{

    SUNDAY(0,"星期日"),

    MONDAY(1,"星期一"),

    TUESDAY(2,"星期二"),

    WEDNESDAY(3,"星期三"),

    THURSDAY(4,"星期四"),

    FRIDAY(5,"星期五"),

    SATURDAY(6,"星期六");



    private int id;

    private String meaning;



    Week(int id,String meaning) {

        this.id = id;

        this.meaning = meaning;

    }



    public int getId() {

        return id;

    }



    public void setId(int id) {

        this.id = id;

    }



    public String getMeaning() {

        return meaning;

    }



    public void setMeaning(String meaning) {

        this.meaning = meaning;

    }



    @Override

    public String toString() {

        return "Week{" +

                "id=" + id +

                ", meaning='" + meaning + '\'' +

                '}';

    }



    @Override

    public void StudyJava() {

        System.out.println(this+"学习java");

    }



    @Override

    public void StudyDataStrucure() {

        System.out.println(this.meaning+"学习数据结构");

    }



    @Override

    public void StudyDesignMode() {

        System.out.println(this.meaning+"学习设计模式");

    }



    @Override

    public void StudySpring() {

        System.out.println(this.meaning+"学习Spring框架");

    }

}

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

资料免费领取方式:点赞关注后,戳这里免费领取

重要的事说三遍,关注+关注+关注!

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

image.png

更多笔记分享

}



@Override

public void StudyDesignMode() {

    System.out.println(this.meaning+"学习设计模式");

}



@Override

public void StudySpring() {

    System.out.println(this.meaning+"学习Spring框架");

}

}



# 面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

**以下最新总结的阿里P6资深Java必考题范围和答案**,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

**资料免费领取方式:点赞关注后,[戳这里免费领取](https://gitee.com/vip204888/java-p7)**

**重要的事说三遍,关注+关注+关注!**

[外链图片转存中...(img-J33SDKDH-1628234057747)]

[外链图片转存中...(img-XBtiftsr-1628234057751)]



**更多笔记分享**

![历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer](https://img-blog.csdnimg.cn/img_convert/80c213c690bd5aa94c079377aa5e1a95.png)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值