------- android培训、java培训、期待与您交流! ----------
Runtime对象
该类并没有提供构造函数。
说明不可以new对象。那么会直接想到该类中的方法都是静态的。
发现该类中还有非静态方法。
说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。
由这个特点可以看出该类使用了单例设计模式完成。
static Runtime getRuntime() 返回与当前java应用程序相关的运行时对象。
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杀掉系统进程 } }
System:类中的方法和属性都是静态的。
out:标准输出,默认是控制台。
in:标准输入,默认是键盘。
描述系统一些信息。
获取系统属性信息:Properties getProperties();
Properties是一个双列集合,一般put 和putAll增加,而是用setProperty方法设置键和值
练习一:System类中Properties子类的应用
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); } */ } }
字母 |
日期或时间元素 |
表示 |
示例 |
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 |
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); } }
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); } }