Java比较器和枚举类

Java比较器

java比较器是依据Comparable接口 ,大家可以看一下它的源码就是一个comparaTo()

方法,而且并没有做什么!

下面我就简单实现一下它

package com.day1;

import java.util.Arrays;

/*1.
 *
 */
public class day1 implements Comparable {
    int radius;
    String name;

    public day1(String name,int radius) {
        this.name=name;
        this.radius = radius;
    }

    @Override
    public String toString() {
        return "day1{" +
                "radius=" + radius +
                ", name='" + name + '\'' +
                '}';
    }

    public int getRadius() {
        return radius;
    }

    public void setRadius(int radius) {
        this.radius = radius;
    }

    public static void main(String[] args) {
        day1[] a = new day1[4];
        a[0] = new day1("a",1);
        a[1] = new day1("b",4);
        a[2] = new day1("c",2);
        a[3] = new day1("d",9);
        day1 x = new day1("a",4);
        day1 x1 = new day1("a",5);
        String []y =new String[]{"AA","CC","BB"};
        Arrays.sort(y);
        System.out.println(Arrays.toString(y));
        System.out.println(x.compareTo(x1));
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));

    }

    @Override
    public int compareTo(Object o) {
        System.out.println("******");
        if (o instanceof day1) {
            day1 day = (day1) o;
            if (radius > day.radius) {
                return -1;
            } else if (radius < day.radius) {
                return 1;
            } else {
                return -this.name.compareTo(day.name);
            }
        } else {
            throw new RuntimeException("输入的类型不一样");
        }
    }


}
class m{
    public static void main(String[] args) {
        day1[] a = new day1[4];
        a[0] = new day1("a",1);
        a[1] = new day1("b",4);
        a[2] = new day1("c",2);
        a[3] = new day1("d",9);
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
    }
}

枚举类

类的对象有限个且确定

当定义一组常量是强烈建议使用枚举类

1.先自定义枚举类

/*
* 1.自定义枚举类
*/
public class Enum {
    //1.属性用private final修饰
    private final String SeasonName;
    private final String SeasonDsc;
    //构造器用private修饰
    private Enum(String SeasonName,String SeasonDsc){
        this.SeasonDsc=SeasonDsc;
        this.SeasonName=SeasonName;
    }
    //对象用public static final 修饰
    public static final Enum SPRING = new Enum("春天","春暖花开");
    public static final Enum SUMMER = new Enum("夏天","夏日炎炎");
    public static final Enum AUTUMN = new Enum("秋天","秋风送爽");
    public static final Enum WINTER = new Enum("冬天","冰天雪地");

    @Override
    public String toString() {
        return "Enum{" +
                "SeasonName='" + SeasonName + '\'' +
                ", SeasonDsc='" + SeasonDsc + '\'' +
                '}';
    }

    public String getSeasonName() {
        return SeasonName;
    }
}
class EnumTest{
    public static void main(String[] args) {
        Enum spring = Enum.SPRING;
        System.out.println(spring);
    }
}

2.使用enum关键字以及Enum类的方法

使用enum关键字的类默认继承Enum类

public class Enum1 {
    public static void main(String[] args) {
        Enum2 summer = Enum2.SUMMER;
        //1.toString方法
        System.out.println(summer);
        //2.values()方法
        Enum2[] values = Enum2.values();
        for (Enum2 s:values) {
            System.out.println(s);
        }
        //3.valueof()方法,根据枚举类的对象名返回相应的对象
        System.out.println(Enum2.valueOf("WINTER"));
    }
}
interface info{
    void show();
}
//定义的枚举类,默认继承与Java.lang.Enum类
enum Enum2 implements info{
    //对象初始化必须在类的顶部
      SPRING("春天","春暖花开"){
        @Override
        public void show() {              //对于不同的对象有不同的继承方法
            System.out.println("");
        }
    },   //改为逗号
      SUMMER("夏天","夏日炎炎"){
          @Override
          public void show() {

          }
      },
      AUTUMN("秋天","秋风送爽"){
          @Override
          public void show() {

          }
      },
      WINTER("冬天","冰天雪地"){
          @Override
          public void show() {

          }
      };   //最后一个为分号
    //属性用private final修饰
     private final String SeasonName;
     private final String SeasonDsc;
    //构造器用private修饰
    private Enum2(String SeasonName,String SeasonDsc){
        this.SeasonDsc=SeasonDsc;
        this.SeasonName=SeasonName;
    }
    //toString方法不需要在重写了,会返回枚举类中的对象名!
//    @Override
//    public String toString() {
//        return "Enum{" +
//                "SeasonName='" + SeasonName + '\'' +
//                ", SeasonDsc='" + SeasonDsc + '\'' +
//                '}';
//    }

    public String getSeasonName() {
        return SeasonName;
    }


}

大家注意一下他们之间的关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小猪~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值