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 Environmentsun.boot.library.path: C:/Java/jre1.8.0_60/binjava.vm.version: 25.60-b23java.vm.vendor: Oracle Corporationjava.vendor.url: http://java.oracle.com/path.separator: ;java.vm.name: Java HotSpot(TM) 64-Bit Server VMfile.encoding.pkg: sun.iouser.country: CNuser.script: sun.java.launcher: SUN_STANDARDsun.os.patch.level: java.vm.specification.name: Java Virtual Machine Specificationuser.dir: F:/work/ListDemojava.runtime.version: 1.8.0_60-b27java.awt.graphicsenv: sun.awt.Win32GraphicsEnvironmentjava.endorsed.dirs: C:/Java/jre1.8.0_60/lib/endorsedos.arch: amd64java.io.tmpdir: C:/Users/ADMINI~1/AppData/Local/Temp/line.separator: java.vm.specification.vendor: Oracle Corporationuser.variant: os.name: Windows 7sun.jnu.encoding: GBKjava.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 Specificationjava.class.version: 52.0sun.management.compiler: HotSpot 64-Bit Tiered Compilersos.version: 6.1user.home: C:/Users/Administratoruser.timezone: java.awt.printerjob: sun.awt.windows.WPrinterJobfile.encoding: UTF-8java.specification.version: 1.8java.class.path: F:/work/ListDemo/binuser.name: Administratorjava.vm.specification.version: 1.8sun.java.command: com.pb.system.demo1.SystemDemo1java.home: C:/Java/jre1.8.0_60sun.arch.data.model: 64user.language: zhjava.specification.vendor: Oracle Corporationawt.toolkit: sun.awt.windows.WToolkitjava.vm.info: mixed modejava.version: 1.8.0_60java.ext.dirs: C:/Java/jre1.8.0_60/lib/ext;C:/Windows/Sun/Java/lib/extsun.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/classesjava.vendor: Oracle Corporationfile.separator: /java.vendor.url.bug: http://bugreport.sun.com/bugreport/sun.io.unicode.encoding: UnicodeLittlesun.cpu.endian: littlesun.desktop: windowssun.cpu.isalist: amd64
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(); //關閉進程 } }}
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 }}
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+"年不是閏年!"); } }}
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); }}
新聞熱點
疑難解答