黑马程序员_Java其他对象(System,Runtime,Date,Calendar,Marh-Random)

时间:2023-12-19 10:57:14

System

System类包含一些有用的类字段和方法(都是静态的)。它不能被实例化。

在System类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

字段摘要:

1,static PrintStream err “标准”错误输出流。

2,static InputStream in "标准“输入流。//获取键盘录入。

3,static PrintStream out "标准”输出流。//打印在控制台上。

部分方法:

1,static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

2,static long currentTimeMillis() :返回以毫秒为单位的当前时间。

3,static void exit(int status):终止当前正在运行的 Java 虚拟机。

4,static void gc():运行垃圾回收器。

5,static Properties getProperties() :确定当前的系统属性。//因为Properties是HashTable的子类,也就是Map集合的一个子类对象。那么乐意通过Map的方法取出该集合中的元素。该集合存储的都是字符串,没有泛型定义。

如何在系统中自定义一些特有信息呢?

6,static String setProperty(String key, String value) :设置指定键指示的系统属性。 

7,static String getProperty(String key):获取指定键指示的系统属性。 

可不可以在JVM启动时,动态加载一些属性信息呢?

格式:-D<name>=<value>  :set a system property。

Runtime

Runtime:该类并没有提供构造函数。说明不可以new对象。会直接想到该类中的方法都是静态的。发现该类中还有非静态方法。说明该类肯定提供了方法获取本类对象,而且该方法是静态的,并且返回值类型是本类类型。

由这个特点可以看出该类使用了单例设计模式完成。

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。

应用程序不能创建自己的 Runtime 类实例。

部分方法:

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

2,Process exec(String command):在单独的进程中执行指定的字符串命令。//Process中的方法:abstract void destroy():杀掉子进程。

//Process p = r.exec("notepad.exe  SystemDemo.java"); 用文件相关联的程序(笔记本)打开文件。

Date

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

部分方法:

1,boolean after(Date when):测试此日期是否在指定日期之后。

2,boolean before(Date when):测试此日期是否在指定日期之前。

3,Object clone():返回此对象的副本。

4,int compareTo(Date anotherDate):比较两个日期的顺序。

5,boolean equals(Object obj):比较两个日期的相等性。

6,int hashCode():返回此对象的哈希码值。

7,void setTime(long time):设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

8,String toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。\

System.out.println(new Date);//打印的时间看不懂,希望有些格式。在Date类中另请参见DateFormat(日期格式化,是文本类),直接已知子类SimpleDateFormat。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日")//将模式封装到SimpleDateFormat对象中。

String time = sdf.format(d);//调用format方法让模式格式化指定Date对象。

Calendar类Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

Calendar类中方法:

1,static Calendar getInstance():使用默认时区和语言环境获得一个日历。//Calendar c = Calendar.getInstance();

2,int get(int field):返回给定日历字段的值。

3,void set(int field, int value):将给定的日历字段设置为给定值。

4,void set(int year, int month, int date):设置日历字段 YEARMONTHDAY_OF_MONTH 的值。

5,abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。

//sop(c.get(Calendar.YEAR)+"年");  //获取年份。

//sop((c.get(Calendar.MONTH)+1)+"月"); //为了避免每次加1和月,使用查表法。

//c.set(2012,2,23);  //设置时间。

两个练习:


1,获取任意年的二月有多少天?

思路:根据指定年设置一个时间就是

  c.set(year,2,1);//某一年的3月1日。

  c.add (Calendar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。

2,获取昨天的现在这个时刻?

  c.add(Calendar.DAY_OF_MONTH,-1);

MATH

类MATH:Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

方法摘要:

1,static xxx abs(xxx a):返回xxx值的绝对值。

2,static double ceil(double a):返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。//返回大于指定数据的最小整数。

3,static double floor(double a):返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。//返回小于指定数据的最大整数。

4,static long round(double a):返回最接近参数的 long。//四舍五入。

5,static double pow(double a, double b):返回第一个参数的第二个参数次幂的值。//a是底数,b是指数。

6,static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

//方法二:Random类

Random r = new Random();int d = r.nextInt(10);

练习:给定一个小数,保留该小数的后两位。