关于时间的类
1.Date 日期类
2.SimpleDateFormat 格式化日期类
3.Calender 日历类
Date date = new Date();
System.out.println(date);
//Thu Aug 05 11:23:00 CST 2021
//星期 月份 日期 时:分:秒 时区 年份
//
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//将Date 转 字符串
String format = sdf.format(new Date());
System.out.println(format);
///将字符串 转 Date
Date date = sdf.parse("2021年08月05日 11:28:61");
System.out.println(date);
//
//获取日历类的对象
Calendar c = Calendar.getInstance();
//获取单个的日历信息
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;//月份0~11
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(hour);
System.out.println(minute);
System.out.println(second);
Math类
Math类提供了一系列基本数学运算和几何函数的方法
Math类是final类,并且它的所有成员变量和成员方法都是静态的
System.out.println("求平方:" + Math.pow(3, 2)); //9.0
System.out.println("求平方根:" + Math.sqrt(9)); //3.0
System.out.println("求绝对值:" + Math.abs(-100)); //100
System.out.println("向上取整(天花板):" + Math.ceil(1.001)); //2.0
System.out.println("向下取整(地板):" + Math.floor(1.99)); //1.0
System.out.println("求最大值:" + Math.max(10, 20)); //20
System.out.println("求最小值:" + Math.min(10, 20)); //10
System.out.println("四舍五入:" + Math.round(1.4)); //1
System.out.println("获取随机值(0包含~1不包含):" + Math.random());
静态导入:
将Math类中所有的静态属性和静态方法都导入Test04这个类中,把导入的静态属性和静态方法都认为是Test04自己的内容
缺点:静态导入缺点:可读性不高。如果本类中有和静态导入类相同的方法,会就近调用本类中的方法
package com.dream.math_class;
//静态导入:将Math类中所有的静态属性和静态方法都导入Test04这个类中,把导入的静态属性和静态方法都认为是Test04自己的内容
import static java.lang.Math.*;//静态导入
public class Test04 {
public static void main(String[] args) {
System.out.println("求平方:" + pow(3, 2));//9.0
System.out.println("求平方根:" + sqrt(9));//3.0
System.out.println("求绝对值:" + abs(-100));//100
System.out.println("向上取整(天花板):" + ceil(1.001));//2.0
System.out.println("向下取整(地板):" + floor(1.99));//1.0
System.out.println("求最大值:" + max(10, 20));//20
System.out.println("求最小值:" + min(10, 20));//10
System.out.println("四舍五入:" + round(1.4));//1
//静态导入缺点:可读性不高
//如果本类中有和静态导入类相同的方法,会就近调用本类中的方法
System.out.println("获取随机值(0包含~1不包含):" + random());
}
//private static int random() {
// return 123456789;
//}
}
Random随机类
Random是一个用于生成随机数的类(伪随机数),该随机数是由随机种子再经过算法算出来的,所以不是严格意义上的随机数,一般称为伪随机数。
随机种子:系统截取当前时间作为随机种子
把随机种子加入算法返回随机数。
随机类的使用:
Random random = new Random();
int nextInt1 = random.nextInt();
System.out.println("随机出int取值范围内的数字:"+nextInt1);
int nextInt2 = random.nextInt(10);
System.out.println("随机出0~9的数字:"+nextInt2);
boolean nextBoolean = random.nextBoolean();
System.out.println("随机boolean值:"+nextBoolean);
深入Random
写一个自己的Random类,展示大致原理。
package com.Xu.work4;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyRandom {
public int random() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("SS");//获取时间大写S表毫秒
String str = simpleDateFormat.format(new Date());//转化为字符串储存
int num=0;
String strYear=str.substring(0,2);
num = Integer.parseInt(strYear);//转为int型
return num;
}
}
真正底层会比这个复杂,但大致原理是相同的:
1.获取种子数
2.算法实现
3.返回随机数
Runtime 运行环境类
package com.dream.runtime_class;
public class Test01 {
public static void main(String[] args) {
//获取运行环境对象
Runtime run = Runtime.getRuntime();
System.out.println("获取最大内存数(字节):" + run.maxMemory());
System.out.println("获取闲置内存数(字节):" + run.freeMemory());
System.out.println("获取处理数:" + run.availableProcessors());
}
}
获取最大内存数(字节):4273995776
获取闲置内存数(字节):267176472
获取处理数:4
System(系统类)的属性
系统标准的输入流(方向:控制台 -> 程序)
InputStrram in = System.in;
Scanner scan = new System(in);
String next = Scan.next();
//即:String next = scan.next();
系统标准的输出流(方向:程序 -> 控制台)
PrintStream out = System.out;
out.println(next);
//即:System.out.println(next);
关闭资源
scan.close();
System的out与err
理解:out和err是两个线程,谁抢到CPU资源谁先运行
说明:多线程的随机性很强
System.out.println("小明");
System.err.println("小红");
System.out.println("小强");
输出顺序不确定
System的方法
获取系统参数的对象
Properties properties = System.getProperties();
System.out.println(properties);
通过键获取值
String value = System.getProperty("os.name");
System.out.println(value);
退出当前虚拟机
System.exit(0);