Java_几个特殊类的总结

1、System类;在java.lang包中。System 类包含一些有用的类字段和方法。它不能被实例化。不能被实例化,说明里面全部是抽象方法(这没有意义)或者全部是静态方法(只能是这种情况)。

因此,系统类里的所有成员方法和属性都是静态的。
关键字段:
in/out/err
——有没有java基础学习者曾想过System.out.println();语句的每个关键字成分分别是什么?反正我自己曾经这样想过,现在认为System是类,out是流,println是方法 
——System类中获取系统属性信息:Properties(返回值 Properties) getProperties(); 如果用到Properties对象时导入import java.util.*;(例如下面的例5)

(1)String value = System.getProperty("os.name");  //获取指定属性信息。
(2)System.setProperty("mykey","myvalue"); //在系统中设置一些信息,即myvkey的值为myvalue。

(3)/动态给系统定义属性:java -Dhaha=qqqqq SystemDemo

(4)String value = System.getProperty("os.name");//获取指定属性信息。
(5)//因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。那么可以通过map的方法取出该集合中的元素。该集合中存储都是字符串。没有泛型定义。
Properties prop = System.getProperties();//需要导入import java.util.*;并且不能被实例化,不能用new

for(Object obj : prop.keySet()) //获取所有属性信息。

{

String value = (String)prop.get(obj);

System.out.println(obj+"::"+value);

}
——currentTimeMillis()  返回static long以毫秒为单位的当前时间。
——arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
——exit(int status) 终止当前正在运行的 Java 虚拟机。
——setIn(InputStream in)  重新分配“标准”输入流。
——setOut(PrintStream out) 重新分配“标准”输出流。

2、Runtime类;在java.lang包中。将应用程序与其运行环境相连接。没有构造方法,意味着不能直接创建对象(按理来说里面方法都是静态,可是现实并不是这样,说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型,该方式是static Runtime(返回值) getRuntime();)。
由这个特点可以看出该类使用了单例设计模式完成。

Runtime r = Runtime.getRuntime(); //不能实例化,所以不能用关键字new;而且该方法的返回值是Process,里面的方法全部抽象,而且没有直接子类,原因是为了安全系统内部会帮助我们调用

Process p = r.exec("notepad.exe SystemDemo.java");
                                  //用记事本,打开SystemDemo.java文件

Thread.sleep(4000);//进程等待4秒,因为该方法的单位是毫秒

p.destroy();//秒杀进程
Process p =r.exec("C:\\program\\winmin.exe");//要用双斜杠,字符转译
Process p =r.exec("winmin.exe");//没有指明路径,如果环境变量配置path有设置路径,一样能编译通过,否则报错

3、Date类;在java.util包中。

   Date d = new Date();

   System.out.println(d);//打印现在的本地的时间

//另请参见java.text.*;包中的DateFromat类,直接子类SimpleDateformat中有对应格式化方法,在API文档中参见其格式。

   SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");//将yyyyy用年替换,E用星期替换……后面类似替换

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

System.out.println("time="+time);

        //Date d = new Date();就类似于以下效果

long l = System.currentTimeMillis();

Date d1 = new Date(l);

System.out.println("d1:"+d1);

4、Calendar类;在java.util.*;包中。抽象类,不能实例化。有实例化方法getInstance();
(1)get(int field)方法,参数为给定日历字段:
   Calendar c = Calendar.getInstance(); //不能用new
   c.get(Calendar.YEAR)
   c.get(Calendar.MONTH)+1//月份会从0开始
   c.get(Calendar.DAY_OF_MONTH)
   c.get(Calendar.DAY_OF_WEEK)//星期
//对于星期和月份,为了方便打印,可以定义字符串数组,索引,这里就不仔细举例了
(2)set(year,month,day)方法重置年月日:
   c.set(2014,02,13);
(3)add(int field,int),对给定某日历字段进行加减
   c.add(Calendar.DAY_OF_MONTH,-1);//获取昨天的日期

考虑如何获取任意年的二月有多少天?

5、Math类;在java.lang.*;包中。不能被实例化。

(1)ceil(double  a)方法
double d=Math.ceil(12.61);//返回大于这个数的最小整数13
(2)floor(double  a)方法
double d=Math.floor(12.61);//返回小于这个数的最大整数12
(3)round(double  a)方法
long d=Math.round(12.61);//四舍五入
(4)pow(int a,int b)方法
double d=Math.pow(2,3);//2的3次方
(5)random()方法
double d=Math.random();//随机产生一个0到1之间的double类型的数
int d = (int)(Math.random()*10+1);//使产生的数在1到10之间,且为整数
注:在java.util.*;包中有Random类,其中系列类似的方法
Random r = new Random();
int d = r.nextInt(10)+1;//产生1到10之间的随机数

你可能感兴趣的:(Random,日历)