黑马程序员——23, Properties,Runtime,Date类,Math类,

来源:互联网 发布:sai软件免费下载 编辑:程序博客网 时间:2024/06/05 02:24

------<ahref="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

          

         黑马程序员——23, Properties,Runtime,Date类,Math类,

 

/*

Properties是Hashtable的子类,也是Map集合的子类,

其存储的是字符串,没有泛型定义。

Properties的作用是用来获取系统信息

 

*/

 

import  java.util.*;class  Sys{         public   static  void   main(String[] args)         {                Properties   p=System.getProperties();                   //获取所有属性信息                   for(Object  obj:p.keySet())                   //这里p.keySet()返回的是Object类型的对象                   {                     String  s   = (String)p.get(obj);                     //提取键所对应的值,接着再强制转型                     soc(obj+"---"+s);                   }                    //获取特定信息                     String  uc= System.getProperty("user.country");                     soc("user.country="+uc);                    String   uc2=  System.getProperty("Tashi");                                             soc("Tashi="+uc2);//打印的是Tashi=null                     /*                     这里特别提示:                     搜索系统信息里面没有对应值就会返回null,                     但是,在DOS命令行中敲入javac编译命令后再准备敲入运行命令时,                     可以这样写运行命令:Java  -DTashi=45  Sys                     再按回车键,就可以看见打印的是Tashi=45                     这种方式是在运行时候设置系统属性。                     一般格式:  Java  -D<名称>=<值>   <运行文件名称>                     */         //设定系统信息                     System.setProperty("的的的","意义");                     String  uc3=  System.getProperty("的的的");                     soc("的的的---"+uc3);                                                   }         public  static void  soc(Object  obj)    {             System.out.println(obj);                                             }}

——————分割线——————

 

/*

Runtime类的介绍:

Runtime类在Java.lang包中。

没有构造函数,所以外部不可以建立其对象,

该类中既有静态又有非静态方法。

本类中有提供方法获取本类对象而且该方法是静态,

返回类型是本类类型。

这也是单例设计模式。

 

每一个Java应用程序都有一个Runtime类的实例,使得应用程序与其运行环境连接。

应用程序不可以建立自己的Runtime类的实例。

 

进程就是程序执行的一个实例

*/

 

 class  Sys2   {         public   static  void   main(String[] args)throws  Exception         {                   Runtime  a=Runtime.getRuntime();//静态调用                   //Runtime.getRuntime()返回的是当前应用程序的Runtime对象              Process   p=   a.exec("E:\\MyEclipse\\MyEclipse10\\MyEclipse.exe");//此句编译运行成功                   /*                   //这里exec方法会抛出一个异常。                   exec建立一个本机的进程还执行指定的可执行程序,                   并且返回该子进程相对应的Process子类的实例。                             实际上,Runtime.getRuntime().exec()就是用来在Java程序里运行外部程序。                   p.destroy();//这句话是用来结束子进程的。                   如果p.destroy();这句话存在的话,在编译运行时候由于主线程执行速度很快,                   执行到这句话的时候,子线程刚刚建立好久结束了,所以我们表面上看是什么都没有显示,什么都没有打开。                    */                         /*                     //Process p2=a.exec("notepad.exe  Sys2.java");//此句编译运行成功                    //用笔记本打开Sys2.java文件                    我们可以利用这种方式打开某个文件,只需要前面加上相应的程序。                    还有这句话为什么没有写路径呢?因为虚拟机会按照当初设定环境变                    量时候的path路径去查找的,而在path路径找到notepad.exe                    */          /*                   Process p3=a.exec("notepad.exe   Sys2.java  Je4.java");                      这句话运行时候会弹出方框显示没有找到Sys2.java Je4.java文件,                     并且询问是否建立新文件。                     很显然这种写法就会让虚拟机把Sys2.java Je4.java当做是一个文件名。          */                                                                                    /*                      //Process  p4=   a.exec("MyEclipse.exe");                     这句话运行时候会出错,显示找不到系统文件,                      因为虚拟机会按照当初设定环境变量时候的path路径去查找的,                      而在path路径并没有找到MyEclipse.exe                       */                   System.out.println("HelloWorld!");         }}

——————分割线——————

 

 

/*

Date类的介绍:

此类也是定义在了Java.util包里面。

表示特定时间,精确到毫秒的。

 

 

*/

import java.util.*;import java.text.*;class  Sys3{         public   static  void  main(String[] args)         {                   Date  da=new Date();                   soc(da);//这是可以直接打印出来的,但是格式看着不舒服                   SimpleDateFormat    sim= new   SimpleDateFormat("yyyy年MM月dd日E  hh:mm:ss");       /*                    SimpleDateFormat类是定义在java.text包中的该类对象可以封装了日期模式,区分大小写。                                                                       其中,y表示年,M表示月,d表示日,E表示星期,h表示时,m表示分,s表示秒。                    E已经包含了星期,所以括号里面没有写“星期”这两个字。                   */                   String   str       = sim.format(da);                    //format方法返回的是String类型的被格式化之后的日期                    soc(str);                           }         public  static void  soc(Object  obj)         {              System.out.println(obj);                                 }}

——————分割线——————

 

 

/*

 Calendar抽象类的应用:

 该类定义在java.util包中,

 其中文意思就是日历。

*/

import java.util.*;class   Sys4{         public   static  void   main(String[] args)         {                            //练习1:获取任意年份的2月有多少天                   int x=2015;                   lx1(x);                        //练习2:获取昨天现在的时刻                      lx2();         }         public  static void   yx()         {              Calendar  ca=Calendar.getInstance();//静态方法调用                   /*                   获取此时准确的日历时间,getInstance返回的是一个Calendar       */                   soc(ca);//用于打印时间,打印出来的都是一大串关于时间的信息                     ca.set(2012,1,5);//可以自由设定年月日,但是时分秒这些没有改变                   /*                   这里要注意,自由设定时候月份填的是1,但是显示的却是二月                   */                   xianshi(ca);                   ca.add(Calendar.YEAR,-1);                   //可以自由调节时间,例如这个是单单把年份减少一年                   xianshi(ca);                          }         public  static  void  lx1(int  nian)//练习1         {              Calendar  ca=Calendar.getInstance();                    ca.set(nian,2,1);                    ca.add(Calendar.DAY_OF_MONTH,-1);                    xianshi(ca);          }         public   static void  lx2()//练习2         {              Calendar ca=Calendar.getInstance();               ca.add(Calendar.DAY_OF_MONTH,-1);        xianshi(ca);                         }            public  static void   xianshi(Calendar   ca)//显示时间的方法         {                 int year  =ca.get(Calendar.YEAR);  //获取年份                       int month = ca.get(Calendar.MONTH);//获取月份                       int hao   =  ca.get(Calendar.DAY_OF_MONTH);//获取月份中的几号                       int   week =  ca.get(Calendar.DAY_OF_WEEK);//获取星期                            int   hour=ca.get(Calendar.HOUR_OF_DAY);//获取小时                            int   minute=ca.get(Calendar.MINUTE);//获取分钟                            int   sceond=ca.get(Calendar.SECOND);//获取秒              //注意这里获得的是int型的数据!!!  get方法里面不要忘记加Calendar                                      /*                            由于计算机存储数据都是从角标0开始的,                            所以,直接用get方法获取的星期和月份都是有偏差的,                            所以使用查表法修改                                        */                             String[] sm={"一月","二月","三月","四月",                                                "五月","六月","七月","八月",                                                "九月","十月","十一月","十二月"};                             String[] sw={"","星期日","星期一","星期二",                                                "星期三","星期四","星期五","星期六",};            soc(year+"年"+sm[month]+hao+"号   "+sw[week]+" "+hour+":"+minute+":"+sceond);                             }         public  static  void  soc(Object  obj)         {              System.out.println(obj);                               }}

————————分割线——————

 

/*

Math类,定义在java.lang包里面的类

常用来处理一些基本数学运算

里面定义了很多静态方法

*/

import java.util.*;class   Sys5{         public  static void  main(String[] args) //主函数         {       MathrandomDemo();          }         public  static void  MathrandomDemo()         {                   soc("下面是MathrandomDemo---");                       for(int  x=0;x<20;x++)                   {                      double  d=Math.random();//返回的是0到1之间的double型的伪随机数(不包括1)                      int  d2=(int)(Math.random()*10);                      //返回的是0到10之间的double型的伪随机数(不包括10),接着强制转成int型数据                      soc("d="+d);                      soc("d2="+d2);                   }                   Random   m=new Random();                   for(int  x=0;x<20;x++)                   {                     int  i=   m.nextInt(20);//返回一个0到20之间的int型伪随机数(不包括20)                            soc("i="+i);                   }                   //Random类定义在java.util包中                           }         public  static void  ceilDemo()         {                   soc("下面是ceilDemo---");                   double  dou=Math.ceil(26.14);//返回的是大于指定double型数据的最小整数                   soc("dou="+dou);//打印的是dou=27.0                   double   dou2=Math.ceil(-26.14);                   soc("dou2="+dou2);//打印的是dou=-26.0              }         public  static void  floorDemo()         {                          soc("下面是floorDemo---");                   double  dou3=Math.floor(23.21);//返回的是小于指定double型数据的最大整数                   soc("dou3="+dou3);//打印的是dou3=23.0                   double  dou4=Math.floor(-23.21);                   soc("dou4="+dou4);//打印的是dou4=-24.0                                              }         public  static void  roundDemo()         {                          soc("下面是roundDemo---");                   long  lo=Math.round(53.18);//四舍五入                   soc("lo="+lo);//打印的是lo=53                   long  lo2=Math.round(-53.18);                   soc("lo2="+lo2);//打印的是lo2=-53                   long  lo3=Math.round(53.78);                   soc("lo3="+lo3);//打印的是lo3=54                   long  lo4=Math.round(-53.78);                   soc("lo4="+lo4);//打印的是lo4=-54                                  }         public  static void  powDemo()         {            soc("下面是powDemo---");               double k=Math.pow(2,-3);//返回的是2的-3次方的值,即是0.125                   soc("k="+k);//打印的是k=0.125                         }         public  static void  soc(Object  obj)         {            System.out.println(obj);                               }}

0 0