常用类--BigDecimal,Date,Calendar,SimpleDateFormat,System,Math,Random,Enum

常用类

BigDecimal类

案例:

public class Demo07 {
    public static void main(String[] args) {
        double d1 = 1.0;
        double d2 = 0.9;
        System.out.println(d1-d2);
    }
}
//结果:0.09999999999999998

精度丢失问题 近似数存储

BigDecimal类解决精度问题 精度计算浮点数

//BigDecimal   大的浮点数精确计算
        BigDecimal bd1 = new BigDecimal("1.0");//一定要用字符串
        BigDecimal bd2 = new BigDecimal("0.9");//一定要用字符串
        BigDecimal r1 = bd1.subtract(bd2);//减法运算,不是基本类型不能直接-  需要方法
        System.out.println(r1);
        //加
        BigDecimal r2 = bd1.add(bd2);
        System.out.println(r2);
        //乘
        BigDecimal r3 = bd1.multiply(bd2);
        System.out.println(r3);
        //除
        BigDecimal r4 = new BigDecimal("1.4")
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal("0.9"));
        System.out.println(r4);
        //如果除不尽  报异常 java.lang.ArithmeticException 需要我们设置保留几位小数
        BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2, RoundingMode.HALF_UP);//保留两位小数   四舍五入
        System.out.println(r5);
​
/*
结果:
​
0.1
1.9
0.90
1
3.33
​
*/

Date类

精确到毫秒 大部分方法已经被Calendar类中的方法取代

package studyObject.packet;
​
​
​
import java.util.Date;
​
public class DateStudy {
​
    public static void main(String[] args) {
        //今天
        Date date = new Date();
        System.out.println(date.toString());
        System.out.println(date.toLocaleString());
        //昨天
        Date date1 = new Date(date.getTime()-60*60*24*1000);
        System.out.println(date1.toLocaleString());
​
        boolean after = date.after(date1);//判断date是否是在date1后
        System.out.println(after);
        boolean before = date.before(date1);//判断date是否是在date1前
        System.out.println(before);
        int compareTo = date.compareTo(date1);//比较两个的毫秒值
        System.out.println(compareTo);
        boolean equals = date.equals(date1);//比较是否相等
        System.out.println(equals);
    }
​
}
/*
Mon Jul 17 21:34:05 GMT+08:00 2023
2023-7-17 21:34:05
2023-7-16 21:34:05
true
false
1
false
​
*/

Calendar类

提供获取或设置各种日历字段的方法

构造方法是protected 无法直接创建该对象

package studyObject.packet;
​
import java.util.Calendar;
​
public class CalendarStudy {
​
    public static void main(String[] args) {
        //Calendar对象无法直接创建  需要
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());//2023-7-17 21:40:07
        System.out.println(calendar.getTimeInMillis());//1689601240042  毫秒
​
        //获取时间信息
        //获取年
        int year = calendar.get(Calendar.YEAR);
        //月  从0开始  到11
        int mouth = calendar.get(Calendar.MONTH);
        //日
        int day = calendar.get(Calendar.DAY_OF_MONTH);//Date
        //小时
        int hour = calendar.get(Calendar.HOUR_OF_DAY);//HOUR_OF_DAY  24小时   Hour 12小时
        //分
        int minute = calendar.get(Calendar.MINUTE);
        //秒
        int second = calendar.get(Calendar.SECOND);
        System.out.println(year+"年"+(mouth+1)+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");//2023年7月17日21时47分46秒
​
        //修改时间
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(Calendar.DAY_OF_MONTH,5);
        System.out.println(calendar1.getTime().toLocaleString());//2023-7-5 21:52:06  日被修改
​
        //添加时间
        calendar1.add(Calendar.HOUR,1);
        System.out.println(calendar1.getTime().toLocaleString());//2023-7-5 22:53:27  添加了一个小时
        //减一个小时  就把1改-1
        //补充
        int max = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);//当前日的最大值
        int min = calendar1.getActualMinimum(Calendar.DAY_OF_MONTH);//当前日的最小值
        System.out.println(max);//31
        System.out.println(min);//1
    }
​
}
​

SimplDateFormat类

以与语言环境有关的方式来格式化和解析日期的具体类

进行格式化(日期->文本 解析(文本->日期

常用时间模式字母

y -》年 M --》年中月份 d--》月中天数 H--》一天中小时数(0-23)

m--》分钟 s--》秒 S--》毫秒

package studyObject.packet;
​
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
​
public class SimpleDateFormatStudy {
​
    public static void main(String[] args) throws ParseException {
        //创建对象
        // y -》年     M --》年中月份  d--》月中天数   H--》一天中小时数(0-23)
        //m--》分钟    s--》秒     S--》毫秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        //创建Date
        Date date = new Date();
        //格式化date
        String str = sdf.format(date);
        System.out.println(str);//2023年07月17日 22:28:51
        //解析
        Date date2 = sdf.parse("1990年12月15日 12:32:22");//格式要和上面一样
        System.out.println(date2);//Sat Dec 15 12:32:22 GMT+08:00 1990
    }
​
}
​

System类

系统类,主要用于获取系统的属性数据和其他操作,构造方法私有,不需要创建对象直接用

package studyObject.packet;
​
import java.util.Arrays;
​
public class SystemStudy {
​
    public static void main(String[] args) {
        //复制数组
        //src  原数组
        //srcPos  从原数组那个位置开始复制
        //dest:  目标数组
        //destPos  目标数组的位置
        //length  复制的长度
        int[] src={20,15,30,45,23,21,48,74};
        int[] dest=new int[8];
        System.arraycopy(src,0,dest,0,src.length);//
        for (int i = 0; i < dest.length; i++) {
            System.out.println(dest[i]);
        }
        //Arrays.copyOf()也是复制 他使用arraycopy来实现复制
​
        System.out.println(System.currentTimeMillis());//获得当前时间的毫秒数
​
//        System.gc();//告诉垃圾回收器回收垃圾,  是否回收看垃圾回收器自己
//        System.exit(0);//退出JVM  0正常退出  非0非正常退出
        
    }
​
}
​

Math类

对数值数据进行常见的数学操作 比如平方根 幂次 sin值等

使用:直接使用类名.方法名调用就行

Math类的构造方法是私有化,无法创建对象

package studyObject.packet;
​
public class MathStudy {
​
    public static void main(String[] args) {
        //获取绝对值
        int abs = Math.abs(-9);
        System.out.println(abs);//9
        //向上取整
        double ceil = Math.ceil(12.3);
        System.out.println(ceil);//13.0
        //向下取整
        double floor = Math.floor(12.3);
        System.out.println(floor);//12.0
        //四舍五入
        long round = Math.round(12.4);
        System.out.println(round);//12
        //返回一个随机数m   0.0<=  m <1.0
        double random = Math.random();
        System.out.println(random);//0.5102154436962966
​
    }
​
}
​

Random类

用来获取随机数

//创建随机对象
        Random random = new Random();
        System.out.println(random.nextInt(10));//2014176306  返回0 到10 之间的随机整数 左闭右开

枚举类 Enum

问题:

我们在声明变量记录数据,变量需要声明变量的类型,但是类型的声明不会限制变量的取值,就会出现:

String sex ;

我们只想sex接受男/女 但是我们赋值一个其他的字符串,语法上也是合理的

这样就会造成非法数据任然被接受,造成数据异常

解决:

在声明变量时需要指定变量的取值范围

实现:

枚举

枚举:

package studyObject.packet;
​
public enum MyEnum {
    男,女
}
​

调用:

package studyObject.packet;
​
public class TestEnum {
​
​
    public static void main(String[] args) {
        EnumStudy enumStudy = new EnumStudy("张三",MyEnum.男);
        //变量赋值必须使用枚举类.数据
    }
}
​

创建需要生成的对象

package studyObject.packet;
//枚举
​
/**
 *
 */
public class EnumStudy {
​
    private String uname;
    public MyEnum sex;
​
    //写出get set方法   重写toString  写出构造方法 
}
​

支持结合switch使用

使用场景,当我们需要对一个对象的取值范围限定时考虑使用枚举

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值