黑马程序员——【学习笔记】IO技术——API中其它常用的类

-------<a target=_blank target="_blank" href="http://www.itheima.com/">android培训</a>、<a target=_blank target="_blank" href="http://blog.csdn.net/ochuxinzhe/article/details/www.itheima.com">java培训</a>、期待与您交流!----------


1 System类

System类中的字段和方法都是静态的。


1.1 常用方法

1.1.1 获取时间

long currentTimemMillis();获取当前时间的毫秒值。

可以通过多次调用此方法获得程序执行的时间。

public class Day20 {
	public static void main(String[] args){
		long timeBegin = System.currentTimeMillis();
		System.out.println(timeBegin);
		for(int i=0;i<100;i++){try {
			Thread.sleep(10);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.print(i);}
		System.out.println();
		long timeEnd = System.currentTimeMillis();
		System.out.println(timeEnd);
		System.out.println(timeEnd-timeBegin);		
	}
}
1444727053346
0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
1444727054385
1039


1.1.2 获取系统信息

Properties getProgerties();获取当前的系统属性

Properties是一个集合,存储的都是String类型的键值,这些键值跟当前系统的信息有关。

其中,该类下有stringPropertyNames()方法可以将Properties里的键全部获取并返回一个Set集合。

又有getProperty()方法可以根据键获取系统信息中的值。

class Day20{
	public static void main(String[] args){
		Properties p = System.getProperties();
		System.out.println(p);
		Set<String> s = p.stringPropertyNames();
		System.out.println(s);
		Iterator<String> i = s.iterator();
		while(i.hasNext()){
			String key = i.next();
			String value = p.getProperty(key);
			System.out.println(key+"..."+value);
		}
	}
}

PS:还可以给属性设置一些属性信息,这些信息是全局的,用java添加之后,其它程序都可以使用。

方法:System.setProperty("myName“,"zhangsan");


2 Runtime类

每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。应用程序不能够创建自己的Runtime实例。

它没有构造函数,说明不能直接创造它的实例,但是它有方法,说明要么它所有方法都是静态方法,要么它能返回一个自己的对象的方法(即单例设计模式)。

Runtime就是后者,单例设计模式的类,

Runtime getRumtime();获取该类的对象。

class Day20{
	public static void main(String[] args) throws IOException{
		Runtime r = Runtime.getRuntime();
		r.exec("D:\\Program Files\\Tencent\\QQ\\Bin\\QQScLauncher.exe");
	}
}
用Runtime下的exec();方法可以根据路径运行系统里的程序。


3 Math类

Math:头功了操作数学运算的方法,都是静态的。

常用方法:

ceil():返回大于参数的最小整数

floor():返回小于参数的最大整数。

round():返回四舍五入的整数。

4 Date、DateFormat类

new Date()新对象可以直接获取目前的时间,

new Date(Long millis);输入毫秒可以将毫秒转换成时间

class Day20{
	public static void main(String[] args){
		Date d = new Date();
		System.out.println(d);
		Date d2 = new Date(1000*60);
		System.out.println(d2);
	}
}
Tue Oct 13 17:29:07 CST 2015
Thu Jan 01 08:01:00 CST 1970


4.1 日期对象和毫秒值之间的转换

4.1.1 毫秒值转化为日其对象的两个方法

①通过Date对象的构造方法new Date(Long millis);

②通过setTime()设置。因为可以通过Date对象的方法对该日期中的各个字段(年月日等)进行操作


4.1.2 日期对象转化为毫秒

①getTime方法,直接getTime可获得当前时间的毫秒值,与System.currentTimeMillis()一样。


4.1.3 DateFormat类

它是一个单例设计模式,需要getInstance()。

但DateFormat子类中有SimpleDateFormat类供使用。可以理解为SimpleDateFormat类是一个时间的格式化器,创建这个对象,就可以去格式化参数里的时间。

class Day20{
	public static void main(String[] args){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
		System.out.println(sdf.format(new Date()));		
	}
}
2015年10月13日

但是DateFormat出来的时间都是String形式,不能拿到计算,需要用Integer.parseInt();转换。


4.1.4 将日期格式的字符串转换成日其对象

使用的是DateFormat中的parse方法。返回日期对象

class Day20{
<span style="white-space:pre">	</span>public static void main(String[] args) throws ParseException{
//<span style="white-space:pre">		</span>String s1 ="2015nian4yue19ri";
<span style="white-space:pre">		</span>String s1 ="2015年4月19日";
<span style="white-space:pre">		</span>DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
<span style="white-space:pre">		</span>Date d = df.parse(s1);
<span style="white-space:pre">		</span>System.out.println(d);
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日");
<span style="white-space:pre">		</span>Date d2 = df2.parse(s1);
<span style="white-space:pre">		</span>System.out.println(d2);
<span style="white-space:pre">	</span>}
}
注意日期字符串要保证符合日期的格式

示例:“2015-10-11”到“2014-10-11”中间有多少天?

思路:因为日期值不能直接相减,但是毫秒值可以,

需要先把日期转换成毫秒值,就需要获取Date对象,再用Date对象的getTime()方法转换成毫秒值。

获取Date对象,首先要把字符串换成Date对象

class Day20{
	public static void main(String[] args) throws ParseException{
		String s1 = "2015-10-11";
		String s2 = "2014-10-11";
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Date d1 = df.parse(s1);
		Date d2 = df.parse(s2);
		System.out.println(d1);
		System.out.println(d2);
		long l1 = d1.getTime();
		long l2 = d2.getTime();
		
		long l = l2-l1;
		System.out.println(l);
		
		int day = Math.abs((int)(l/1000/60/60/24));
		System.out.println("相差"+day+"天");
	}
}


5 Calendar类

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

Calendar.YEAR

Calendar.MONTH

...等等形式可以理解为日期格式的模板


Calendar c = Calendar.getInstance();

c.get(Calendar.YEAR);返回年份

c.set(2013,12,11);注意月份一月为0,二月为1

c.add(Calendar.Month, +1);加一个月

c.add(Calendar.DAY_OF_MONTH,-1);获取当月的往前推一天,就是上一月的天数



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值