黑马程序员_【总结】_集合框架知识梳理4_(end)

本文概述了Java集合框架中的几个常用类如System、Properties、Runtime、Date、Calendar及其应用,同时介绍了数学方法如Math类中的随机数生成、四舍五入、次幂计算等功能,并提供了实际代码示例。
集合框架知识梳理4


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

---------------------------------------------------------------------------------------------------------------------------------------------

几个常用类
-----------------------------
1、System 类中的方法和属性都是静态的。
System.in 标准输入默认键盘--System.out标准输出默认控制台
2、 获取系统属性信息:Properties getProperties();  【重点】
3、Properties 是Hashtable的子类,也就是Map集合的一个子类对象。
4、Runtime  该类没有构造函数,属于单列模式,《保证对象的唯一》
Runtime r = Runtime.getRuntime();
r.exec(String);可以启动应用程序
r.exec(程序 对应文件);
5、Date  -    SimpleDateFormat 
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  hh:mm:ss");
String time = sdf.format(d);
6、Calendar 类可以获取系统的配置信息。
7、重点掌握, c.add(Calendar.YEAR,4); //给年加4年。 加减亦可。
    c.add(Calendar.MONTH,10); 
//加月的时候,故意放一个大数字,发现自动相加到下一年了。
8、 Math.random() 生成随机数。
---------------------------------------------------------------


【12】
System
获取系统所有信息:string PropertyNames()
获取系统指定信息:String alue = System.getProperty("os.name");
设置 自定的兼职进系统信息。
System.setProperty("myKey","myValue");
动态加入值,Java -Dkey = value类名
System:  类中的方法和属性都是静态的。
out   :  标准输出,默认是控制台
in    :  标准是输入,默认是键盘


获取系统属性信息:Properties getProperties();  【重点】


查看API的时候
当一个类没有构造函数的时候,说明该类不能直接创建实例,通常只有静态方法。
class SystemDemo1 {
	public static void main(String[] args) {
		Properties prop = System.getProperties();
		//因为Properties 是Hashtable的子类,也就是Map集合的一个子类对象。
		//那么可以用过map 的方法取出该集合中的元素。
		// 该集合中存储的 都是字符串,没有泛型定义。
		//如何在系统中,自定义一些特有信息呢?
		System.setProperty("mykey","myvalue");
		//获取指定系统信息
		String value = System.getProperty("os.name");
		System.out.println("value:"+value);
		//可不可以在jvm启动时,动态加载一些属性信息呢?
		String v = System.getProperty("haha");
		System.out.println("v:"+v);
		//java -Dhaha=qq SystemDemo1    在CMD中运行 ,即可给v赋值。
		//获取所有系统信息。
		//for(Object obj : prop.keySet()){
		//	System.out.println(obj);  //obj 就是键
		//	String value = (String)prop.get(obj);// get 键,获取alue
		//	System.out.println(obj+"::::"+value);
		//}
	}
}
【13】
Runtime   单列设计模式(不能new对象)
该对象 常用 于启动,和结束指定进程
Runtime r = Runtime.getRuntime();
r.exec(String);可以启动应用程序
r.exec(程序 对应文件);

该类中并没有提供构造函数
说明不可以new对象,那么会直接想到,该类中的方法都是静态的
发现该类中还有非静态的方法
说明该类肯定提供了方法获取本来对象,而且该方法是警惕的,
并且返回值是本类类型。             (单列模式有木有。)

由这个特点,可以看出该类使用了单列设计模式完成《保证对象的唯一》

该方法是Static Runtime getRuntime()
class  RuntimeDemo2{
	public static void main(String[] args) throws Exception{
		Runtime r = Runtime.getRuntime();
		//r.exec("D:\\Tool2\\QQ2014\\QQProtect\\Bin\\QQProtect.exe");
		//r.exec("QQProtect.exe");  //没有配置环境变量,所以失败。
		Process p =r.exec("D:\\Tool2\\weiyundisk\\Bin\\wydrive.exe");  //process 返回一个进程		
		//为了看到下面语句的作用,先来一个间歇时间
		Thread.sleep(5000);//5秒		
		p.destroy();
		//杀掉进程。该方法只能杀掉他启动的线程。  
		//notepad  记事本     用记事本打开后面的文件。
		//扩展:如果把记事本 改为 播放器   是可以打开电影的。
		Process p2 =r.exec("notepad.exe  RuntimeDemo2.java");		
	}
}
演示 打开 微云 软件 然后 延迟5秒 又结束该进程
最后Process p2 =r.exec("notepad.exe  RuntimeDemo2.java");
打开 RuntimeDemo2.java  用notepad.exe 软件。
【14】
Date  :    日期。
SimpleDateFormat 在java.text 包中
Date d = new Date(); 这样的格式查看不方便。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  hh:mm:ss");
再调用String time = sdf.format(d);进行格式化。 的上上诉日期格式
class  DateDemo3{
	public static void main(String[] args) {
		Date d =new  Date();
		System.out.println(d);//打印的时间看不懂。 如何有格式的显示?
		//将模式封装到simpleDateformat对象中
		//SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");/*yyyy年MM月dd日 hh:mm:ss
		//SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  hh:mm:ss");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");
		//调用formation 方法让模式格式化指定对象
		String time = sdf.format(d);
		System.out.println("Time:"+time);
	}
}
该类用来操作时间,可以通过上诉方式,获取指定格式的时间显示方式。
【15】
Calendar 
抽象类,不能直接创建对象,可以通过静态方法,得到一个当前的日期对象
Calendar c = Calender.getInstance();
int index1 = c.get(Calender.MONTH);
int index2 = c.get(Calender.DAY_OF_WEEK);

可以直接设置日期
c.set(2014,6,16);
可以对当前日期 进行仍以的前后加减
c.add(Calendar1YEAR,1);  //加一年。
class  CalendarDemo4{
	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		//System.out.println("yeat !"+c);
		//	打印c我们发现有很多信息,其中年是以键值对出现的,
		//	那么。就能使用Map的方法获取
		//	而YEAR这个字段必须指定所属。
		System.out.println("yeat !"+c.get(Calendar.YEAR));
		//打印一个年月日组合。
		//【a】使用查表法来指定月份。
		String [] mons = {"一月","二月","三月","四月",
						  "五月","六月","七月","八月",
						  "九月","十月","十一月","十二月"};
		int index = c.get(Calendar.MONTH);
		//【b】使用查表法来指定月份。 一定要注意这个七天的顺序:空天123
		String [] xing = {"","礼拜天","礼拜一","礼拜二","礼拜三","礼拜四","礼拜五","礼拜六"};
		int index2 = c.get(Calendar.DAY_OF_WEEK);
		sop(c.get(Calendar.YEAR)+"年");
		//sop(c.get(Calendar.MONTH)+"月");使用查表法后 同样的道理,星期也可以如此。
		sop(mons[index]);
		sop(c.get(Calendar.DAY_OF_MONTH)+"日");
		//sop("星期"+c.get(Calendar.DAY_OF_WEEK));  // 使用查表法。【b】
		sop(xing[index2]);
		//发现月数是当前月数-1  因为Java都是从0 开始
		//	并且,数字显示月份效果不佳。下面继续【a】
		// 老方法获取年。
		//	上面的例子SimpleDateFormat 格式化了年月日,后来加上了具体世间,还加了星期
		//	那么我们只传入一个年,然后进行格式化,是否等得到年?
		Date d = new Date ();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
		String year = sdf.format(d);
		System.out.println("yeat !"+year);
	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
}
通过打印://System.out.println("yeat !"+c); 能够获取到系统的配对信息。
【重点:必须掌握】
Calendar    设定时间。
两个练习:
1、获取任一年的二月有多少天。
2、获取昨天的现在这个时刻。
class CalendarDemo5 {
	public static void main(String[] args) {	
		Calendar c =Calendar.getInstance();
		//set 写一个年月日。然后打印。
		//c.set(2012,2,23);//设定时间
		//推迟时间,必须掌握。
		c.add(Calendar.YEAR,4); //给年加4年。 加减亦可。
		c.add(Calendar.MONTH,10); //加月的时候,故意放一个大数字,发现自动相加到下一年了。
		printlnCalendar(c);
	}
	// 上一Demo 中的方法。
	public static void printlnCalendar(Calendar c ) 
	{
		//使用查表法来指定月份。 星期几
		String [] mons = {"一月","二月","三月","四月",
						  "五月","六月","七月","八月",
						  "九月","十月","十一月","十二月"};
		int index = c.get(Calendar.MONTH);
		String [] xing = {"","礼拜天","礼拜一","礼拜二","礼拜三",
			                 "礼拜四","礼拜五","礼拜六"};
		int index2 = c.get(Calendar.DAY_OF_WEEK);
		sop(c.get(Calendar.YEAR)+"年");//年
		sop(mons[index]);//月
		sop(c.get(Calendar.DAY_OF_MONTH)+"日");//日
		sop(xing[index2]);//礼拜几
	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
}
16】
Math.ceil()    :返回大于指定数据的最小整数
Math.floor()   :返回小于指定数据的最大整数
Math.round     :四舍五入。
Math.pow(2,3)  :计算次幂  2的3次幂
Math.random()  :生成随机数
练习:
给定一个小数,保留该小数的后两位。
class MathDemo7 {
	public static void main(String[] args) {
		double m = Math.ceil(12.34);//ceil 返回大于指定数据的最小整数
		double m1= Math.floor(12.34);//floor 返回小于指定数据的最大整数
		long l = Math.round(12.34);
		long l1 = Math.round(12.54);// round 四舍五入。
		sop(m);
		sop(m1);
		sop(l);
		sop(l1);
		double d2 = Math.pow(2,3);//  pow  计算次幂  2的3次幂
		sop(d2);
		//随机数
		sop("----------------------------");
		suiji();	
	}  
	public static void suiji(){
		Random r = new Random();
		for(int i=0 ; i<150 ; i++){
			//double d = Math.random();
			//int d = (int)(Math.random()*89+10);
			int d=r.nextInt(899)+100;//直接生成**以内的数字。  
			sop(d);
		}
	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
}
Random r = new Random();
int d = (int)(Math.random()*89+10);
随机数的生成,非常的常用。





---------------------------------------------------------------------------------------------------------------------------------------------
---------- android培训、 java培训、期待与您交流!----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值