黑马程序员——java基础学习--System类、Runtime类、date和Calendar类、Math类

时间:2022-07-19 00:43:15
------- android培训java培训、期待与您交流! ----------


1、System类

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

  1)两个重要字段:

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

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

 2)方法:

   A、获取系统属性信息:

     Properties getProperties():此方法返回的是双列集合(即键值对),都是字符串,没有泛型定义;Properties是Hashtable的子类,是Map集合的一个子类对象,可通过Map方法取出该集合中的元素。

   B、获取指定属性信息:

   StringgetProperty(String key):获取指定键指示的系统属性。

   C、定义特有信息:

   StringsetProperty(Stringkey,String value):设置指定键指示的系统属性。

   D、jvm启动时,动态加载属性信息:

      通过命令:java -D<name>=<value>设置特有的系统属性信息。
2、Runtime类

  1)概述:每个java应用程序都有一个Runtime类实例,使用应用程序能与其中运行的环境相连接,应用程序不能创建自己的Runtime类的实例,由系统底层自己创建,可以通过 getRuntime 方法获取当前运行时。

  该类没有提供构造函数,说明不可以new对象,然该类中还有非静态方法,说明该类肯定提供了方法获取本类对象,而且该方法是静态的,返回值类型是本来类型,该类使用了单例设计模式。

  2)方法:

    static Runtime getRuntime():返回与当前 Java 应用程序相关的运行时对象;

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

  3)在Process中有一个杀掉子进程的方法:void destroy(),将exec方法开启的进程结束。

3、Date类

  1)概述:Date类表示特定的瞬间,精确到毫秒。

 2)自定义格式:

    Date类中的大部分方法已过时,所以只能找其子类来实现,子类DateFormat中有format方法可以实现,但是DateFormat是抽象类,不能实例化,所以通过其SimpleDateFormat子类,定义时间模式。

    具体步骤:

A、创建Date对象;Date d = new Date();

B、将时间模式封装到SimpleDateFormat对象中;

 SimpleDateFormat sdf =new SimpleDateFormat(“yyyy年MM月dd日”);

  C、调用format方法让模式格式化指定Date对象;

     String s = sdf.format(d);
4、Calendar类

  1)概述:

    Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法,可以对年月日等时间进行获取,并提供了相应的子段值。

  2)方法:

   A、获取时间

  获取年份:Calendar.YEAR

获取月份:Calendar.MONTH

获取日期:Calendar.DAY_OF_MONTH

获取星期:Calendar.DAY_OF_WEEK

获取小时:Calendar.HOUR_OF_DAY

获取分钟:Calendar.MINUTE

获取秒数:Calendar.SECOND
   B、设置时间

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

    void add(int field,intamount);

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

    int get(int field);

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

    void set(int field,intvalue);

示例:

    编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。

import java.text.*;

import java.util.*;

import java.io.*;

class Test9

{

    public static void main(String[] args)

    {

       while(true)

       {

           try

           {

              //键盘录入。

              BufferedReader bufr =

                 new BufferedReader(newInputStreamReader(System.in));

              System.out.println("输入日期(格式要求:yyyy-MM-dd):");

              String line=bufr.readLine();

              //给定结束条件。

              if("over".equals(line))

                  break;

              //输入的日期格式解析设置。

              //获取日期格式器。

              DateFormat df = DateFormat.getDateInstance();

              Date da = df.parse(line);//给定字符解析出一个日期。

              //将日历设置为输入值。

              Calendar c = Calendar.getInstance();

              c.setTime(da);   

          

              //获取所需的星期及年中第几天。

              System.out.println("当前的日期是:"+GetWeek(c.get(Calendar.DAY_OF_WEEK)));

              System.out.println("当前是一年中第"+c.get(Calendar.DAY_OF_YEAR)+"天");

           }     

           catch(Exception e)

           {

              System.out.println("格式错误");

           }

       }

    }

    //将数字星期换成中文星期。

    public static String GetWeek(int x)

    {

       //数组角标从0开始,国外解析的星期“1”相当于我国的星期日。

       String[] week={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六 "};

       return week[x];

    }  

}

5、Math类

   该类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数,该类全为静态方法。

  1)方法:

double ceil(double d):返回大于指定数据的最小整数;

double floor(double d):返回小于指定数据的最大整数;

long round(double d):返回d的四舍五入的值;

double pow(double a, double b):返回a的b次方;

double random():返回正号的double值,是一个大于等于0.0且小于1.0的随机数。
  2)Random类

这是util包中的一个单独的类,此类的实例用于生成伪随机数流,用于获取随机数,与Math中的random方法是一样的,不过这个类有自身的方法,可以将相应的随机数强转为指定基本数据类型。如:int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的在0和指定值之间(含头不含尾)均匀分布的int值。