系统学习JAVA第十五天(Match类下的方法,日期相关类,处理异常)

系统学习JAVA第十五天

一、数字相关类

1、Match类下的方法
//pow计算次方的,pow(10,2)计算10的平方为100.0
System.out.println(Math.pow(10,2));
//输出E的值2.718281828459045
System.out.println(Math.E);
//输出PI(Π)的值3.141592653589793
System.out.println(Math.PI);
//sqrt计算平方根,sqrt(9)计算9的的平方根为3.0
System.out.println(Math.sqrt(9));
//floor向下取整floor(8.9)向下取整后的值为8.0
System.out.println(Math.floor(8.9));
//floor向上取整floor(8.1)向上取整后的值为9.0
System.out.println(Math.ceil(8.1));
//round是四舍五入round(4.1)四舍五入后的值为4
System.out.println(Math.round(4.1));
//随机输出一个0-10之间的整数
//Math.random()默认时是输出0-1之间的一个随机数
//Math.random()*10输出0-10之间的一个随机数(包括小数)
//new Double(Math.random()*10)新建一个Double的对象
//new Double(Math.random()*10).intValue()调用Doble包装类的方法,将double类型的数字转换成整数
System.out.println(new Double(Math.random()*10).intValue());
2、小数之间的运算float,double为不精确的小数
//输出为62.800000000000004
System.out.println(3.14*2*10); 
//输出为0.060000000000000005
System.out.println(0.01+0.05);  
//输出为0.5800000000000001
System.out.println(1.0-0.42);  
//输出为1.2233
System.out.println(122.33/100); 
3、数字之间的精确运算,所以要通过BiDecimal方法进行精确华处理
//新建BigDecimal对象b1和b2
BigDecimal b1 = new BigDecimal("7");
BigDecimal b2 = new BigDecimal("3");
//BigDecimal的加方法,得到的值为10
System.out.println(b1.add(b2));
//BigDecimal的减方法,得到的值为4
System.out.println(b1.subtract(b2));;
//BigDecimal的乘方法,得到的值为21
System.out.println(b1.multiply(b2));
//BigDecimal的除方法,得到的值为2.3333333,如果不加MathContext.DECIMAL32就会报错,因为7除3是得到的值是无限循环小数,加了MathContext.DECIMAL32就有了限制输出就不不会报错了
System.out.println(b1.divide(b2,MathContext.DECIMAL32));
4、数字如何按照指定格式输出——字符串
//想要输出的格式,当整数位有值且为多位时输出:555,444,333.00
//当整数位有值且为0时输出:0.00
//当整数位有值且为多位,小数位也有值但只输出2位小数时输出:555,444,333.93
//DecimalFormat相当于模板给数字的输出规定格式想要达到上述效果",##0.00"就可以了
DecimalFormat df = new DecimalFormat(",##0.00");
//想要使用该格式只需要使用DecimalFormat的对象调用format方法即可
String s = df.format(b1.divide(b2, MathContext.DECIMAL32));
System.out.println(s);

二、日期相关类

1、日期(年-月-日 时:分:秒)
//输出为Sat Jan 30 01:44:48 GMT+08:00 2021
Date date = new Date();
System.out.println(date);

能用Date类获取到当前系统的时间,但是不符合我们的显示方式,我们习惯的显示方式应该是这样的(2021-01-29 20:57:34)

Date————>String
//年    year    y
//月    month   M
//日    day     d  D一年中的第几天
//小时  hour    h是12小时进制   H是24小时进制
//分钟  minute  m
// 秒   second  s是秒          S是毫秒
//将当前系统的时间转换成字符串      
//日期按照指定格式输出,转换后结果的数据类型是字符串类型
//SimpleDateFormat相当于模板给日期的输出规定格式,想要达到上述我们习惯的方式"YYYY-MM-dd hh:mm:ss"就可以了
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd hh:mm:ss");
//想要使用该格式只需要使用SimpleDateFormat的对象调用format方法即可
String s = sdf.format(date);
System.out.println(s);
String————>Date
//定义应该str字符串
String str = "2021-01-22 15:30:20";
//SimpleDateFormat相当于模板给日期的输出和转换规定格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//加上try catch是因为parse的原因,它是将字符串类型的str转换成日期类型的date,但是这个转换有个要求就是字符串str必须符合SimpleDateFormat规定的格式,因为不知道你设定的字符串是什么样子的,所以使用try catch来消除非运行时的报错,将可能出错的代码放在try中
try {
//如果下面这句代码报错了,那么将直接跳到catch,这句代码下面的其他代码都不会再执行
    Date date = sdf.parse(str);
    System.out.println(date);
//catch会捕获出现的错误
} catch (ParseException e) {
    e.printStackTrace();
}
2、日历
//输出为java.util.GregorianCalendar[time=1611944213730,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=0,WEEK_OF_YEAR=5,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=30,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=2,HOUR_OF_DAY=2,MINUTE=16,SECOND=53,MILLISECOND=730,ZONE_OFFSET=28800000,DST_OFFSET=0]

//提取一下就是 年YEAR=2021 月MONTH=0(日历中月份是从0开始的所以要加一) 
//日DAY_OF_MONTH=30 小时HOUR=2(12进制的) HOUR_OF_DAY=2(24进制的) 分钟MINUTE=16 秒SECOND=53
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
get可以获取某个字段上的值
//得到年份
System.out.println(calendar.get(Calendar.YEAR));
//得到月份
System.out.println(calendar.get(Calendar.MONTH)+1);
//得到天
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//得到24进制的小时
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
//得到分钟
System.out.println(calendar.get(Calendar.MINUTE));
清空和set
//在原来的日历对象的基础上进行的修改,可以先清空
calendar.clear();
//设置年份为2012
calendar.set(Calendar.YEAR,2012);
/设置年份为2018,月份为5月,日为第五日
calendar.set(2018,5,1);
//输出
System.out.println(calendar);
计算时间间隔后的时间
//1年,3个月,20天之后是哪一天!!!!!!
//通过add计算一个时间段后,具体的是哪一天
calendar.add(Calendar.YEAR,1);
calendar.add(Calendar.MONTH,3);
calendar.add(Calendar.DAY_OF_MONTH,20);
System.out.println(calendar);

有用的数据也就只是那几个,而且为了方便我们看明白,还是需要对其进行格式化

Calendar————>Date————>String
//SimpleDateFormat相当于模板给日期的输出规定格式,想要达到上述我们习惯的方式"YYYY-MM-dd hh:mm:ss"就可以了
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//因为simpleDateFormat.format()不能直接将Calendar类型的数据转换为字符串
//所以先调用calendar的方法getTime()将Calendar类型的数据转换为Date类型
Date date= calendar.getTime();
//再用format方法将其转换为字符串类型
String s = simpleDateFormat.format(date);
//输出的值为2021-01-30 02:49:24
System.out.println(s);
String————>Date————>Calendar
String str= "2021-01-22 15:30:20";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
    simpleDateFormat.parse(str);
    Calendar c = simpleDateFormat.getCalendar();
    System.out.println(c);
} catch (ParseException e) {
    e.printStackTrace();
}

三、处理异常

异常结构图

在这里插入图片描述

1、第一种解决错误的方式——捕获异常
String str= "2021-01-22 15:30:20";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try{
//try {可能发生异常的代码和使用可能发生异常代码的返回值的代码}
    Date date = simpleDateFormat.parse(str);
    int a = 10/0;
//如果try中代码异常发生了则发生异常后的代码都不执行
    System.out.println(date);
    System.out.println(date);
    System.out.println(date);
    System.out.println(date);
    System.out.println(date);
} catch (ParseException e) {
//catch包裹,捕获到现在发生的异常的对象,这是虚拟机创建的对象
//异常发生了catch中的代码执行,如果异常不发生catch中的代码不执行
//一个try可以有多个catch
    e.printStackTrace();
} catch (ArithmeticException e){
    e.printStackTrace();
}
2、第二种解决错误的方式

可以再方法上加throws异常类型
parse方法再main方法被调用,执行了方法,就把异常抛给谁
throws进行多个异常抛出时,可以用逗号隔开

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值