_____Java常见类_____
System类
概述:
System 类包含一些有用的类字段和方法。它不能被实例化。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
常见字段:
static PrintStream err“标准”错误输出流。
static InputStream in
“标准”输入流。
static PrintStream out
“标准”输出流。
public class Demo {
public static void main(String[] args) throws IOException {
//默认控制台输出
System.out.println("out");
//默认控制台输出
System.err.println("err");
//定义一个字节数组接受输入数据
byte[] b = new byte[1024];
//默认键盘输入,将输入的数据读入b数组中
System.in.read(b, 0, 1024);
//将键盘输入的数据打印在控制台上
String str = new String(b);
System.out.println(str);
}
}
/*
结果:
out
err
in
in
*/
常见方法:
复制数组:
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
集合操作类底层就是调用这个方法。
返回当前时间:
static long currentTimeMillis()返回以毫秒为单位的当前时间与1970年1月1日午夜之间的时间差。
终止Java虚拟机:
static void exit(int status)终止当前正在运行的 Java 虚拟机。
调用垃圾回收器:
static void gc()运行垃圾回收器。
获取系统的环境变量:
static Map<String,String> getenv()返回一个不能修改的当前系统环境的字符串映射视图。
static String getenv(String name)
获取指定的环境变量值。
public class Demo {
public static void main(String[] args) {
//获取所有的环境变量,返回Map集合
for(Map.Entry<String, String> m : System.getenv().entrySet()) {
System.out.println(m.getKey()+":"+m.getValue());
}
}
}
/*
结果:
JAVA_HOME:D:\Program Files\Java\jdk1.8.0_51
SESSIONNAME:Console
ALLUSERSPROFILE:C:\ProgramData
...
*/
public class Demo {
public static void main(String[] args) {
//获取指定环境变量名的变量值
String str = System.getenv("JAVA_HOME");
System.out.println(str);
}
}
/*
结果:
D:\Program Files\Java\jdk1.8.0_51
*/
获取和设置系统属性:
static Properties getProperties()确定当前的系统属性集合。
static String getProperty(String key)
获取指定键指示的系统属性。
static String getProperty(String key, String def)
获取用指定键描述的系统属性,默认值为def。
static String setProperty(String key, String value)
设置指定键指示的系统属性。
public class Demo {
public static void main(String[] args) {
//获取系统属性,包括JVM和操作系统等等,返回类型为Hashtable的子类
Properties p = System.getProperties();
for(Entry<Object, Object> m : p.entrySet()) {
System.out.println(m.getKey()+"::"+m.getValue());
}
}
}
/*
结果:
java.runtime.name::Java(TM) SE Runtime Environment
sun.boot.library.path::D:\Program Files\Java\jdk1.8.0_51\jre\bin
user.country::CN
os.name::Windows 7
...
*/
Runtime类
概述:
每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例,只能通过getRuntime方法获取对象(单例模式)
常见方法:
执行系统命令:
Process exec(String command)在单独的进程中执行指定的字符串命令。
public class Demo {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
//开启新进程调用系统的计算器程序,并且返回此进程对象
Process pro = runtime.exec("calc.exe");
//等待3秒后调用计算器进程对象的destroy方法杀掉进程
Thread.sleep(3000);
pro.destroy();
}
}
Date类
概述:
处理时间的类,但是在JDK1.1以后已经被Calendar取代常见方法:
比较时间:
boolean after(Date when)测试此日期是否在指定日期之后。
boolean before(Date when)
测试此日期是否在指定日期之前。
int compareTo(Date anotherDate)
比较两个日期的顺序。
boolean equals(Object obj)
比较两个日期的相等性。
修改时间:
void setTime(long time)设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
public class Demo {
public static void main(String[] args) {
//默认创建对象为创建时的时间
Date date = new Date();
//也可以创建时设置时间单位毫秒,起始于1970年01月01日 08:00:00(亚洲时区)
Date date2 = new Date(2000);
//定义一个格式化时间的对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
//直接打印Date
System.out.println(date);
//打印格式化后的时间
System.out.println(sdf.format(date));
System.out.println(sdf.format(date2));
//判断date是否是在date2之后的日期
System.out.println(date.after(date2));
//判断date是否是在date2之前的日期
System.out.println(date.before(date2));
//比较date是否大于date2,大于返回1,等于返回0,小于返回-1
System.out.println(date.compareTo(date2));
}
}
/*
结果:
Mon Jan 18 21:48:56 CST 2016
2016年01月18日 09:48:56
1970年01月01日 08:00:02
true
false
1
*/
Calendar类
概述:
Calendar 类是一个抽象类,可以通过getInstance来获取实例注意:月份是从0开始的
常见方法:
获取日期:
int get(int field)返回给定日历字段的值。
Date getTime()
返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
public class Demo {
public static void main(String[] args) {
//默认时间为创建时的时间
Calendar c = Calendar.getInstance();
//获取月,因为是0开始,所以+1
System.out.println(c.get(Calendar.MONTH)+1);
//获取年
System.out.println(c.get(Calendar.YEAR));
//格式化输出时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
System.out.println(sdf.format(c.getTime()));
}
}
/*
结果:
2016年01月18日 10:27:17
*/
设置日期:
void setTime(Date date)使用给定的 Date 设置此 Calendar 的时间。
void set(int year, int month, int date, int hourOfDay, int minute, int second)
设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
public class Demo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(2012, 10, 12, 23, 45, 36);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
System.out.println(sdf.format(c.getTime()));
}
}
/*
结果:
2012年11月12日 11:45:36
*/
改变日期:
abstract void add(int field, int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public class Demo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
System.out.println(sdf.format(c.getTime()));
//年份+1
c.add(Calendar.YEAR, 1);
System.out.println(sdf.format(c.getTime()));
//天数+20,溢出部分会根据日历自动计算
c.add(Calendar.DAY_OF_MONTH, 20);
System.out.println(sdf.format(c.getTime()));
//年份-3
c.add(Calendar.YEAR, -3);
System.out.println(sdf.format(c.getTime()));
}
}
/*
结果:
2016年01月18日 10:51:32
2017年01月18日 10:51:32
2017年02月07日 10:51:32
2014年02月07日 10:51:32
*/
Math类
概述:
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。常见字段:
static double E比任何其他值都更接近 e(即自然对数的底数)的 double 值。
static double PI
比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。
public class Demo {
public static void main(String[] args) {
System.out.println("E:"+Math.E);
System.out.println("PI:"+Math.PI);
}
}
/*
结果:
E:2.718281828459045
PI:3.141592653589793
*/
常见方法:
求绝对值(int为例):
static int abs(int a)返回 int 值的绝对值。
public class Demo {
public static void main(String[] args) {
int i = -1;
System.out.println("abs:"+Math.abs(i));
}
}
/*
结果:
abs:1
*/
求最值(int为例):
static int max(int a, int b)返回两个 int 值中较大的一个。
static int min(int a, int b)
返回两个 int 值中较小的一个。
public class Demo {
public static void main(String[] args) {
System.out.println("max:"+Math.max(1, 2));
System.out.println("min:"+Math.min(1, 2));
}
}
/*
结果:
max:2
min:1
*/
取整:
static double floor(double a)返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
static double ceil(double a)
返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。
static double rint(double a)
四舍五入,返回浮点数类型值
static long round(double a)
四舍五入,返回整数类型值
public class Demo {
public static void main(String[] args) {
double d = 1.456;
System.out.println("ceil:"+Math.ceil(d));
System.out.println("floor:"+Math.floor(d));
System.out.println("rint:"+Math.rint(d));
System.out.println("round:"+Math.round(d));
d = 1.556;
System.out.println("rint:"+Math.rint(d));
System.out.println("round:"+Math.round(d));
}
}
/*
结果:
ceil:2.0
floor:1.0
rint:1.0
round:1
rint:2.0
round:2
*/
次幂:
static double pow(double a, double b)返回第一个参数的第二个参数次幂的值。
static double sqrt(double a)
返回正确舍入的 double 值的正平方根。
static double cbrt(double a)
返回 double 值的立方根。
public class Demo {
public static void main(String[] args) {
//求2的3次方
System.out.println(Math.pow(2, 3));
//求2的-1次方
System.out.println(Math.pow(2, -1));
//求4的平方根
System.out.println(Math.sqrt(4));
//求8的立方根相当于求8的1/3次幂
System.out.println(Math.cbrt(8));
System.out.println(Math.pow(8, 1.0/3));
}
}
/*
结果:
8.0
0.5
2.0
2.0
2.0
*/
随机数:
static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
public class Demo {
public static void main(String[] args) {
//包含0不包含1的0-1的值
for(int i=0; i<3; i++)
System.out.println(Math.random());
}
}
/*
结果:
0.2762989183275707
0.4852546433556253
0.6622856581850736
*/
其他数学方法:
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 值,该值大于等于参数,并等于某个整数。