JAVA基础学习(十八)--常用 工具类
2015-09-27 19:37
447 查看
一、System
1.1、概述System类包含一些有用的类字段和方法。它不能被实例化。
在
System类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
字段摘要 | |
---|---|
staticPrintStream | err “标准”错误输出流。 |
staticInputStream | in “标准”输入流。 |
staticPrintStream | out “标准”输出流。 |
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()。 |
日期和时间模式
日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 '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、CalendarCalendar类是一个抽象类,它为特定瞬间与一组诸如
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、MathMath类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
字段摘要 | |
---|---|
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× 2 scaleFactor,其舍入方式如同将一个正确舍入的浮点值乘以 double 值集合中的一个值。 |
static float | scalb(float f, int scaleFactor) 返回 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 大小。 |
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); } }
相关文章推荐
- 精选30道Java笔试题
- java inetAddress类,URL类
- Java学习目录(初级篇)
- java排列
- java 集合介绍
- Java虚拟机8:虚拟机性能监控与故障处理工具
- eclipse导入web项目之后会报一大堆错误
- Java 大数值
- 顺序表(ArrayList)java实现
- 浅谈关于Java的注解使用
- Java Web开发1___JSP指令元素:taglib指令
- java 编译版本 和 Project 编译版本不一致
- 队列(链式存储) java实现
- Spring IOC, DI, AOP 原理和实现
- 队列(顺序存储) java实现
- Java学习之路:ArrayList用法
- 栈(顺序+链式) java实现
- eclipse ide中folder、source folder、package 区别
- java环境变量——classpath、path、JAVA_HOME的作用
- Java web开发快速上手