一、System
1.1、概述
System
类包含一些有用的类字段和方法。它不能被实例化。
在 System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
字段摘要 | |
---|---|
staticPrintStream | err “标准”错误输出流。 |
staticInputStream | in “标准”输入流。 |
staticPrintStream | out “标准”输出流。 |
1.2、getPropertis()获取system加载时都加载了哪些对象
Properties是HashTable的子类,也就是Map集合的子类对象
可以通过Map的方法取出该集合中的元素。
该集合中存储的都是字符串,没有泛型定义
package com.pb.system.demo1; import java.util.Iterator; import java.util.Properties; import java.util.Set; public class SystemDemo1 { public static void main(String[] args) { //获取System启动是初始化的对象,返回是一个Properties,这个是HashTable的子类对象也是个Map集合 Properties prop=System.getProperties(); Set set=prop.keySet(); //获取所胡键 Iterator it=set.iterator(); while(it.hasNext()){ String key=(String)it.next(); String value=(String)prop.get(key); System.out.println(key+": "+value); } } }
结果:
java.runtime.name: Java(TM) SE Runtime Environment sun.boot.library.path: C:\Java\jre1.8.0_60\bin java.vm.version: 25.60-b23 java.vm.vendor: Oracle Corporation java.vendor.url: http://java.oracle.com/ path.separator: ; java.vm.name: Java HotSpot(TM) 64-Bit Server VM file.encoding.pkg: sun.io user.country: CN user.script: sun.java.launcher: SUN_STANDARD sun.os.patch.level: java.vm.specification.name: Java Virtual Machine Specification user.dir: F:\work\ListDemo java.runtime.version: 1.8.0_60-b27 java.awt.graphicsenv: sun.awt.Win32GraphicsEnvironment java.endorsed.dirs: C:\Java\jre1.8.0_60\lib\endorsed os.arch: amd64 java.io.tmpdir: C:\Users\ADMINI~1\AppData\Local\Temp\ line.separator: java.vm.specification.vendor: Oracle Corporation user.variant: os.name: Windows 7 sun.jnu.encoding: GBK java.library.path: C:\Java\jre1.8.0_60\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Java/jre1.8.0_60/bin/server;C:/Java/jre1.8.0_60/bin;C:/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Broadcom\Broadcom 802.11 Network Adapter\Driver;;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Lenovo\Bluetooth Software\;C:\Program Files\Lenovo\Bluetooth Software\syswow64;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Java\jdk1.8.0_60\bin;C:\Java\jdk1.8.0_60\jre\bin;F:\eclipse-jee-mars-R-win32-x86_64\eclipse;;. java.specification.name: Java Platform API Specification java.class.version: 52.0 sun.management.compiler: HotSpot 64-Bit Tiered Compilers os.version: 6.1 user.home: C:\Users\Administrator user.timezone: java.awt.printerjob: sun.awt.windows.WPrinterJob file.encoding: UTF-8 java.specification.version: 1.8 java.class.path: F:\work\ListDemo\bin user.name: Administrator java.vm.specification.version: 1.8 sun.java.command: com.pb.system.demo1.SystemDemo1 java.home: C:\Java\jre1.8.0_60 sun.arch.data.model: 64 user.language: zh java.specification.vendor: Oracle Corporation awt.toolkit: sun.awt.windows.WToolkit java.vm.info: mixed mode java.version: 1.8.0_60 java.ext.dirs: C:\Java\jre1.8.0_60\lib\ext;C:\Windows\Sun\Java\lib\ext sun.boot.class.path: C:\Java\jre1.8.0_60\lib\resources.jar;C:\Java\jre1.8.0_60\lib\rt.jar;C:\Java\jre1.8.0_60\lib\sunrsasign.jar;C:\Java\jre1.8.0_60\lib\jsse.jar;C:\Java\jre1.8.0_60\lib\jce.jar;C:\Java\jre1.8.0_60\lib\charsets.jar;C:\Java\jre1.8.0_60\lib\jfr.jar;C:\Java\jre1.8.0_60\classes java.vendor: Oracle Corporation file.separator: \ java.vendor.url.bug: http://bugreport.sun.com/bugreport/ sun.io.unicode.encoding: UnicodeLittle sun.cpu.endian: little sun.desktop: windows sun.cpu.isalist: amd64
二、Runtime
2.1、Runtime概述
每个 Java 应用程序都有一个 Runtime
类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime
方法获取当前运行时。
应用程序不能创建自己的 Runtime 类实例。
java.lang.Runtime
staticRuntime | getRuntime() 返回与当前 Java 应用程序相关的运行时对象。 |
单例模式
2.2、示例
package com.pb.system.demo1; import java.io.IOException; public class RuntimeDemo { public static void main(String[] args) { Runtime rt=Runtime.getRuntime(); Process p = null; //进程 try { //打开启事本 p=rt.exec("notepad e:\\a.txt");//或者路径加命令 返回一个进程 Thread.sleep(5000); //等待5秒 } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); }finally{ p.destroy(); //关闭进程 } } }
三、Date
3.1、Date
类 Date
表示特定的瞬间,精确到毫秒
方法摘要 | |
---|---|
boolean | after(Date when) 测试此日期是否在指定日期之后。 |
boolean | before(Date when) 测试此日期是否在指定日期之前。 |
Object | clone() 返回此对象的副本。 |
int | compareTo(Date anotherDate) 比较两个日期的顺序。 |
boolean | equals(Object obj) 比较两个日期的相等性。 |
int | getDate() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。 |
int | getDay() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。 |
int | getHours() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。 |
int | getMinutes() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。 |
int | getMonth() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。 |
int | getSeconds() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。 |
long | getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 |
int | getTimezoneOffset() 已过时。 从 JDK 1.1 开始,由 -(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000) 取代。 |
int | getYear() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。 |
int | hashCode() 返回此对象的哈希码值。 |
static long | parse(String s) 已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。 |
void | setDate(int date) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.DAY_OF_MONTH, int date) 取代。 |
void | setHours(int hours) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.HOUR_OF_DAY, int hours) 取代。 |
void | setMinutes(int minutes) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MINUTE, int minutes) 取代。 |
void | setMonth(int month) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MONTH, int month) 取代。 |
void | setSeconds(int seconds) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.SECOND, int seconds) 取代。 |
void | setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。 |
void | setYear(int year) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。 |
String | toGMTString() 已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代,使用 GMT TimeZone 。 |
String | toLocaleString() 已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代。 |
String | toString() 把此 Date 对象转换为以下形式的 String : dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。 |
static long | UTC(int year, int month, int date, int hrs, int min, int sec) 已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min, sec) 或 GregorianCalendar(year + 1900, month, date, hrs, min, sec) 取代,使用 UTC TimeZone ,后跟 Calendar.getTime().getTime() 。 |
3.2、SimpleDateFormat
日期和时间模式
日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A'
到 'Z'
和 'a'
到 'z'
被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 ('
) 引起来,以免进行解释。"''"
表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符 'A'
到 'Z'
和 'a'
到 'z'
都被保留):
字母 日期或时间元素 表示 示例 G
Era 标志符 Text AD
y
年 Year 1996
;96
M
年中的月份 Month July
;Jul
;07
w
年中的周数 Number 27
W
月份中的周数 Number 2
D
年中的天数 Number 189
d
月份中的天数 Number 10
F
月份中的星期 Number 2
E
星期中的天数 Text Tuesday
;Tue
a
Am/pm 标记 Text PM
H
一天中的小时数(0-23) Number 0
k
一天中的小时数(1-24) Number 24
K
am/pm 中的小时数(0-11) Number 0
h
am/pm 中的小时数(1-12) Number 12
m
小时中的分钟数 Number 30
s
分钟中的秒数 Number 55
S
毫秒数 Number 978
z
时区 General time zone Pacific Standard Time
;PST
;GMT-08:00
Z
时区 RFC 822 time zone -0800
SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
示例:
package com.pb.date.demo1; import java.text.SimpleDateFormat; import java.util.Date; public class DateDemo1 { public static void main(String[] args) { Date d=new Date(); System.out.println(d); //返回值为Sun Sep 27 15:35:10 CST 2015 //格式转换 SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str=sdf1.format(d); System.out.println(str); //2015-09-27 15:36:37 } }
四、Calendar
4.1、Calendar
Calendar
类是一个抽象类,它为特定瞬间与一组诸如 YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等 日历字段
之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
该类还为实现包范围外的具体日历系统提供了其他字段和方法。这些字段和方法被定义为 protected
。
与其他语言环境敏感类一样,Calendar
提供了一个类方法 getInstance
,以获得此类型的一个通用的对象。Calendar
的getInstance
方法返回一个 Calendar
对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();
4.2、示例
package com.pb.date.demo1; import java.util.Calendar; import java.util.GregorianCalendar; public class CalendarDemo { public static void main(String[] args) { Calendar c=Calendar.getInstance(); System.out.println(c); int year=c.get(Calendar.YEAR);//年 int month=c.get(Calendar.MONTH)+1;//月0-11之间+1为当前月份 int day=c.get(Calendar.DAY_OF_MONTH);//月中的日期 int hour=c.get(Calendar.HOUR_OF_DAY);//天中的小时 int minuts=c.get(Calendar.MINUTE); int second=c.get(Calendar.SECOND); System.out.println(year+"年"+month+"月"+day+"日"+hour+"时"+minuts+"分"+second+"秒"); //获取2年之前的日期 //getYear(c,-2); //获取2年之后的日期 //getYear(c,2); //获取2个月之前的日期 //getMonth(c,-2); //获取2个月之后的日期 //getMonth(c,2); //当前日期-20天的日期 //getDay(c,-20); //当前日期+83天的日期 //getDay(c,83); //求当年是不是闰年 //isLearYear(c); /* * Calendar的子类提供了,判断是不是闰年的方法 */ GregorianCalendar gc=new GregorianCalendar(); //boolean flag=gc.isLeapYear(2015); boolean flag=gc.isLeapYear(gc.YEAR); if(flag){ System.out.println("闰年!"); }else{ System.out.println("不是闰年!"); } } //对年进行+和-操作 public static void getYear(Calendar c,int num){ c.add(Calendar.YEAR, num); int year=c.get(Calendar.YEAR); System.out.println(year); } //对月进行+和-操作 public static void getMonth(Calendar c,int num){ c.add(Calendar.MONTH, num); int month=c.get(Calendar.MONTH)+1; int year=c.get(Calendar.YEAR); System.out.println(year+"年"+month+"月"); } //对日进行+和-操作 public static void getDay(Calendar c,int num){ c.add(Calendar.DAY_OF_MONTH, num); int day=c.get(Calendar.DAY_OF_MONTH); int year=c.get(Calendar.YEAR); int month=c.get(Calendar.MONTH)+1; System.out.println(year+"年"+month+"月"+day); } public static void isLearYear(Calendar c){ int year=c.get(Calendar.YEAR); //闰年的条件可以被4整除但不能被100整除,或者可以被400整除 if(year%4==0&&year%100!=0 ||year%400==0){ System.out.println(year+"年闰年!"); }else{ System.out.println(year+"年不是闰年!"); } } }
五、Math
5.1、Math
Math
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
字段摘要 | |
---|---|
static double | E 比任何其他值都更接近 e(即自然对数的底数)的 double 值。 |
static double | PI 比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。 |
方法摘要 | |
---|---|
static double | abs(double a) 返回 double 值的绝对值。 |
static float | abs(float a) 返回 float 值的绝对值。 |
static int | abs(int a) 返回 int 值的绝对值。 |
static long | abs(long a) 返回 long 值的绝对值。 |
static double | acos(double a) 返回一个值的反余弦;返回的角度范围在 0.0 到 pi 之间。 |
static double | asin(double a) 返回一个值的反正弦;返回的角度范围在 -pi/2 到 pi/2 之间。 |
static double | atan(double a) 返回一个值的反正切;返回的角度范围在 -pi/2 到 pi/2 之间。 |
static double | atan2(double y, double x) 将矩形坐标 ( x , y ) 转换成极坐标 (r, theta),返回所得角 theta。 |
static double | cbrt(double a) 返回 double 值的立方根。 |
static double | ceil(double a) 返回最小的(最接近负无穷大) double 值,该值大于等于参数,并等于某个整数。 |
static double | copySign(double magnitude, double sign) 返回带有第二个浮点参数符号的第一个浮点参数。 |
static float | copySign(float magnitude, float sign) 返回带有第二个浮点参数符号的第一个浮点参数。 |
static double | cos(double a) 返回角的三角余弦。 |
static double | cosh(double x) 返回 double 值的双曲线余弦。 |
static double | exp(double a) 返回欧拉数 e 的 double 次幂的值。 |
static double | expm1(double x) 返回 ex -1。 |
static double | floor(double a) 返回最大的(最接近正无穷大) double 值,该值小于等于参数,并等于某个整数。 |
static int | getExponent(double d) 返回 double 表示形式中使用的无偏指数。 |
static int | getExponent(float f) 返回 float 表示形式中使用的无偏指数。 |
static double | hypot(double x, double y) 返回 sqrt(x2 +y2),没有中间溢出或下溢。 |
static double | IEEEremainder(double f1, double f2) 按照 IEEE 754 标准的规定,对两个参数进行余数运算。 |
static double | log(double a) 返回 double 值的自然对数(底数是 e)。 |
static double | log10(double a) 返回 double 值的底数为 10 的对数。 |
static double | log1p(double x) 返回参数与 1 之和的自然对数。 |
static double | max(double a, double b) 返回两个 double 值中较大的一个。 |
static float | max(float a, float b) 返回两个 float 值中较大的一个。 |
static int | max(int a, int b) 返回两个 int 值中较大的一个。 |
static long | max(long a, long b) 返回两个 long 值中较大的一个。 |
static double | min(double a, double b) 返回两个 double 值中较小的一个。 |
static float | min(float a, float b) 返回两个 float 值中较小的一个。 |
static int | min(int a, int b) 返回两个 int 值中较小的一个。 |
static long | min(long a, long b) 返回两个 long 值中较小的一个。 |
static double | nextAfter(double start, double direction) 返回第一个参数和第二个参数之间与第一个参数相邻的浮点数。 |
static float | nextAfter(float start, double direction) 返回第一个参数和第二个参数之间与第一个参数相邻的浮点数。 |
static double | nextUp(double d) 返回 d 和正无穷大之间与 d 相邻的浮点值。 |
static float | nextUp(float f) 返回 f 和正无穷大之间与 f 相邻的浮点值。 |
static double | pow(double a, double b) 返回第一个参数的第二个参数次幂的值。 |
static double | random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0 。 |
static double | rint(double a) 返回最接近参数并等于某一整数的 double 值。 |
static long | round(double a) 返回最接近参数的 long 。 |
static int | round(float a) 返回最接近参数的 int 。 |
static double | scalb(double d, int scaleFactor) 返回 d × 2scaleFactor ,其舍入方式如同将一个正确舍入的浮点值乘以 double 值集合中的一个值。 |
static float | scalb(float f, int scaleFactor) 返回 f × 2scaleFactor ,其舍入方式如同将一个正确舍入的浮点值乘以 float 值集合中的一个值。 |
static double | signum(double d) 返回参数的符号函数;如果参数为 0,则返回 0;如果参数大于 0,则返回 1.0;如果参数小于 0,则返回 -1.0。 |
static float | signum(float f) 返回参数的符号函数;如果参数为 0,则返回 0;如果参数大于 0,则返回 1.0;如果参数小于 0,则返回 -1.0。 |
static double | sin(double a) 返回角的三角正弦。 |
static double | sinh(double x) 返回 double 值的双曲线正弦。 |
static double | sqrt(double a) 返回正确舍入的 double 值的正平方根。 |
static double | tan(double a) 返回角的三角正切。 |
static double | tanh(double x) 返回 double 值的双曲线余弦。 |
static double | toDegrees(double angrad) 将用弧度表示的角转换为近似相等的用角度表示的角。 |
static double | toRadians(double angdeg) 将用角度表示的角转换为近似相等的用弧度表示的角。 |
static double | ulp(double d) 返回参数的 ulp 大小。 |
static float | ulp(float f) 返回参数的 ulp 大小。 |
5.2、示例
package com.pb.math.demo1; public class MathDemo1 { public static void main(String[] args) { double d = Math.ceil(16.3); // 返回大于指定数据的最小整数17 System.out.println("d=" + d); double d1 = Math.ceil(-16.3); // 返回大于指定数据的最小整数-16 System.out.println("d1=" + d1); double d2 = Math.floor(16.3);// 16,返回小于指定数据最大整数 System.out.println("d2=" + d2); double d3 = Math.floor(-16.3);// 16,返回小于指定数据最大整数-17 System.out.println("d3=" + d3); double d4 = Math.round(12.3);// 12; System.out.println("d4=" + d4); double d5 = Math.round(12.54);// 13; System.out.println("d5=" + d5); double d6 = Math.round(-12.54);// -12; System.out.println("d6=" + d6); double d7 = Math.round(-12.34);// -12; System.out.println("d7=" + d7); System.out.println(Math.round(11.5));//12 System.out.println(Math.round(-11.5));//-11 } }
5.3、Random类
Random
类实现的算法使用一个 protected
实用工具方法,每次调用它最多可提供 32 个伪随机生成的位。
构造方法摘要 | |
---|---|
Random() 创建一个新的随机数生成器。 | |
Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。 |
方法摘要 | |
---|---|
protected int | next(int bits) 生成下一个伪随机数。 |
boolean | nextBoolean() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 |
void | nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的 byte 数组中。 |
double | nextDouble() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 |
float | nextFloat() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 |
double | nextGaussian() 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0 ,标准差是 1.0 。 |
int | nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 |
int | nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。 |
long | nextLong() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 |
void | setSeed(long seed) 使用单个 long 种子设置此随机数生成器的种子。 |
示例:
package com.pb.math.demo1; import java.util.Random; /** * 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 * 返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。 * 大于等于 0.0 且小于 1.0 的伪随机 double 值 * */ public class MathDemo2 { public static void main(String[] args) { Random r=new Random(); for(int x=0;x<10;x++){ int i=r.nextInt(10); //1-10包含1不包含10 float f=r.nextFloat()*10; //0-1之间*10 double d=r.nextDouble()*10;//0-1之间*10 sop(i); sop(f); sop(d); } } public static void sop(Object obj){ System.out.println(obj); } }