黑马程序员_基础_System、Runtime、Date、Calendar和Math-Random等常用对象的学习笔记

本文深入讲解Java中的System、Runtime、Date、Calendar、Math和Random类的功能及应用,包括系统属性设置、日期时间处理、数学运算及随机数生成等方面。

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

-------android培训java培训、期待与您交流!----------

1、System类

System类包含一些有用的类字段和方法,它不能被实例化,其所有的字段和方法都是静态的。out、in 和 err 是 System 的3个字段,依次为 PrintStream、InputStream 和 PrintSystem 输入输出流。System.out.println() 实质为 System 和 PrintStream 输出流组合而成输出语句。

System类可以描述系统环境,使用 System.getProperties() 方法能获取系统的属性信息,所有的属性信息都是字符串,没有泛型定义。可以使用 System.setProperty() 方法自定义一些特有的信息,例:System.setProperty("user.name", "tnoblew"); ,使用 System.getProperty("user.name"); 方法获取指定的 key 的 value。

public static void system(){	//System类
		
		//在系统中自定义一些特有的信息
		System.setProperty("user.name", "tnoblew");
		
		//获取指定key的信息
		String info = System.getProperty("user.name");
		P.rintln(info);
		
		String result = System.getProperty("user.age");
		P.rintln(result);
		
		//获取系统的属性信息
		Properties pps = System.getProperties();
		
		//打印系统的属性信息
		for(Object obj : pps.keySet()){
			P.rintln(obj + " : " + pps.get(obj));
		}
	}

使用命令提示符窗口运行java类的时候可以在 java 命令后面接 -Duser.age-22 类名动态加载参数信息,若使用 MyEclipse 软件想动态加载参数信息,按如下步骤:右击Run As --> Run Configurations --> Arguments --> VM arguments 中添加此字段 -Duser.age=22 即可。如下图所示:

2、Runtime类

每个 Java 应用程序都有一个Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。
Runtime类并没有提供构造函数,不可以new对象,类中还有非静态方法,说明Runtime类肯定提供了方法获取本类对象。而且该方法是静态的,返回值类型是本类类型。由这点可以看出该类使用了单例设计模式完成。
可以使用 Runtime 提供的 exec() 方法调用本机的 exe 可执行文件。调用了 exe 可执行文件之后,生成一个Process对象,可以使用 Process 提供的 destroy() 方法杀死由此 Runtime 启动的进程。exec() 方法中传递的参数中,可以在exe可执行文件后空一格传入文件路径,可以打开指定的文件。

public static void runtime() throws Exception{	//Runtime类
		
		Runtime rt = Runtime.getRuntime();
		Process p = rt.exec("D:\\MineSweeper.exe");
		rt.exec("C:\\Windows\\SysWOW64\\notepad.exe D:\\书签.txt");		//在exe程序后面接文件路径 可直接打开此文件
		
		Thread.sleep(2000);
		p.destroy();	//杀死进程
	}

在本机测试时,可以调用扫雷游戏和notepad,但使用 rt.exec("cmd.exe"); 调用cmd.exe 无响应,经查找资料,调用cmd.exe需要接start参数,如下

rt.exec("cmd.exe /c start");

3、Date类

类Date表示特定的瞬间,精确到毫秒。可以使用 SimpleDateFormat 类格式化输出日期:

public static void date(){		//Date类
		
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
		Date d = new Date();
		P.rintln(df.format(d));
	}

4、Calendar类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

Calendar c = Calendar.getInstance();实例化一个Calendar,其中c中包含时区、时间、日期、年份、月份、星期等等各种信息。

可以使用Calendar提供的add方法,根据日历的规则,为给定的日历字段添加或减去指定的时间量。

以下是视频中练习题自己做的答案:

public static void calendar_exec(){
		
		//获取任意年的二月有多少天
		Random rd = new Random();
		int year = rd.nextInt(2100);	//随机一个小于2100的年份
		Calendar c = Calendar.getInstance();
		c.set(year, 2, 1);			//设置某一年的3月1日
		c.add(Calendar.DATE, -1);	//此日期减一天,即为2月最后一天
		int sum = c.get(Calendar.DATE);
		P.rintln(year + "年2月份有" + sum + "天");
		
		//获取昨天的现在这个时候
		Calendar c2 = Calendar.getInstance();
		c2.add(Calendar.DATE, -1);
		P.rintln(c2.get(Calendar.YEAR) + "年" + (c2.get(Calendar.MONTH) + 1) + "月" + c2.get(Calendar.DATE) + "日" + 
				c2.get(Calendar.HOUR_OF_DAY) + "时" + c2.get(Calendar.MINUTE) + "分" + c2.get(Calendar.SECOND) + "秒");
	}

学习视频学到了查表法,用此方法改写了下基础测试时自己计算星期几的代码:

/**
 * 第九题:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
 * @author xiaogh
 *
 */
public class Test9 {

	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		P.rintln("请按“yyyy-MM-dd”格式输入一个日期:");
		String str = scan.nextLine();
		scan.close();
		
		//将String转换为Date
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date = new Date();
		try {
			date = format.parse(str);
		} catch (ParseException e) {
			P.rintln("请按格式正确输入日期");
			return;
		}
		
		String weekDay = dayOfWeek(date);	//调用查询星期方法返回指定日期是星期几
		int yearDay = dayOfYear(date);		//调用查询天数方法返回指定日期在一年中是第几天
		
		//输出结果,查看效果
		P.rintln(weekDay + "   " + str.substring(0, 4) + "年第" + yearDay + "天");
	}
	
	public static String dayOfWeek(Date date){
		
		//实例化一个Calendar对象
		Calendar cd = Calendar.getInstance();
		//使用输入的日期初始化Calendar对象
		cd.setTime(date);
		//使用Calendar提供的方法,获得指定日历的星期
		int i = cd.get(Calendar.DAY_OF_WEEK);
		
		String[] days = new String[]{"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
		
		return days[i];
		
		//根据i值,获取星期数
//		String day = null;
//		switch(i){
//		case 2: 
//			day = "星期一"; break;
//		case 3: 
//			day = "星期二"; break;
//		case 4: 
//			day = "星期三"; break;
//		case 5: 
//			day = "星期四"; break;
//		case 6: 
//			day = "星期五"; break;
//		case 7: 
//			day = "星期六"; break;
//		case 1: 
//			day = "星期日";
//		}
		
//		return day;
	}
	
	public static int dayOfYear(Date date){
		
		//实例化一个Calendar对象
		Calendar cd = Calendar.getInstance();
		//使用输入的日期初始化Calendar对象
		cd.setTime(date);
		//使用Calendar提供的方法,获得指定日历为第几天
		int i = cd.get(Calendar.DAY_OF_YEAR);
		
		return i;
	}

}

5、Math-Random类

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。一些常用方法:

public static void math_random(){		//Math类
		
		double[] results = new double[10];
		int i = 0;
		
		results[i++] = Math.abs(-2);  		//返回参数的绝对值
		results[i++] = Math.ceil(-13.23);	//返回大于等于参数的最小整数
		results[i++] = Math.floor(14.33);	//返回小于等于参数的最大整数
		results[i++] = Math.round(23.14);	//返回参数四舍五入的整数
		results[i++] = Math.pow(2, 3);		//返回第一个参数的第二个参数次幂的值
		
		for(double d : results){
			if(d == 0.0){
				break;
			}
			P.rintln(d);
		}
		
		P.rintln("--------------我是分隔符----------------");
		
		//随机数Math.random()
		for(i = 0; i < 5; i++){
			double d = Math.random();		//返回大于等于0.0小于1.0的值
			P.rintln(d);
		}
		
		P.rintln("--------------我是分隔符----------------");
		
		for(i = 0; i < 5; i++){
			int d = (int)((Math.random() * 10) + 1);	//乘以某个值即可扩大随机范围
			P.rintln(d);
		}
		
		P.rintln("--------------我是分隔符----------------");
		
		//使用Random类生成随机数
		Random rd = new Random();
		for(i = 0; i < 5; i++){
			int d = rd.nextInt(10);
			P.rintln(d);
		}
		
	}


------- android培训java培训、期待与您交流! ----------详细请查看: www.itheima.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值