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

来源:互联网 发布:技嘉的显卡怎么样 知乎 编辑:程序博客网 时间:2024/05/20 22:02

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

 


原创粉丝点击