Date Calendar BigDecimal Math Random System RunTime
- Date
声明
1 Date d = new Date();//执行该行代码的当前时间 2 //时间怎么记录--1970年0毫秒开始计时 3 //long类型数值 每毫秒 + 1
获取当前时间的毫秒数
1 long l = d.getTime();
2 System.out.println(l);//1644376650293
输出
1 int year = d.getYear(); 2 System.out.println(year + 1900);//2022 (从1900年开始算的 , 所以要加1900) 3 int month = d.getMonth(); 4 System.out.println(month + 1);//2 (2月 从0开始算的) 5 int date = d.getDate(); 6 System.out.println(date);//9 (9号) 7 int day = d.getDay(); 8 System.out.println(day);//3 (表示周三)
SimpleDateFormat
1 d = new Date(2000 , 10 , 8 , 7 , 30 , 00); 2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); 3 String for_date = sdf.format(d); 4 System.out.println(for_date); 5 //3900年11月08日 07时30分00秒
- Calendar
1 Calendar c = Calendar.getInstance(); 2 int year = c.get(Calendar.YEAR); 3 int month = c.get(Calendar.MONTH); 4 int day = c.get(Calendar.DAY_OF_MONTH); 5 int h = c.get(Calendar.HOUR_OF_DAY); 6 int m = c.get(Calendar.MINUTE); 7 int s = c.get(Calendar.SECOND); 8 System.out.println(year); 9 System.out.println(month); 10 System.out.println(day); 11 System.out.println(h); 12 System.out.println(m); 13 System.out.println(s);
- BigDecimal(价格,金额的处理)
- 为什么要有这个东西?
这是因为 0.1 不能精确地表示为双精度数
或者,就此而言,不能表示为任何有限长度的二进制分数
例如
1 System.out.println(0.09 + 0.01); 2 //0.09999999999999999 3 System.out.println(9.99 - 0.12); 4 //9.870000000000001
价格,金额等计数方式用这种方法不会产生问题
1 BigDecimal a = new BigDecimal("0.09"); 2 BigDecimal b = new BigDecimal("0.01"); 3 BigDecimal c = a.add(b); 4 System.out.println(c);//0.10
- Math
1 Math.random();//[0,1)之间的随机数 2 Math.abs(-1);//绝对值 3 Math.ceil(12.34);//向上取整 4 Math.floor(12.34);//向下取整 5 Math.round(12.45);//四舍五入
四舍五入,舍是往下舍,入是往上入!
特别注意负数的四舍五入!
-1.5 入完以后是-1
- Random
Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed)[种子数只是随机算法的起源数字,和生成的随机数字的区间无关],在种子数的基础上进行一定的变换,从而产生需要的随机数字。
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。
1 Random ran = new Random(); 2 for(int i = 0 ; i < 20 ; i++) { 3 int a = ran.nextInt(20); 4 System.out.println(a);//发现取不到20(左闭右开) 5 } 6 //里面的这个10是一个seed随机的种子数 7 Random ran1 = new Random(10); 8 Random ran2 = new Random(10); 9 for(int i = 0 ; i < 10 ; i++) { 10 //发现无论打印多少次这两个数都是一样的 11 //说明这个随机数并不是真正意义上的随机 12 //而是与当前时间点有关系的 13 System.out.println("---------"); 14 System.out.println(ran1.nextInt()); 15 System.out.println(ran2.nextInt());
- System
在API中system类介绍的比较简单,我们给出定义,system中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。
注意,system类不能手动创建对象,因为构造方法被私有化(即被private关键字修饰),组织外界创建对象(即不能用new关键字生成一个对象)。System类中的都是静态方法(static关键字修饰),类名访问即可。
- System的常用方法
- 获取系统当前毫秒值public static long currentTimeMillis()可以用它来测试程序的执行时间
- 结束正在运行的Java程序(public staitc void exit(int status))参数传入一个数字即可。通常传入0记为正常状态,其它为异常状态。
- 垃圾回收器(public static void gc())用来运行JVM中的垃圾回收器,完成内存中垃圾的清除
- 确定当前的系统属性(public static String getPropertie() )
- System类方法复制数组public static notive void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
1 public class _System { 2 public static void main(String[] args) throws InterruptedException { 3 test(); 4 } 5 static void test() throws InterruptedException{ 6 long l1 = System.currentTimeMillis();//返回当前系统时间 7 Thread.sleep(200); 8 //HashTable 存的一些键值对 9 String dir = System.getProperty("user.dir");//获取系统属性信息 10 System.out.println(dir);//D:\eclipse\situ 11 long l2 = System.currentTimeMillis(); 12 System.out.println(l2 - l1);//211 13 14 Properties ps = System.getProperties(); 15 Set set = ps.keySet(); 16 for(Object obj : set) { 17 System.out.println(obj); 18 } 19 /* java.runtime.name 20 sun.boot.library.path 21 java.vm.version 22 java.vm.vendor 23 ... ... ... ...*/ 24 } 25 }
- RunTime
每个java程序在运行时相当于启动了一个JVM进程,每个JVM进程都对应一个RunTime实例。此实例是JVM负责实例化的,所以我们不能实例化一个RunTime对象,只能通过getRuntime() 获取当前运行的Runtime对象的引用。一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去查看Java虚拟机的状态以及控制虚拟机的行为。
分别返回JVM内核数、空闲内存、总内存、最大内存
exec()执行本地程序,比如在win平台下运行exe。