JAVA中几个常用的类的用法

Java中最基本的类有Object类、String类、StringBuffer类、包装类(基本数据类型的包)、Math类、Random类、传统的处理日期/时间类、新的处理日期/时间类、BigDecimal类(下)

传统的处理日期类

在JDK8以前的版本,Java提供了 三个类来处理日期和时间:

  • Java.util.Date:包装了一个long类型数据,表示与GMT(格林尼治标准时间)的1970年1月1日00:00:00这一刻所相距的毫秒数。
  • Java.text.DateFormat:对日期进行格式化
  • Java.util.Calendar:可以灵活地设置或读取日期中的年、月、日、时、分、秒
Date类
Date date=new Date();
System.out.println(date.getTime());
System.out.println(date);

上述代码第一行输出格林尼治标准时间到现在这一刻的毫秒数
第二行输出现在的标准时间
第一行中输出的时间是调用

long startTimes=System.currentTimeMillis();
long endTimes=System.currentTimeMillis();
long times=endTimes-startTimes;

我们在计算程序运行时间的时候,我们会用到上面的方法,记录程序运行开始时的时间和程序运行结束时的时间,二者之差就是程序运行的时间。

DateFormat类

DateFormat类是定义日期的格式的类,他有一个具体的子类为java.text.SimpleDateFormat,用法很简单,实例如下

Date date=new Date();
SimpleDateFormat f=new SimpleDateFormat("yyyy-MMMM-dd-EEEE");//分别代表年月日星期
System.out.println(f.format(date));//以上面f规定的形式输出时间
f=new SimpleDateFormat("yy/MM/dd hh:mm:ss");//分别代表年月日时分秒
System.out.println(f.format(date));

DateFormat类中parse方法可以按照特定的格式将字符串解析为日期对象,具体实例如下

//将字符串中的年月日解析为Date对象
Date date =parseDate("04-28-2020","MM-dd-yyyy");
//将字符串中年月日时分秒解析为Date对象
Date date=parseDate("2020-08-20 08:00:00","yyyy-MM-dd hh:mm:ss");

DateFormat类中还存在一个静态方法,以不同的风格输出时间

	public static void main(String[] args) {
		Date date=new Date();
		DateFormat shortDateFormat=DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
		DateFormat mediumDateFormat=DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
		DateFormat longDateFormat=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
		DateFormat fullDateFormat=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
		System.out.println(shortDateFormat.format(date));
		System.out.println(mediumDateFormat.format(date));
		System.out.println(longDateFormat.format(date));
		System.out.println(fullDateFormat.format(date));
		}

不同格式下的时间输出
除此之外,DateFormat类还提供了一个计算两个日期相隔天数的静态方法,getPeriod(Date d1,Date d2);
该静态方法用法非常简单,就不多说了。

Calendar类

该类可以通过set()和get()方法,获取设置日期的特定部分。比如可以改变和读取日期的年月日、时分秒。该类是抽象类,不能实例化。他有一个具体的子类GregorianCalendar类,具体方法用法如下。

	public static void main(String[] args) {
		GregorianCalendar cal=new GregorianCalendar();//当前时间
		System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EEEE").format(cal.getTime()));
		cal.clear();
		cal.set(Calendar.YEAR,2020);
		cal.set(Calendar.MONTH,Calendar.MAY);
		cal.set(Calendar.DATE, 20);
		cal.set(Calendar.HOUR, 13);
		cal.set(Calendar.MINUTE, 14);
		cal.set(Calendar.SECOND,00);
		System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EEEE").format(cal.getTime()));
		}

输出如下
第一行是没有修改的时间,第二行是经过修改后的时间

在这里插入图片描述

新的处理日期/时间的类

JDK8引入了新的处理日期和时间的Date/Time API,他比传统的Date/Time API类功能强大的多,新的处理日期/时间的类都处在java.time包中,包括日期的LocalDate类、表示时间的LocalTime类以及表示日期时间的LocalDateTime类

LocalDate类

该类表示日期,默认格式是“yyyy-MM-dd”。有以下几个方法,用法如下

public static void main(String[] args) {
		LocalDate nowDate=LocalDate.now();//获取当前日期对象
		System.out.println(nowDate);
		LocalDate date=LocalDate.of(2016,Month.JANUARY,1);// 设置时间对象
		System.out.println(date);
		LocalDate datePairs=LocalDate.now(ZoneId.of("Europe/Paris"));//获取巴黎当前日期
		System.out.println(datePairs);
		LocalDate dateFromBase=LocalDate.ofEpochDay(365);//设置标准日后365天的日期的对象
		System.out.println(dateFromBase);
		LocalDate hundredDay=LocalDate.ofYearDay(2016, 100);//设置2016年的第一百天的日期为对象
		System.out.println(hundredDay);
		}

输出如下
在这里插入图片描述
以上几种方法是LocalDate对象获取的方式,用起来都比较简单

LocalTime类

LocalTime类与LocalDate类中的方法以及用法是一模一样的,所以在这里就不多说了
但是要说一下这个指定秒数之后的时间

LocalTime time=LocalTime.ofSecondOfDay(60*60*3+60*15+44);//经过特定秒之后的时间
LocalDateTime类

该类方法与前面的一模一样 不多说了

BigInteger类

这个类是大数类,我们知道Java中有八种基本数据类型,分别是byte、short、int、long、float、double、boolean、char,其中表示整数类型有四种,分别是byte、short、int、long,能表示最大的整数就是long,他表示的数的范围在-263~263-1,这个范围已经很大了,但是在有些时候仍然时不够用的,所以Java中引入了大数类,可以支持更大的数的计算。该类的方法主要就四个 加减乘除

  • add(BigDecimal b)加法运算
  • subtract(BigDecimal b)减法运算
  • multiply(BigDecimal b)乘法运算
  • divide(BigDecimal b)除法运算

BigDecimal类

该类是精确计算类,Java中表示小数的有float类型和double类型,他们在计算的时候,在某些领域,计算精度远达不到要求,所以Java引入了精确计算类。该类也有四种方法。

  • add(BigDecimal b)加法运算
  • subtract(BigDecimal b)减法运算
  • multiply(BigDecimal b)乘法运算
  • divide(BigDecimal b,int scale,RoundingMode more)除法运算
    除法运算时,其中scale代表,精确到小数点后几位,more代表舍入模式,若more取BigDecimal.ROUND_HALF_UP则代表四舍五入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值