您的位置:首页 > 编程语言 > Java开发

JAVA基础学习(十八)--常用 工具类

2015-09-27 19:37 447 查看


一、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
× 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 大小。
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);
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: