JavaSE进阶:460-471 Date对象 数字格式 枚举

开始日期:2020-11-09

对日期的处理

返回当前日期

参考Python中的时间处理

https://blog.csdn.net/qq_43568982/article/details/105135381?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.channel_param

Date转String

package BUPT20201109;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) {
        Date nowtime = new Date();
        //已经重写了toString
        System.out.println(nowtime);
        //负责日期格式化
        //   yyyy年 MM月 dd 日 HH 分 ss秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String nowTimeStr=sdf.format(nowtime);
        System.out.println(nowTimeStr);
    }
}

Mon Nov 09 08:49:46 CST 2020
2020-11-09 08:55:26

String转Date

package BUPT20201109;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) throws Exception {
        String time = "2008-08-08";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
        //前面抛出异常这里才不报错
        Date DateTime = sdf2.parse(time);
        System.out.println(DateTime);
    }
}

统计时长

统计1970到现在的总毫秒数

package BUPT20201109;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) throws Exception {
        //从1970-1-1到当前时间的毫秒数
        long nowtime = System.currentTimeMillis();
        System.out.println(nowtime);
    }
}

可以用来统计时长

package BUPT20201109;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) throws Exception {
        //从1970-1-1到当前时间的毫秒数
        long begin = System.currentTimeMillis();
        for (int i = 0; i <100 ; i++) {
            System.out.println(i);
        }
        long end=System.currentTimeMillis();
        System.out.println(end-begin+"毫秒");
    }
}

通过毫秒构造Date对象

package BUPT20201109;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest02 {
    public static void main(String[] args) {
        Date Time = new Date(1);//参数是一个毫秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        System.out.println(sdf.format(Time));//北京是东八区,比标准格林尼治早8小时
    }
}

数字格式化

decimal

巧了,Python还是有这种东西,参考:
https://blog.csdn.net/qq_43568982/article/details/105135381

package BUPT20201109;

import java.text.DecimalFormat;

/*
#代表任意数字
,代表每千位分隔一次
0 不够时补零
. 代表小数点
 */
public class DecimalTest {
    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat("###,###.0000");
        //小数点后要么是### 要么是000 不能混用
        //返回的是字符串
        String s = df.format(134.5556);
        System.out.println(s);
    }
}

BigDecimal

属于Java对象,引用数据类型,不属于基本数据类型,用在财务软件中,保证高精度

package BUPT20201109;

import java.math.BigDecimal;

public class BigDecimalTest {
    public static void main(String[] args) {
        BigDecimal v1 = new BigDecimal(100);
        BigDecimal v2 = new BigDecimal(200);
        //求和不能直接相加,因为两个都是引用,调用add方法来求和
        System.out.println(v1.add(v2));
        System.out.println(v1.divide(v2));
    }
}

产生随机数

惊人的相似:参考Python
https://blog.csdn.net/qq_43568982/article/details/104541007
生成五个随机数(0-100),如果重复则重新生成

package BUPT20201109;

import java.util.Arrays;
import java.util.Random;

//随机生成五个0-100的随机数,如果重复则重新生成
public class RandomTest {
    public static void main(String[] args) {
        Random random = new Random();
        int[] arr = new int[5];
        for (int i = 0; i < 5; i++) {
            arr[i] = -1;
            //赋初值,不然分不清给的0是初始化的0还是随机生成的0
        }
        int index = 0;
        while (index < arr.length) {
            int num = random.nextInt(101);
            if (!contains(arr, num)) {
                arr[index++] = num;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    public static boolean contains(int[] arr, int key) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == key) {
                return true;
            }
        }
        //找不到返回的-1
        return false;
    }
}

枚举enum

不使用枚举的情况

package enumTest;

public class enumTest01 {
    public static void main(String[] args) {
        System.out.println(divide(10, 0));
    } 

    public static int divide(int a, int b) {
        try {
            //没有异常返回1,有异常返回0
            int c = a / b;
            return 1;
        } catch (Exception e) {
            return 0;
        }
    }
}

像上面这种返回不是1就是0的情况,用boolean更恰当

public static boolean divide(int a, int b) {
        try {
            //没有异常返回1,有异常返回0
            int c = a / b;
            return true;
        } catch (Exception e) {
            return false;
        }
    }

但如果方法返回的结果不只是true和false,此时需要用枚举类型来匹配

使用枚举的情况

package enumTest;

public class enumTest02 {
    public static void main(String[] args) {
        System.out.println(divide(100, 10));
    }

    public static Result divide(int a, int b) {
        try {
            int c = a / b;
            return Result.Tie;
        } catch (Exception e) {
            return Result.Fail;
        }
    }
}

//枚举中的每个值可以看做常量
enum Result {
    Success, Fail, Tie
}

这种情况也是两种情况,建议用boolean,但两种以上用枚举

package enumTest;

public enum Season {
    Spring, Summer, Autumn, Winter
}

package enumTest;

public class enumTest03 {
    public static void main(String[] args) {
        //switch支持枚举
        switch (Season.Autumn) {
            case Spring:
                System.out.println("春天");
                break;
            case Summer:
                System.out.println("夏天");
                break;
            case Autumn:
                System.out.println("秋天");
                break;
            case Winter:
                System.out.println("冬天");
                break;
        }
    }
}

结束时间:2020-11-09

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值