Date SimpleDateFormat Calendar Math Random System Runtime
Java初始时 JDK1.0是
唯一一个代表时间的类,由于Date类不能实现国际化,JDK1.1出现Calendar。舍弃代表着不再进行维护,并不是这个东西不能使用了。所在的包是java.util
Date表示的是时间类 这个时间是从1900年1月1日00:00:00开始算的
1.初始化Date对象
2.常用的方法掌握的:
时间戳和对应时间的转换
// 创建Date对象
// 1. 通过无参的构造方法创建
Date date = new Date();
// 可以获取当前时间
System.out.println(date);
// 根据年月日 创建Date对象
/*
* 年需要 - 1900
* 月份 需要传0-11的值
* */
Date date1 = new Date(2017-1900, 7, 28);
System.out.println(date1);
Date date2 = new Date(2017 - 1900, 13, 13, 12, 29, 30);
System.out.println(date2);
long times = System.currentTimeMillis(); // 获得是当前时间的毫秒数
// 时间戳 : 指定时间到1970年1月1日的毫秒数的时间
/*
* 当前时间 - 1970年1月1日 00:00:00
* */
// 根据毫秒数创建Date对象
Date date3 = new Date(times);
// 创建Date对象
Date date = new Date();
// 1. 将时间对象对应的时间转换成时间戳 单位是毫秒级别的
long times = date.getTime();
System.out.println(times);
// 获得年
int year = date.getYear();
System.out.println(year + 1900);
// 获得月
int month = date.getMonth();
System.out.println(month + 1);
// 获得日期
int day = date.getDate();
System.out.println(day);
// 获得星期
int week = date.getDay();
System.out.println(week);
// 获取时
int hour = date.getHours();
// 获取分
int minute = date.getMinutes();
// 获取秒
int seconds = date.getSeconds();
时间格式化。
时间格式:2017年09月14日 10:00:00 位于java.text
掌握时间格式化函数语法: 【找度娘】
y - 表示的是年 yyyy
M - 表示的是月 MM
d - 表示日 dd
h - 表示的是时(十二小时制) hh
H - 表示的是时(24小时制) HH
m - 表示的是分 mm
s - 表示的是秒 ss
S - 表示的是毫秒 SSS
E - 表示的是星期
a - 上午/下午的标记
z - 表示的是时区
时间格式化类如何使用??
1.提供一个时间模板(String类型的)
2.将String类型的模板实例化成模板对象SimpleDateFormat对象
3.将时间格式化
// 时间对象
Date date = new Date();
// 1. 设置时间模板
String pattern = "yyyy年-MM月-dd日 a hh:mm:ss:SSS 星期:E 一年中第D天 一年中第w星期 一个月中经历的第 W星期 z";
// 2.根据时间模板创建格式化对象
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
// 3.将时间按照对应的格式格式化
String dateStr = sdf.format(date);
对于实际开发,时间显示这个类使用比较多
Calendar这个类是一个抽象类。如果想获得这个类的实例,在这个类中提供了一个静态方法static Calendar getInstance();注意:
年月日获取时 调用的是get方法 通过get方法获取字段值 否则结果是不准确的
例如 int year = Calendar.getIntances().get(Calendar.YEAR);
// 1. 获得Calendar对象
Calendar calendar = Calendar.getInstance();
// 设置日历时间
Date date = new Date();
//Date dat = new Date(2017-1900, 5, 18);
// 将日历时间设置为当前时间
calendar.setTime(date);
// 获得时间 如果不设置 直接获取当前时间
Date date1 = calendar.getTime();
System.out.println(date1);
//将Calendar时间实例化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String formatDate = sdf.format(calendar.getTime());
System.out.println(formatDate);
// 日期类设置时间的另一种方式 设置自定义时间
/*
* 可以只设置年月日
* 可以只设置年月日时分
* 可以设置年月日时分秒
* */
calendar.set(2017, 7, 26, 11, 22, 33);
formatDate = sdf.format(calendar.getTime());
System.out.println(formatDate);
Date customDate = calendar.getTime();
System.out.println(customDate);
// 设置/获取时间对应的年
Calendar nc = Calendar.getInstance();
/*
* field 这个是Calendar类中对应的字段
* */
nc.set(Calendar.YEAR, 2000);
// 获取年
int year = nc.get(Calendar.YEAR);
System.out.println(year);
// 设置/获取时
nc.set(Calendar.HOUR, 5);
int hour = nc.get(Calendar.HOUR);
System.out.println(hour);
// 不设置 单纯获取当前时间的
int month = nc.get(Calendar.MONTH);
System.out.println(month + 1);
/*month = Calendar.MONTH;
System.out.println(month);*/
// 求两个时间的时间差(毫秒级别的) 常用到的
// 设置时间 起始时间
Calendar c1 = Calendar.getInstance();
c1.set(2017, 8, 10, 12, 0, 0);
// 终止时间
Calendar c2 = Calendar.getInstance();
c2.set(2017, 9, 1, 12, 0, 0);
// 先计算毫秒差
long time1 = c1.getTimeInMillis();
long time2 = c2.getTimeInMillis();
long time = time2 - time1;
System.out.println(time);
// 求秒数
long second = time / 1000;
// 求分
long minute = second / 60;
// 求时
long hours = minute / 60;
// 求天
long days = hours / 24;
String timeStr = String.format("活动时间倒计时:%d天 %d时", days, hours%24);
System.out.println(timeStr);
// 比较两个时间的日期
int res = c1.compareTo(c2);
System.out.println(res);
数学工具类 数学运算的一些方法和字端
System.out.println("自然对数:" + Math.E);
System.out.println("圆周率:" + Math.PI);
// 向上求整
// 该值大于等于参数,并等于某个整数
double res = Math.ceil(18.1);
System.out.println(res); // 19.0
// 向下求整
// 该值小于等于参数,并等于某个整数
res = Math.floor(18.9);
System.out.println(res); // 18.0
// 四舍五入
long res1 = Math.round(18.9);
System.out.println(res1); // 19
int res2 = Math.round(18.4f);
System.out.println(res2);
// 两个数之间的最大值
int max = Math.max(10, 18);
System.out.println(max);
int min = Math.min(10, 18);
System.out.println(min);
// 求幂数
res = Math.pow(5, 10);
System.out.println(res);
// 求平方根
res = Math.sqrt(16);
System.out.println(res);
// 求立方根
res = Math.cbrt(8);
System.out.println(res);
// 随机数 [0, 1.0)
res = Math.random();
System.out.println(res);
// 27 ~ 45之间 - 27 = [0, 18)
res = Math.random()*18 + 27;
System.out.println(res);
Random实现了随机算法的伪随机,也就有规则的随机。
在进行随机时,在随机算法的起源数字[种子]的基础上加上了一定的变换,从而产生有规律的随机数字
例如: 1 —>
100 122 134 144
1 ---->
100 122 134 144 创建伪随机类对象
通过构造方法
// 创建伪随机类对象
Random rd = new Random();
//随机算法的起源数字时:当前时间的毫秒值
// 指定随机算法起源数字
//Random rd1 = new Random(10);
// 获得随机值
// 获取boolean类型随机值 在true或者false之间选择
boolean res = rd.nextBoolean();
System.out.println(res);
// 获取double类型的随机值 取值[0, 1.0)
double d = rd.nextDouble();
System.out.println(d);
// 获取int类型的随机值 范围:int类型数值的取值范围[-2^31, 2^31 - 1]
int i = rd.nextInt();
System.out.println(i);
// [0, 100)
int i1 = rd.nextInt(100);
System.out.println(i1);
System.out.println("-----------------");
// 固定种子数 的随机类
Random rd1 = new Random(10);
// 获得种子数为10的随机序列中的5个随机数
for(int j = 0; j < 5; j++){
int num = rd1.nextInt(100);
System.out.println(num);
}
System.out.println("-----------------");
for(int j = 0; j < 5; j++){
int num = rd.nextInt(100);
System.out.println(num);
}
/*
* 随机数
* 27 - 48之间整数
* -27 == 0 21
* */
int index = rd.nextInt(21) + 27;
System.out.println(index);
System这个类中包含了对应的一些控制输入输出的字段,以及系统的一些方法
控制输入来源于控制台
in 控制输出目的地的字段
out
err - 错误 【字是空色的】 err的输出速率比out输出速率快一些
/*
* static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
* */
int[] src = new int[]{1, 2, 3, 4, 5};
int[] dest = new int[20];
dest[0] = 11;
dest[1] = 12;
/* 第一个参数
* 原数组 - 被拷贝的数组
* 第二个参数
* 拷贝数组中的元素从哪个脚标开始
* 第三个
* 目的数组 - 拷贝到的数组
* 第四个参数
* 要拷贝过来的元素在目的数组中从哪个脚标开始放置
* 第五个参数
* 拷贝原数组中多少个元素
*
* */
System.arraycopy(src, 0, dest, 2, 3);
// 这种拷贝执行效率偏低
System.out.println(Arrays.toString(dest));
// 获取当前时间的毫秒数[时间戳]
long times = System.currentTimeMillis();
System.out.println(times);
Runtime封装了运行时环境 每一个java程序都有自己对应的一个Runtime类实例,可以保证程序与运行环境相关联
Runtime是一个单例类1.内存管理
2.在当前程序中执行其他程序