常用类

常用类

Date SimpleDateFormat Calendar Math Random System Runtime

1.1 Date

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();

1.2 SimpleDateFormat ​

时间格式化。
时间格式: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);

1.3 Calendar

对于实际开发,时间显示这个类使用比较多
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);

*1.4 Math

数学工具类 数学运算的一些方法和字端

		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);

1.5 伪随机类Random

​ 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);

1.6 System

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);

1.7 Runtime

Runtime封装了运行时环境 每一个java程序都有自己对应的一个Runtime类实例,可以保证程序与运行环境相关联
Runtime是一个单例类

1.内存管理
2.在当前程序中执行其他程序

你可能感兴趣的:(Java)