您的位置:首页 > 编程语言 > Java开发

Java中的一些常见类System、Runtime、Date与Carendar

2015-08-05 23:46 701 查看
一、System类

1、概述

◆System是描述系统一些信息的类,类中的属性和方法都是静态的。不能被实例化,没有提供构造函数。

◆字段摘要

       out:标准输出流。默认是控制台。

        in:标准输入流。默认是键盘。

2、方法

◆、获取系统的属性信息:

        PropertiesgetProperties();

        此方法返回的双列集合,即键值对;因为Properties是Hahstable的子类,也就是Map集合的一个子类对象,那么通过Map方法取出该集合中的元素。

该集合存储的都是字符串,没有泛型定义

◆获取指定属性信息:

       
String getProperty(Stringkey);

◆在系统内定义特有信息:

        String setProperty(Stringkey,String value);

◆如何在jvm启动时,加载一些属性信息:

       通过命令:java -D<name>=<value>可以设置特有的系统属性信息
下面同伙获取我自己电脑的属性来演示:
package otherObject;

import java.util.Properties;

public class SystemDemo
{
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);

//获取所有属性信息。
for(Object obj : prop.keySet())
{
String myValue = (String)prop.get(obj);

System.out.println(obj+"::"+myValue);
}

}
}
打印结果的一部分为:



二、Runtime类

该类并没有提供构造函数。

说明不可以new对象。那么会直接想到该类中的方法都是静态的。

发现该类中还有非静态方法。

说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。

由这个特点可以看出该类使用了单例设计模式完成。

该方式是static Runtime getRuntime();

还是通过代码来观察:

package otherObject;

public class  RuntimeDemo
{
public static void main(String[] args) throws Exception
{
//		通过静态方法调用获取进程对象
Runtime r = Runtime.getRuntime();
//		用记事本打开Runtime.java
Process p = r.exec("notepad.exe  RuntimeDemo.java");
//		线程等待好看看现象
Thread.sleep(4000);
//		结束进程
p.destroy();

}
}

三、Date类

此类主要是用来对时间操作的,直接new对象就可以了。

package otherObject;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDeme {
public static void main(String[] args)
{
Date d = new Date();
System.out.println(d);

}

}
打印结果是:



可以看到打印结果并不好看,但我们可以自定义格式!

◆自定义格式

        默认的格式不一定满足每个人的需求,那么就需要自定义格式化模式。因为Date类中的大部分方法已过时,所以只能找其子类来实现。

子类DateFormat中有format方法可以实现,但是DateFormat是抽象类,不能实例化。但是其下有个SimpleDateFormat子类,可以定义时间模式。

具体步骤:

        1)创建Date对象

        2)将时间模式封装到SimpleDateFormat对象中

        3)调用format方法让格式化模式指定Date对象

具体实现方式如下:

package otherObject;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDeme {
public static void main(String[] args)
{
//		创建时间对象
Date d = new Date();
System.out.println(d);
//	对时间格式进行封装
SimpleDateFormat sim = new SimpleDateFormat("yyyy年MM月dd日 D天 hh:mm:ss");
//	通过format方法把日期传进格式
String time = sim.format(d);
System.out.println(time);
}

}
打印结果为:



SimpleDataFormat中指定的格式用一些字母表示:



四、Carendar类

1、概述:

        1)Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法。

        2)Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅API文档。

2、方法:

2.1、基本获取时间

        1)获取年份:Calendar.YEAR

        2)获取月份:Calendar.MONTH

        3)获取日期:Calendar.DAY_OF_MONTH

        4)获取星期:Calendar.DAY_OF_WEEK

        5)获取小时:Calendar.HOUR_OF_DAY

        6)获取分钟:Calendar.MINUTE

        7)获取秒数:Calendar.SECOND

2.2、设置时间:

        1)根据日历的规则,为给定的日历字段添加或减去指定的时间量:

                void add(int field,int amount);

        2)获取指定的日历字段对应的时间值:

                int get(int field);

        3)将给定日历字段对应的时间值设置为给定值:

                void set(int field,int value);

       设置日历字段 YEAR、MONTH和DAY_OF_MONTH的值:

                void set(int year,int month,int date);
代码练习:

/*需求:
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)
*/
package otherObject;

import java.util.Calendar;

public class CalendarDeme {
public static void main(String[] args)
{
Calendar c = Calendar.getInstance();
//		获得某年二月份的天数
//set1(2015,c);
//		获得昨天这个时间
set2(c);
}
public static void set1(int year,Calendar c)
{
//		0表示的是一月,所以2代表三月,于是把当前日期设置成了某年的三月一日
c.set(year, 2,1);
//		三月一日建议他就得到了二月的最后一天
c.add(Calendar.DAY_OF_MONTH, -1);
//		获取这个月也就是二月的天数
System.out.println(c.get(Calendar.DAY_OF_MONTH));
}
public static void set2(Calendar c)
{
//		定义一个星期表,外国星期中的第一天是星期天
String str[] = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};

c.add(Calendar.DAY_OF_MONTH, -1);
//		c.get(Calendar.MONTH)+1是因为月份也是0开始的
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
System.out.println(c.get(Calendar.HOUR)+"点"+c.get(Calendar.MINUTE)+"分"+c.get(Calendar.SECOND)+"秒");
System.out.println(str[c.get(Calendar.DAY_OF_WEEK )]);
}
}

打印结果set1为:



打印结果set2为:



感谢浏览,不足之处希望见谅
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: