【18上】System,Runtime,Date,Calendar,Math-Random类的应用


1.讲解其他类主要是为了锻炼查找API的能力

 

1.1 System:类

 

System:类中的方法和属性都是静态的

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

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

 

描述系统一些信息。

 

获取系统属性信息:Properties getProperties();

         Properties是一个双列集合,一般put 和putAll增加,而是用setProperty方法设置键和值

 

练习一:System类中Properties子类的应用

import java.util.*;
class SystemDemo
{
         publicstatic void main(String[] args)
         {
 
                   Propertiesprop = System.getProperties();
                  
                   //因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。
                   //那么可以通过map的方法取出该集合中的元素。
                   //该集合中存储都是字符串。没有泛型定义。
 
 
                  
                   //如何在系统中自定义一些特有信息呢?
                   System.setProperty("mykey","myvalue");
 
 
                   //获取指定属性信息。
                   Stringvalue = System.getProperty("os.name");
 
                   System.out.println("value="+value);
 
                   //可不可以在jvm启动时,动态加载一些属性信息呢?
                   //javv–D(key)=(value) 类名
                   Stringv = System.getProperty("haha");
 
                   System.out.println("v="+v);
 
 
                   /*
                   //获取所有属性信息。
                   for(Objectobj : prop.keySet())
                   {
                            Stringvalue = (String)prop.get(obj);
 
                            System.out.println(obj+"::"+value);
                   }
                   */
         }
}


 

1.2 Runtime对象

 

该类并没有提供构造函数。

说明不可以new对象。那么会直接想到该类中的方法都是静态的。

发现该类中还有非静态方法。

说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。

 

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

 

static Runtime

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

 

该方式是static Runtime getRuntime();

 

练习二:Runtime类的应用

class RuntimeDemo
{
         publicstatic void main(String[] args) throws Exception
         {
                   //返回与当前 Java 应用程序相关的运行时对象
Runtime r = Runtime.getRuntime();
 
//运行exe程序,并打开相关联文件
                   Processp = r.exec("notepad.exe SystemDemo.java");
                  
                   Thread.sleep(4000);//线程等待4秒
                   p.destroy();//杀掉process创建的进程,而不能杀掉系统创建的进程,可以用c或c++写的程序调用api杀掉系统进程
 
         }
}


1.3 Date类 (时间)

SimpleDateformat(Date子类)

 

字母

日期或时间元素

表示

示例

G

Era 标志符

Text

AD

y

Year

1996; 96

M

年中的月份

Month

July; Jul; 07

w

年中的周数

Number

27

W

月份中的周数

Number

2

D

年中的天数

Number

189

d

月份中的天数

Number

10

F

月份中的星期

Number

2

E

星期中的天数

Text

Tuesday; Tue

a

Am/pm 标记

Text

PM

H

一天中的小时数(0-23)

Number

0

k

一天中的小时数(1-24)

Number

24

K

am/pm 中的小时数(0-11)

Number

0

h

am/pm 中的小时数(1-12)

Number

12

m

小时中的分钟数

Number

30

s

分钟中的秒数

Number

55

S

毫秒数

Number

978

z

时区

General time zone

Pacific Standard Time; PST; GMT-08:00

Z

时区

RFC 822 time zone

-0800

 

示例

以下示例显示了如何在美国语言环境中解释日期和时间模式。给定的日期和时间为美国太平洋时区的本地时间2001-07-04 12:08:56。

日期和时间模式

结果

"yyyy.MM.dd G 'at' HH:mm:ss z"

2001.07.04 AD at 12:08:56 PDT

"EEE, MMM d, ''yy"

Wed, Jul 4, '01

"h:mm a"

12:08 PM

"hh 'o''clock' a, zzzz"

12 o'clock PM, Pacific Daylight Time

"K:mm a, z"

0:08 PM, PDT

"yyyyy.MMMMM.dd GGG hh:mm aaa"

02001.July.04 AD 12:08 PM

"EEE, d MMM yyyy HH:mm:ss Z"

Wed, 4 Jul 2001 12:08:56 -0700

"yyMMddHHmmssZ"

010704120856-0700

"yyyy-MM-dd'T'HH:mm:ss.SSSZ"

2001-07-04T12:08:56.235-0700

同步

日期格式是不同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须是外部同步的。

 

import java.util.*;
import java.text.*;
class DateDemo
{
         publicstatic void main(String[] args)
         {
                   Dated = new Date();
                   System.out.println(d);//打印的时间看不懂,希望有些格式。
 
                   //将模式封装到SimpleDateformat对象中。
                   SimpleDateFormatsdf = new SimpleDateFormat("yyyy年MM月dd日Ehh:mm:ss");
                  
                  //调用format方法让模式格式化指定Date对象。
 
                   Stringtime = sdf.format(d);
 
                   System.out.println("time="+time);
 
                   longl = System.currentTimeMillis();
 
                   Dated1 = new Date(l);
 
                   System.out.println("d1:"+d1);
 
 
         }
}


 

1.4  Math类和Random类的应用

 

import java.util.*;
class  MathDemo
{
         publicstatic void main(String[] args)
         {
                  
                   /*
                   Randomr = new Random();
                   for(intx=0; x<10; x++)
                   {
                            //intd = (int)(Math.random()*10+1);
                            /*nextInt(intn) 返回一个伪随机数,它是取自此随机数生成器序列的、
                            在 0(包括)和指定值(不包括)之间均匀分布的 int 值。*/
                            intd = r.nextInt(10)+1;
                            sop(d);
                   }
                   */
                   saveTwo(12.3456,3,true);//12.34
         }
 
         publicstatic void saveTwo(double d,int scale,boolean isRound)
         {
                  
                   doublebase = Math.pow(10,scale);
 
 
                   doublenum = isRound?Math.round(d*base)/base:((int)(d*base))/base;
 
                   sop("num="+num);
 
         }
 
         publicstatic void show()
         {
                   doubled = Math.ceil(16.34);//ceil返回大于指定数据的最小整数。
                   doubled1 = Math.floor(12.34);//floor返回小于指定数据的最大整数。
 
                   longl = Math.round(12.54);//四舍五入
                   sop("d="+d);
                   sop("d1="+d1);
                   sop("l="+l);
 
                   //pow(doublea, double b) 返回第一个参数的第二个参数次幂的值。
                   doubled2 = Math.pow(2,3);
                   sop("d2="+d2);
         }
         publicstatic void sop(Object obj)
         {
                  
                   System.out.println(obj);
         }
}

 


你可能感兴趣的:(Date,calendar,System,Runtime,Math-Random)