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>可以设置特有的系统属性信息
下面同伙获取我自己电脑的属性来演示:
二、Runtime类
该类并没有提供构造函数。
说明不可以new对象。那么会直接想到该类中的方法都是静态的。
发现该类中还有非静态方法。
说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。
由这个特点可以看出该类使用了单例设计模式完成。
该方式是static Runtime getRuntime();
还是通过代码来观察:
三、Date类
此类主要是用来对时间操作的,直接new对象就可以了。
可以看到打印结果并不好看,但我们可以自定义格式!
◆自定义格式
默认的格式不一定满足每个人的需求,那么就需要自定义格式化模式。因为Date类中的大部分方法已过时,所以只能找其子类来实现。
子类DateFormat中有format方法可以实现,但是DateFormat是抽象类,不能实例化。但是其下有个SimpleDateFormat子类,可以定义时间模式。
具体步骤:
1)创建Date对象
2)将时间模式封装到SimpleDateFormat对象中
3)调用format方法让格式化模式指定Date对象
具体实现方式如下:
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);
代码练习:
打印结果set1为:
打印结果set2为:
感谢浏览,不足之处希望见谅
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为:
感谢浏览,不足之处希望见谅
相关文章推荐
- Java学习笔记(十)collections框架概述
- Spring(三): 事务
- JavaWeb 过滤器
- Java 中的语法糖 (Syntactic Sugar)
- 快速排序java实现
- Eclipse、Hibernate、mysql安装配置及例子
- Java08-5
- Ant学习-002-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案
- eclipse中svn的各种图标详解
- JavaWeb 的监听器
- java中数组的反射的探究
- 走格子问题的动态规划求解
- Java线程(7)Condition-线程通信更高效的方式
- Java中堆和栈的区别
- Java线程(6)锁对象Lock-同步问题更完美的处理方式
- hibernate中异常:java.lang.ClassNotFoundException: org.hibernate.cache.internal.NoCacheProvider
- Java Blocking Queue
- Java线程(5)Callable和Future
- java使用socket实现文件传输时的接收判断
- Java线程(4)线程池