一、System
1.1、概述
System
类包含一些有用的类字段和方法。它不能被实例化。
在 System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
字段摘要 | |
---|---|
static PrintStream |
err “标准”错误输出流。 |
static InputStream |
in “标准”输入流。 |
static PrintStream |
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
static Runtime |
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)) 取代。
|
int |
getYear() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 取代。
|
int |
hashCode() 返回此对象的哈希码值。 |
static long |
parse(String s) 已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String 取代。
|
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, 取代。
|
void |
setMonth(int month) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MONTH, 取代。
|
void |
setSeconds(int seconds) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.SECOND, 取代。
|
void |
setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后time 毫秒的时间点。 |
void |
setYear(int year) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.YEAR, 取代。
|
String |
toGMTString() 已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date 取代,使用 GMT TimeZone 。
|
String |
toLocaleString() 已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date 取代。
|
String |
toString() 把此 Date 对象转换为以下形式的 String : dow mon ddhh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。 |
static long |
UTC(int year, 已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, 或 GregorianCalendar(year + 1900, month, 取代,使用 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, 将矩形坐标 ( x , y ) 转换成极坐标(r, theta),返回所得角 theta。 |
static double |
cbrt(double a) 返回 double 值的立方根。 |
static double |
ceil(double a) 返回最小的(最接近负无穷大) double 值,该值大于等于参数,并等于某个整数。 |
static double |
copySign(double magnitude, 返回带有第二个浮点参数符号的第一个浮点参数。 |
static float |
copySign(float magnitude, 返回带有第二个浮点参数符号的第一个浮点参数。 |
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, 返回 sqrt(x2 +y2),没有中间溢出或下溢。 |
static double |
IEEEremainder(double f1, 按照 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 值中较大的一个。 |
static float |
max(float a, 返回两个 float 值中较大的一个。 |
static int |
max(int a, int b) 返回两个 int 值中较大的一个。 |
static long |
max(long a, 返回两个 long 值中较大的一个。 |
static double |
min(double a, 返回两个 double 值中较小的一个。 |
static float |
min(float a, 返回两个 float 值中较小的一个。 |
static int |
min(int a, int b) 返回两个 int 值中较小的一个。 |
static long |
min(long a, 返回两个 long 值中较小的一个。 |
static double |
nextAfter(double start, 返回第一个参数和第二个参数之间与第一个参数相邻的浮点数。 |
static float |
nextAfter(float start, 返回第一个参数和第二个参数之间与第一个参数相邻的浮点数。 |
static double |
nextUp(double d) 返回 d 和正无穷大之间与 d 相邻的浮点值。 |
static float |
nextUp(float f) 返回 f 和正无穷大之间与 f 相邻的浮点值。 |
static double |
pow(double a, 返回第一个参数的第二个参数次幂的值。 |
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, 返回 d ×2 scaleFactor ,其舍入方式如同将一个正确舍入的浮点值乘以 double值集合中的一个值。 |
static float |
scalb(float f, 返回 f ×2 scaleFactor ,其舍入方式如同将一个正确舍入的浮点值乘以 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));//
System.out.println(Math.round(-11.5));//-11
} }
5.3、Random类
Random
类实现的算法使用一个 protected
实用工具方法,每次调用它最多可提供 32 个伪随机生成的位。
构造方法摘要 | |
---|---|
Random() 创建一个新的随机数生成器。 |
|
Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。 |
方法摘要 | |
---|---|
protected |
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);
}
}