Java学习(十二)
日期相关类
Date类
Date类表示特定的瞬间,精确到毫秒
方法:
- boolean after 测试此日期是否在指定日期之后
- boolean before 测试此日期是否在指定日期之前
- long getTime 返回自1970/1/1 00:00:00 GMT以来的毫秒数
- void setTime 设置此Date对象,以表示1970/1/1 00:00:00 GMT以后time毫秒的时间点
Dateformat抽象类与SimpleDateFormat类
DateFormat类是抽象类,不能实例化,但它提供了大量的静态方法返回一个具体的子类,让我们可以用不同的方法格式化日期时间
DateFormat类的getDateInstance方法返回一个将日期按照默认地区或者特定地区的方式格式化DateFormat对象。DateFormat的常量和getTimeInstance()方法的格式化风格的常量以及地区Locale对象的常量
Date date=new Date();
//DateFormat df=DateFormat.getDateInstance();//默认时间格式
//DateFormat df=DateFormat.getDateInstanc(DateFormat.Full,Locale.CHINA);//中国格式
DateFormat df=DateFormat.getTimeInstance(DateFormat.Full,Locale.CHINA);
String time=df.forma(date);
SimpleDateFormat类可以自定义格式输出时间日期,创建时需要传人一个日期和时间的格式字符串作为格式化模板。
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
有时候我们需要把字符串解析成日期时间,通过DateFormat和SimpleDateFormat类的parse()方法,可以从字符串创建一个Date对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd);
String time="2016-1-1";
Date date=sdf.parse(time);
Calendar抽象类和GregorianCalendar类
设置或获取日期数据的特定部分,Calendar类是一个抽象类,他的主要方法:
- add()实现在某个日期上的增加若干天、年、月、小时等后的新日期
- get()得到日期对象中的年、月、日、时、分、秒等
- set()修改日期对象中的年、月、日、时、分、秒等
- getInstance() 返回一个Calendar类型的对象实例
因为Calendar类是一个抽象类,可以通过他唯一个具体的子类GregorianCalendar类来实例Calendar cal=new GregorianCalendar()
GregorianCalendar day=new GregorianCalendar();
GregorianCalendar day=new GregorianCalendar(2016,2,1);//在Java中因为第一个月食0,所以2代表的是3月
GregorianCalendar day=new GregorianCalendar(2016,Calendar.March,1);//使用Calendar类中的常量
数学运算相关类
Math类
数学工具类,常用的数学常数和数学方法都在该内的内部,无论常数和方法都是static类型,可以直接Math.方法名进行调用。
随机数
- 通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字,可以把这个当做随机数
- 通过Math类的静态方法random()返回一个0到1之间的double值,我们可以把它乘以一定的数,比如10,他就是10以内的随机数
- 通过Random类来产生一个随机数
Random类更专业,功能更强大
Random r=new Random();
Random r1=new Random(10);
我们也可以调用该对象的不同方法,随机生成int、long、double、float、boolean类型等不同类型的随机数
int r=new Random().nextInt();
Random random=new Random(100L);//带种子的测试Random对象
//Random random=new Random();
//random.setSeed(100L);
包装类与自动装箱拆箱
基础数据类型对应的包装类
- boolean--------Boolean
- byte--------Byte
- short--------Short
- int--------Integer
- long--------Long
- char--------Character
- float--------Float
- double--------Double
所有的包装类都是final类型,不能创建他们的子类
包装类是不可变类。一旦创建了一个包装类的对象,那么它所包含的基本类型数据就不能改变