您的位置:首页 > 职场人生

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

2013-11-11 13:22 429 查看
----------------------
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐