黑马程序员 Java基础之System,Runtime,Date,Calendar,Math.Random对象

来源:互联网 发布:汽车调表软件 编辑:程序博客网 时间:2024/06/10 20:17

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

System对象概述

system对象时java内置静态工具类,System 类包含一些有用的类字段和方法。它不能被实例化。可以用于描述系统环境。

System的主要静态字段和静态方法

static  PrintStream err 标准错误输出流

static  InputStream in   标准的输入流

static OutputStream out 标准的输出流

statc  arrayCopy(Object src ,Object dest,int dest,int length) 将源数组复制到指定数组中,复制的位置从dest位置开始,长度为length;

static clearProperty(string key) 根据键清除系统所对应的属性。

static long getCurrentTimeMillis() 获取系统当前的时间

static void exit(int status) 终止当前正在运行的虚拟机

static void gc() 强制运行垃圾回收器

static getProperties(String key) 根据键获取系统对应的属性

static SetProperties(String key,String value) 用于设置键以及对应的系统属性

static Properties getProperties() 获取系统当前所有的属性。

实例一:

需求:获取系统当前的属性 

/*通过查询文档我们发现Properties这个类是HashTable类的之类,也就是Map集合的之类,所以我们可以使用这个类来遍历系统所有的属性*/import java.util.*;class JavaCollection1_46 {public static void main(String[] args) {//用于获取系统当前所有的属性,注意这里的Properties类存储都是字符串,不存在泛型。Properties p=System.getProperties();Set<Object> keyset=p.keySet();for(Iterator it=keyset.iterator();it.hasNext();){String key=(String)it.next();String value=(String)p.get(key);System.out.println(key+":"+value);}System.out.println("************");//设置系统的属性(单个属性)System.setProperty("mykey","myvalue");//获取系统的属性.(单个属性)    String value=System.getProperty("mykey");    System.out.println(value);System.out.println(System.getProperty("myset"));}}

同时我们在启动虚拟机时,动态的添加系统属性比如我们在dos 命令行输入Java -D myset=haha JavaCollection1_47.java,这样我们就动态的设置了myset对应的值为haha,运行结果如下


Runtime

每个java运行程序都有对应的Runtime实例,它可以将java运行程序和与其对应的运行环境连接起来,该类没有提供构造函数,这样我们首先想到的是单例设计模式,首先会想到该类中全部都是静态方法。可是通过查询API帮助文档我们发现仍存在非静态方法。该类肯定提供了方法来获取本类对象。而且该方法是静态,并且返回值类型是本类类型。而这个方法就是getRunTime()对象。

Runtime类常用方法

Process exec(String command)在单独的进程中执行指定的字符串命令

getRuntime()返回当前与java程序相关的对象(这个对象不用创建,java程序一旦运行时,就会自动创建)

运行实例:

/*我们可以看出RunTime采用了单例设计模式,*/class JavaCollection1_47 {public static void main(String[] args) throws Exception {    //返回与当前java程序相关的运行对象,注意这个对象是唯一的,在java程序一旦运行时,就被自动创建,  Runtime r=Runtime.getRuntime();//获取当前java程序JavaCollection1_47运行的对象  Process p= r.exec("notepad.exe JavaCollection1_47.java ");//使用该对象打开记事本程序,打开文件JavaCollection1_47.java,并返回一个进程  //r.exec("C:\\Program Files\\Tencent\\QQ\\QQProtect\\Bin\\QQProtect.exe");//启动QQ软件,  //杀死当前  Thread.sleep(4000);  //杀死当前进程和当前进程的子进程  p.destroy();}}
Math类

Math常用方法:

static double ceil(double a)返回一个大于大于a的最小的整数

static double floor(double b)返回一个小于a的最大的整数

static  long round(double b)返回最接近参数的long类型数(也就是四舍五入)

static double pow(double a,double b)返回a的b次幂

static double random()返回带正号的double值,并且该值的范围是[0,1)之间的小数。

Math实例

import java.util.*;import static java.lang.Math.*;class JavaCollection1_48 {public static void main(String[] args) {        double a=0.342432;sop((double)Math.round(a*100)/100);double a2=312.21;double a3=11.78;double a4=-12.32;//返回大于该数的最小整数sop(ceil(a2));sop(ceil(a4));//返回小于该数的最大整数sop(floor(a3));sop(floor(a4));//返回1到10中的随机数for(int i=0;i<10;i++){int j=(int)(random()*10+1);sop((int)j);}//同理我们也可以使用Random来创建随机数Random r=new Random();for(int i=0;i<10;i++){sop(r.nextInt(11));}}public static void sop( Object obj)    {          System.out.println(obj);       }}

运行结果如下:


Date类

平常我们在生活中经常会使用到年份,在Java中提供了Date这个类来创建时间,但是这个对象并没有为我们提供操做时间格式的方法,因此我们在使用时就希望按照固定的格式来输出结果,通过查询API帮助文档我们发现,有simpleDateFormat()这个类来创建我们指定格式的日期模式。然后在调用SimpleDateFormat对象实例的format()方法接受我们需要格式化的日期Date对象,最后返回一个字符串,然后我们打印这个字符串,可以获得我们想要的日期格式。

实例如下:

import java.util.*;import java.text.*;class JavaCollection1_49{public static void main(String[] args) {Date d=new Date();//这种结果不是我们想要的格式。System.out.println(d);//将自定义的模式封装到SimpleDateFormat对象中去SimpleDateFormat sdf=new SimpleDateFormat("yyyy年mm月dd日 E hh:mm:ss");//然后用这个自定义模式的对象去格式化输出我们需要输出的日期。String temDate=sdf.format(d);System.out.println(temDate);}}
运行结果如下:


Calendar类

生活中我们往往需要有时候获取某年的年份,月份,日期等具体因素,但是上面的Date类并没有为我们提供可以直接获取年份,月份或日期等直接的操作,因此,我们通过查阅JavaAPI文档,可以发现提供了Calendar这个类来帮助我们直接操作日期。可以使用Calendar.getInstance()方法获取实例对象,然后再用这个实例对象调用get()方法获取我们需要的字段,并进行操作。

Calendar实例:

import java.util.*;import java.text.*;class JavaCollection1_50 {public static void main(String[] args) {/*Date d=new Date();SimpleDateFormat sdf=new SimpleDateFormat("yyyy");//这种方式返回的年份是字符串,我们不能直接对其进行操作。不能相加减,//注意事项:计算机在计算月份时,是从0开始的。所以和我们平时的使用还是有区别的,因此我们就可以使用查表法来重新获取我们需要的格式的月份。String[] mon={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};String[] week={"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};String s=sdf.format(d);System.out.println(s);Calendar c=Calendar.getInstance();//sop(c);//Calenar中返回的DAY_OF_WEEK返回的是一个星期中的天数,sop(c.get(Calendar.YEAR));sop(c.get(Calendar.MONTH));sop(c.get(Calendar.DAY_OF_MONTH));sop(c.get(Calendar.DAY_OF_WEEK));        sop(mon[c.get(Calendar.MONTH)]);sop(week[c.get(Calendar.DAY_OF_WEEK)]);//Calander中一个非常重要的方法。我们可以使用get()方法获取日期,同时我们也可以使用Calendar这个静态抽象类来设置时间*/CalendarDemo();}public static void CalendarDemo(){String[] mon={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};String[] week={"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};Calendar c=Calendar.getInstance();//使用Calendar方法的可以设置当前的时间,注意这里的第二个参数是月份,起始是从0开始。c.set(2015,0,12);//使用add()方法来可以对日期进行加减c.add(Calendar.MONTH,-1);c.add(Calendar.DAY_OF_MONTH,-12);//sop(c);//Calenar中返回的DAY_OF_WEEK返回的是一个星期中的天数,sop(c.get(Calendar.YEAR));        sop(mon[c.get(Calendar.MONTH)]);sop(c.get(Calendar.DAY_OF_MONTH));sop(week[c.get(Calendar.DAY_OF_WEEK)]);}public static void sop(Object obj){System.out.println(obj);}}
Calendar练习1:

需求:求任意一年的二月有多少天?

思路 :

1 c.set(year,2,1)//year表示传入的年份,设置任意一年的三月一号。

2  然后向前减去一天就是二月的最后一天。

3最后打印这天数就是任意一年二月的天数。

Calendar练习二:

需求:获取昨天的现在这个时刻

代码如下:

import java.util.*;class JavaCollection1_51 {public static void main(String[] args) {System.out.println("请输入年份");Scanner sc=new Scanner(System.in);int i=sc.nextInt();Text1(i);Text2();}public static void Text1(int year){Calendar c=Calendar.getInstance();c.set(year,2,1);c.add(Calendar.DAY_OF_MONTH,-1);System.out.println(c.get(Calendar.DAY_OF_MONTH));}public static void Text2(){String[] mon={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};String[] week={"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};Calendar c=Calendar.getInstance();c.add(Calendar.DAY_OF_MONTH,-1);sop(c.get(Calendar.YEAR));sop(mon[c.get(Calendar.MONTH)]);sop(c.get(Calendar.DAY_OF_MONTH));sop(week[c.get(Calendar.DAY_OF_WEEK)]);}public static void sop(Object obj){System.out.println(obj);}}
运行结果如下:





0 0
原创粉丝点击