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的常用方法
  1. 获取系统当前毫秒值public static long currentTimeMillis()可以用它来测试程序的执行时间
  2. 结束正在运行的Java程序(public staitc void exit(int status))参数传入一个数字即可。通常传入0记为正常状态,其它为异常状态。
  3. 垃圾回收器(public static void gc())用来运行JVM中的垃圾回收器,完成内存中垃圾的清除
  4. 确定当前的系统属性(public static String getPropertie() )
  5. 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。

posted @ 2022-02-09 12:01  Nickeyhu  阅读(26)  评论(0编辑  收藏  举报