Java基础_09_Java常见类

本文深入解析Java中的System、Runtime、Date、Calendar、Math类,涵盖输入输出流、环境变量获取、命令执行、时间处理、数学运算等功能,为开发者提供全面的技术指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


_____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 值,该值大于等于参数,并等于某个整数。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值