黑马程序员:其他类的介绍:System、Properties、Runtime、Calendar、Math等

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

重点是为了讲述API查询方法

import java.util.Properties;
/*
 * System类:描述系统一些信息
 * 类中的方法和属性都是静态的
 * out:标准输出,默认是控制台
 * in:标准输入,默认是键盘
 * 获取系统属性信息:Properties getProperties();
 */
public class SystemClassDemo {
	public static void main(String[] args) {
		Properties prop = System.getProperties();
		/*Properties是Hashtable的子类,也就是Map集合的一个子类对象
		 * 那么就可以通过Map的方法取出该集合中的元素
		 * Properties集合中存储的都是字符串,没有泛型定义
		 */
		
		//获取所有属性信息
		for (Object obj:prop.keySet()) { //也可以通过迭代器方式
			String value = (String)prop.get(obj);
			sop(obj+"~"+value); 
		}
		
		//如何在系统中自定义一些特有的信息?
		//System.setProperty("mykey", "myvalue");
		//可不可以在JVM启动时,动态加载一些属性信息呢?
		//可以通过java -Dkey=value 完成
		
		//获取指定属性信息
		String osname = System.getProperty("os.name"); //获取系统名称
		sop(osname); //Linux
	}
	public static void sop(Object obj) {
		System.out.println(obj);
	}
}

import java.io.IOException;


/*
 * Runtime类
 * 该类并没有提供构造函数
 * 说明不可以new对象,那么会直接想到该类中的方法都是静态的,
 * 但是该类中还有非静态方法,那么说明该类肯定会提供一个方法获取本类对象,而且该方法是静态的
 * 并且返回值类型是本类类型
 * 由以上特点可以看出该类使用了单例设计模式完成
 * 该类获取本类对象方法 static Runtime getRuntime();
 */
public class RuntimeClassDemo {


	public static void main(String[] args) throws IOException,InterruptedException
	{ 
		// TODO Auto-generated method stub
		Runtime r = Runtime.getRuntime();
		Process p = r.exec("gnome-system-monitor");
		Thread.sleep(5000);
		p.destroy(); //结束进程
	}


}

import java.util.Calendar;


/*
 * 通过Calendar获取年、月、日、星期
 * Calendar不能创建对象,但是可以通过getInstance()返回本类对象
 * 再通过返回的对象.get(获取的信息) 比如:
 * Calendar c = Calendar.getInstance();
 * c.get(Calendar.YEAR) 获取年  YEAR为Calendar静态方法
 * c.add(Calendar.DAY_OF_MONTH,-18) 减18天,注意日期是关联性的,比如对天数改变可能引起月份改变
 * 注意点:
 * 1.JAVA中MONTH返回0表示一月
 * 2.JAVA中DAY_OF_WEEK返回1表示周日
 */
public class CalendarUtilClassDemo {


	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		//c.set(2012,2,23); //设置当前时间为2012年3月23日
		//c.add(Calendar.DAY_OF_MONTH,-14); //-14天
		printCalendar(c);
		
	}
	public static void printCalendar(Calendar c)
	{
		sop(c.get(Calendar.YEAR)+"年");
		//查表法(曾经做进制转换的时候用过)
		String[] mons = {"一月","二月","三月","四月"
						,"五月","六月","七月","八月"
						,"九月","十月","十一月","十二月"};
		String[] week = {"周日","周一","周二","周三","周四","周五","周六"};
		int monindex = c.get(Calendar.MONTH);
		int weekindex = c.get(Calendar.DAY_OF_WEEK);
		sop(mons[monindex]); //java中0表示一月
		sop(c.get(Calendar.DAY_OF_MONTH)+"日");
		sop(week[weekindex-1]); //-1是因为java中1表示周日,2表示周一
	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}


}

关于Date、SimpleDateFormat、Calendar的应用
import java.text.SimpleDateFormat;
import java.util.Calendar;


/*
 * 练习题:
 * 一、获取任意年的二月有多少天
 * 	思路:只要获取3月1日-1天是多少即可知道二月有多少天
 * 二、获取昨天的现在这个时间
 * 	思路:当前时间-1天即可
 * 三、求上学有效天数,时间范围为2012.9.1~2013.7.1,假设周六日为无效日
 * 	思路:for循环,若是无效日期,则不累加
 */
public class DateTest {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//sop(FebruaryDays(2013));
		//sop(yesterdayNowTime());
		sop(effectiveDays(2012,9,1,2013,7,1));
	}
	//求2012.9.1~2013.7.1有效天数
	public static int effectiveDays(int year1,int month1,int day1, int year2,int month2,int day2)
	{	
		Calendar c = Calendar.getInstance();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");
		month1 -= 1; //JAVA中0表示1月
		month2 -= 1;
		c.set(year1,month1,day1);
		sop("起始时间:"+sdf.format(c.getTime()));
		int count = 0;
		while(c.get(Calendar.MONTH)!=month2 
				|| c.get(Calendar.YEAR)!=year2 
				|| c.get(Calendar.DAY_OF_MONTH)!=day2)
		{
			c.add(Calendar.DAY_OF_MONTH,1);
			if (c.get(Calendar.DAY_OF_WEEK)==1 || c.get(Calendar.DAY_OF_WEEK)==7)
				continue;
			count++;
		}
		sop("结束时间:"+sdf.format(c.getTime()));
		return count;
	}
	//获取任意年的二月有多少天
	public static int FebruaryDays(int year)
	{
		Calendar cl = Calendar.getInstance();
		cl.set(year,2,1); //设置时间为某年,3月1日
		cl.add(Calendar.DAY_OF_MONTH, -1);
		return cl.get(Calendar.DAY_OF_MONTH);
	}
	//获取昨天的现在这个时间
	public static String yesterdayNowTime()
	{
		Calendar cl = Calendar.getInstance();
		cl.add(Calendar.DAY_OF_MONTH, -1);
		int day = cl.get(Calendar.DAY_OF_MONTH);
		int hour = cl.get(Calendar.HOUR_OF_DAY);
		int minute = cl.get(Calendar.MINUTE);
		int mills = cl.get(Calendar.MILLISECOND);
		return day+"号"+hour+"点"+minute+"分"+mills+"秒";
		
	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}


}

Math对象
import java.util.Random;




public class MathDemo {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double d = Math.ceil(12.34); //13.0 ceil返回大于指定数据的最小整数
		double d1 = Math.floor(12.34); //12 floor返回小于指定数据的最大整数
		long l = Math.round(12.54);//13 round返回四舍五入的值
		sop(d);
		sop(d1);
		sop(l);
		double d2 = Math.pow(2, 3); //2的3次方
		sop(d2);
		/*
		for (int x=0; x<10; x++)
		{
			//double rd =  Math.random(); //返回0到1之间的伪随机数(包含0,不包含1)
			//sop(rd); //伪随机是因为底层用算法弄出的随机
			int intrd = (int)(Math.random()*10+1);
			sop(intrd);
		}
		*/
		//取随机数的另一种方法
		Random r = new Random();
		for (int x=0; x<10; x++)
		{
			sop(r.nextInt(11)); //包含0,不包含11
		}
	}
	public static void sop(Object obj) {
		System.out.println(obj);
	}


}


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值