黑马程序员——37,Properties类,Runtime类,Data类,Calendar类,Math类

----------- android培训java培训、java学习型技术博客、期待与您交流!------------   

黑马程序员——37,Properties类,Runtime类,Data类,Calendar类,Math类

一:Properties类----》

        Properties类是Hashtable的子类,也是Map体系的一员。没有泛型,常用的方法是getProperty和setProperty,系统信息都是以键值对的形式存在的,那么我们就可以利用Properties类来获取系统的信息。

import  java.util.*;
class  Sys
{
         public   static void   main(String[] args)
         {
                    Properties  p=System.getProperties();
                    //用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.getRuntime()获取该Runtime实例;而一般都会用Runtime.getRuntime().exec(),在Java程序里运行外部程序。

 

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();这句话存在的话,在编译运行时候由于主线程执行速度很快,执行到这句话的时候,子线程刚刚建立好久结束了,所以我们表面上看是什么都没有显示,什么都没有打开。
 
                  */
                 
       /*
                     //Processp2=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类----》

         Date类是用来表示时间,精确度达到毫秒级别。

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);                       
         }
}

四:Calender类----》

       定义在java.util包中,中文意思就是日历。为何会出现这个抽象类呢?因为使用Date类获取时间非常的麻烦。

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(2013,1,5);//可以自由设定年月日,但是时分秒这些没有改变
                   /*
                   这里要注意,用set自由设定时候月份填的是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
         {
              Calendarca=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类----》

Math类,定义在java.lang包里面的类,用来处理基本的数学运算。

    常用的几个方法是:

public  static double  ceil(double a)  //返回的是大于指定double型数据的最小整数,注意由于返回值的类型是double,所以返回值在数值上显示是个位后面带有小数点,小数点后面跟着0
public  static double  floor(double a)  //返回的是小于指定double型数据的最大整数,注意由于返回值的类型是double,所以返回值在数值上显示是个位后面带有小数点,小数点后面跟着0

public  static  double pow(double a, double b)//返回的是double型的a的b次方

public    static    double   random()      //返回一个0到1(不包括1)的double型伪随机数//如果该方法返回值小数点后不为0,有需要可以利用类型转换和倍数扩张,把其转换成整数,这就成了一个随机整数,但是这种方式有局限性,所以用到放在java。util包中的Random类

public     static     long     round(double   a)    //四舍五入取整,返回long型值
public    static     int     round(float       a)     //四舍五入取整,返回int型

public     static    基本数据类型     max(基本数据类型   a,基本数据类型b)     //比较系统数据类型的a和b的大小,并且返回最大值


         需要使用Random类的常用方法,先建立该类对象Random      m=new    Random();就可以调用类中的方法,而Random类中比较常用的是public     int    nextInt(int   n)//返回一个0到指定数之间的int型伪随机数(不包括指定数)



----------- android培训java培训、java学习型技术博客、期待与您交流!------------   



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值