Java基础-----Math类相关的API(二)

请添加图片描述

1.Enum

1.1 简介

Enum枚举:就是我们所说的 列举,从给定的值中列举,通常都是有固定值,只能从固定值中去做选择。

比如:商品有入库IN和出库OUT状态;性别有男女之分;一周有周一到周日等等可列举的。

1.2 语法

语法:[修饰符] enum 枚举名{}

比如:商品有入库和出库状态

//商品类
public class Goods {
    private Integer id;//商品的id
    private String name;//商品的名字
    private StatusEnum status;//0:出库状态   1:入库状态

    //构造方法
    //Getter()和Setter()方法
    //toString()方法
}

测试一下:

Goods goods=new Goods(1,"手机",0);

但是这样容易出现用户误操作的情况。我们定义的是0:出库状态 1:入库状态,用户在输
入的时候可能输入2或者3或者其他数字,也就不符合我们定义的初衷了。

那我们如何避免这种情况呢?

我们可以把状态写成IN(入库)或者OUT(出库),这样我们就使用到了枚举Enum。

我们可以创建Enum枚举类。

在这里插入图片描述

public enum StatusEnum {
    IN,OUT
}

那我们上面那段代码就可以修改成:

Goods goods=new Goods(1,"手机",StatusEnum.IN);

在这里插入图片描述
这样我们就实现了枚举。

1.3 相关方法

  • values():以数组形式返回枚举类型的所有成员

  • valueOf():将字符串转换成枚举实例

  • ordinal():获取枚举成员的索引

  • compareTo():比较两个枚举成员的在定义时的顺序

枚举类:

public enum StatusEnum {
    IN(1,"入库"),OUT(2,"出库");
    private String name;//状态名称
    private Integer index;//状态索引
    
    StatusEnum(Integer index,String name) {
        this.index=index;
        this.name=name;
    }
}
//values():以数组形式返回枚举类型的所有成员
        StatusEnum[] values = StatusEnum.values();
        for (StatusEnum value : values) {
            System.out.print(value+"\t\t");//IN   OUT
        }
//ordinal()//获取枚举成员的索引位置
        System.out.println(StatusEnum.IN.ordinal());//0
        System.out.println(StatusEnum.OUT.ordinal());//1

注意这里输出的索引位置是0和1,不是我们所定义的IN(1,“入库”),OUT(2,“出库”),注意区分。

//compareTo():比较两个枚举成员的在定义时的顺序
        int i = StatusEnum.IN.compareTo(StatusEnum.OUT);
        System.out.println(i);//-1  因为IN在OUT的前面
        int i1 = StatusEnum.OUT.compareTo(StatusEnum.IN);
        System.out.println(i1);//1
        int i2 = StatusEnum.IN.compareTo(StatusEnum.IN);
        System.out.println(i2);//0

1.4 详看Enum

我们来反编译一下StatusEnum类(javap命令)

t1.StatusEnum> {
  public static final com.coder.enumtest1.StatusEnum IN;
  public static final com.coder.enumtest1.StatusEnum OUT;
  public static com.coder.enumtest1.StatusEnum[] values();
  public static com.coder.enumtest1.StatusEnum valueOf(java.lang.String);
  static {};
}

从上面可以看出:

    1. 所有枚举类型,实际上是继承了java.lang.Enum类
      在这里插入图片描述
    1. 枚举中定义的实际是常量(都是final 来修饰的)
    1. 枚举在switch中的应用 , 在switch中可以放byte short int char String 枚举类型
//枚举在switch中的应用
        StatusEnum[] values = StatusEnum.values();
        int i= new Random().nextInt(2);
        switch (values[i]){
            case IN:
                System.out.println("入库");
                break;
            case OUT:
                System.out.println("出库");
                break;
        }

2.Timer

类似于我们手机中的闹钟,在定时任务中,我们要用到Timer

在这里插入图片描述

我们可以看到Timer的schedule()方法中,有这几种参数类型:

在这里插入图片描述

public class Task extends TimerTask {
    @Override
    public void run() {
        System.out.println("hello China");

    }
}

public class Test {
    public static void main(String[] args) {
        Task task=new Task();
        Timer timer=new Timer();
        timer.schedule(task,1000);//延迟1秒钟
    }
}
public class Test {
    public static void main(String[] args) {
        Task task=new Task();
        Timer timer=new Timer();
        timer.schedule(task,0,1000);//不延迟,间隔时间为1秒钟(也就是每隔1秒钟打印一次hello China)
    }
}

由于这个类我们只使用一次,我们可以考虑把它写成匿名内部类

public class Test {
    public static void main(String[] args) {
        Timer timer=new Timer();
        //写成内部匿名类
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("hello China");
            }
        },0,1000);

    }
}

划重点啦啦啦啦!!!!
Timer只适用于单线程任务。
对于取消该定时器的话,会有一个cancel()方法,但是这个方法需要遇到事件触发它,才可以使用

3.System

java.lang.System系统

方法:

currentTimeMills():获取从1970-01-01  00:00:00到现在的毫秒数

exit():退出java虚拟机   0代表正常退出 ,否则异常退出

getenv(String):获取指定的环境变量

getPropert(String):获取系统属性

getProperties():获取所有系统属性

arraycopy(,源索引,目标,目标索引,长度):从源数组指定索引位置复制给定长度到目标数组的索引位置

gc():执行垃圾回收
  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
commons-math3是一个Java库,提供了一组用于数值计算和数学处理的API。该库由Apache软件基金会开发和维护,是一个开源项目。 commons-math3提供了各种数值计算的功能,包括数学函数、线性代数、随机数生成、插值、优化、微分方程、统计和概率等。它提供了大量的方法和,可以进行各种数学运算和数据分析。使用这些API可以快速有效地处理和解决各种数学问题。 这个库的API非常丰富和易于使用。它包含了许多常用函数和运算符的实现,如加减乘除、幂、三角函数、指数函数等。它还提供了矩阵和向量的操作方法,如矩阵乘法、转置、求逆、行列式等。它也提供了各种插值算法,如拉格朗日插值和样条插值,以及各种优化算法,如线性规划和非线性规划。 除了基本数学功能外,commons-math3还提供了一些高级功能。例如,它可以生成各种型的随机数,包括均匀分布、正态分布和泊松分布等。它还提供了一些用于求解微分方程的方法,可以模拟和预测物理系统的行为。此外,它还提供了一些统计和概率分布的方法,如计算均值、方差、概率密度等。 总的来说,commons-math3是一个功能丰富的数值计算和数学处理库。它具有丰富的API和易于使用的特点,可以帮助开发人员快速处理各种数学问题。无论是进行简单的计算还是解决复杂的数学难题,commons-math3都是一个非常有用的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值