伙伴们好,让我们继续沿着毕老师的步伐,这篇我们介绍和分享Java的其它对象,那么就开始了。
一、system类
1、概述
(1)介绍System是描述系统一些信息的类,类中的属性和方法都是静态的;不能被实例化,没有提供构造函数。
(2)字段摘要
out:标准输出流,默认是控制台。
in:标准输入流,默认是键盘。
2、方法
/**
(1)获取系统的属性信息
Properties getProperties();
说明:
a、此方法返回的双列集合,即键值对;因为Properties是Hahstable的子类,也就是Map集合的一个子类对象,那么通过Map方法取出该集合中的元素。
b、该集合存储的都是字符串,没有泛型定义
(2)获取指定属性信息
String System.getProperty(String key);
(3)在系统内定义特有信息
void System.setProperty(String key,String value);
(4)如何在jvm启动时,加载一些属性信息
通过命令:java -D<name>=<value> 可以设置特有的系统属性信息。
*/
示例:
import java.util.*;
class SystemDemo
{
public static void main(String[] args)
{
Properties p=System.getProperties();//获取当前的系统属性
sop(p);
String value=System.getProperty("os.name");//获取指定键指示的系统属性
sop("os.name="+value);
System.setProperty("wode","My_PC");//设置指定键指示的系统属性信息
sop(p);
String s= System.getProperty("woshi");//当系统中没有该键值,返回null
sop(s);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
二、Runtime类
1、概述
(1)、每个java应用程序都有一个Runtime类实例,使用应用程序能与其中运行的环境相连接,应用程序不能创建自己的Runtime类的实例,是由系统底层自己创建的。(2)、该类并未提供构造函数:说明不可以new对象,那么会直接想到该类中的方法都是静态的。查阅API文档发现,该类中还有非静态方法,说明该类中肯定会提供方法获取该类对象,并且该方法是静态的,且返回值类型是该类类型。
(3)、使用了单例设计模式完成。
2、方法
(1)获取本类对象
static RuntimegetRuntime();
(2)在单独的进程中执行指定字符串命令
Processexec(String command);
(3)在Process中有一个杀掉子进程的方法,可将exec方法开启的进程结束
void destroy();
示例:
class RuntimeDemo
{
public static void main(String[] args)throws Exception
{
Runtime r=Runtime.getRuntime();//获取本类对象
Process p=r.exec("notepad.exe");//执行记事本程序
r.exec("notepad.exe RuntimeDemo.java");//用记事本打开指定文件
Thread.sleep(3000);//让线程等待3秒
p.destroy();//杀掉指定进程
}
}
三、时间类
1、概述
Date类表示特定的瞬间,精确到毫秒。
java中的默认显示格式为:Mon Jun 10 22:35:21 CST2013。
2、自定义格式
默认的格式不一定满足每个人的需求,那么就需要自定义格式化模式。因为Date类中的大部分方法已过时,所以只能找其子类来实现。子类DateFormat中有format方法可以实现,但是DateFormat是抽象类,不能实例化。但是其下有个SimpleDateFormat子类,可以定义时间模式。具体步骤:
(1)创建Date对象;
(2)将时间模式封装到SimpleDateFormat对象中;
(3)调用format方法让格式化模式指定Date对象;
示例:
import java.text.*;
class DateDemo
{
public static void main(String[] args)
{
Date d=new Date();//创建Date对象
//sop(d);
将模式封装到SimpleDateformat对象中。
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日E HH:mm:ss");
//调用format方法让模式格式化指定Date对象。
String time=sdf.format(d);
sop(time);
}
public static void sop(Object ojb)
{
System.out.println(ojb);
}
}
3、Carendar类
(1)概述
a、Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法。
b、Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅API文档。
(2)方法
a、基本获取时间
b、获取年份:Calendar.YEAR
c、获取月份:Calendar.MONTH
d、获取日期:Calendar.DAY_OF_MONTH
e、获取星期:Calendar.DAY_OF_WEEK
f、获取小时:Calendar.HOUR_OF_DAY
g、获取分钟:Calendar.MINUTE
h、获取秒数:Calendar.SECOND
(3)设置时间
a、根据日历的规则,为给定的日历字段添加或减去指定的时间量
void add(int field,int amount);
b、获取指定的日历字段对应的时间值
int get(int field);
c、将给定日历字段对应的时间值设置为给定值
void set(int field,int value);
d、设置日历字段 YEAR、MONTH和DAY_OF_MONTH的值
void set(int year,int month,int date);
方法示例:
<span style="font-size:14px;">import java.util.*;
class CalendarDemo
{
public static void main(String[] args)
{
Calendar c=Calendar.getInstance();
sop(pattern(c));//显示今天日期和当前时间
c.add(Calendar.YEAR,3);//年份变为3年后
sop(pattern(c));//显示指定日期和时间
}
//获取指定日期和时间
public static String pattern(Calendar c)
{
String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);
return s;
}
//获取年份
public static int year(Calendar c)
{
return c.get(Calendar.YEAR);
}
//获取月份
public static String month(Calendar c)
{
String[] yue={"一月","二月","三月","四月",
"五月","六月","七月","八月",
"九月","十月","十一月","十二月"};
return yue[c.get(Calendar.MONTH)];
}
//获取日期
public static int day(Calendar c)
{
return c.get(Calendar.DAY_OF_MONTH);
}
//获取星期
public static String week(Calendar c)
{
String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return day[c.get(Calendar.DAY_OF_WEEK)];
}
//获取时间,格式为时:分:秒
public static String time(Calendar c)
{
String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
return s;
}
//打印输出
public static void sop(Object obj)
{
System.out.println(obj);
}
} </span>
练习:<span style="font-size:14px;">/**
练习
1、获取任意年的二月有多少天:
思路:根据指定年设置一个时间就是
c.set(year,2,1)//某一年的3月1日。
c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。
2、获取前一天的现在这个时刻
思路:c.add(Calenar.DAY_OF_MONTH,-1);
3、计算有效上课天数,每周六日不上课,计算任意年从九月到十月的有效上课天数
思路;
1、根据指定年设定一个时间就是c.set(year,8,1)//某一年的9月1日
2、定义一个计数器,判断指定时间是否是星期六或者星期日,不是则计数加1
3、日期偏移量1天,直至判断到这个月的最后一天
*/
import java.util.*;
class OtherClassTest
{
public static void main(String[] args)
{
//练习1测试
sop("2012年二月份有"+whatDay(2012)+"天");
//练习2测试
sop("昨天的现在这个时刻:"+lastNowTime());
//练习3测试
sop("2013年9月到10月上了"+howDay(2013)+"天课");
}
//练习1
public static int whatDay(int year)
{
Calendar c=Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DAY_OF_MONTH,-1);
return c.get(Calendar.DAY_OF_MONTH);
}
//练习2
public static String lastNowTime()
{
Calendar c=Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH,-1);
return pattern(c);
}
//练习3
public static int howDay(int year)
{
Calendar c=Calendar.getInstance();
c.set(year,8,1);
int count=0;
for (int x=c.get(Calendar.DAY_OF_MONTH); x<=30;x++ )
{
if(c.get(Calendar.DAY_OF_WEEK)!=1&&c.get(Calendar.DAY_OF_WEEK)!=7)
count++;
c.add(Calendar.DAY_OF_MONTH,1);
}
return count;
}
//获取指定日期和时间
public static String pattern(Calendar c)
{
String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);
return s;
}
//获取年份
public static int year(Calendar c)
{
return c.get(Calendar.YEAR);
}
//获取月份
public static String month(Calendar c)
{
String[] yue={"一月","二月","三月","四月",
"五月","六月","七月","八月",
"九月","十月","十一月","十二月"};
return yue[c.get(Calendar.MONTH)];
}
//获取日期
public static int day(Calendar c)
{
return c.get(Calendar.DAY_OF_MONTH);
}
//获取星期
public static String week(Calendar c)
{
String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return day[c.get(Calendar.DAY_OF_WEEK)];
}
//获取时间,格式为时:分:秒
public static String time(Calendar c)
{
String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
return s;
}
//打印输出
public static void sop(Object obj)
{
System.out.println(obj);
}
} </span>
四、Math类
1、概述
Math类中全为静态方法,都是数学中的一些计算方法。2、方法
/**
(1)doubleceil(double d);//返回大于指定数据的最小整数。
(2)doublefloor(double d);//返回小于指定数据的最大整数。
(3)double pow(doublea,double b);//返回a的b次方。
(4)long round(doubleb);//返回b四舍五入的值 。
(5)doublerandom();//返回正号的double值,是一个大于等于0.0且小于1.0的随机数。
3、Random类
这是java.util中的一个单独的类,该类对象用于获取随机数。与Math中的random方法是一样的,不过这个类有自身的方法,可以将相应的随机数强转为指定基本数据类型。
/**
intnextInt(int n);//返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
*/
练习1:
/**
练习:给定一个小数,保留该小数的后n位。
1、先把给定小数乘以10的n次方,四舍五入保留整数部分
2、再把该整数除以10的n次方
*/
class MathTest
{
public static void main(String[] args)
{
double d=retention(13.6572,2);
System.out.println("d="+d);
}
//保留小数位方法
public static double retention(double d,int n)
{
double d1=d*Math.pow(10,n);//先将要保留的小数位变为整数
long l=Math.round(d1);//将小数四舍五入
return l/Math.pow(10,n);//返回保留了指定小数位的小数
}
}
练习2:
class MathDemo
{
public static void main(String[] args)
{
double d = round(15.6745,1);
System.out.println("d = " + d);
}
//保留指定位数为n的小数
public static double round(double d,int n)
{
//将给定数扩大n倍后四舍五入,再缩小相应的倍数
return Math.round(d*(Math.pow(10,n)))/(Math.pow(10,n));
}
}
伙伴们,哈哈,还好吗?脑袋撑得住吗,加油!下篇IO流见。