其他类API

来源:互联网 发布:全聚合网络电视电脑版 编辑:程序博客网 时间:2024/06/08 07:52

System类

System类位于java.lang包中,系统级的很多属性和控制方法都放置在该类的内部。
由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法也都是static的。
1. 成员变量
System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
2. 成员方法
long currentTimeMillis() 获取当前时间的毫秒值(当前时间与 协调世界时1970.1.1日午夜之间的时间差)。 可以用来获取一段代码的运行时间。
public static Properties getPropertis() 确定当前的系统属性。
代码演示:

package p1.otherapi;import java.util.Properties;import java.util.Set;public class SystemDemo {    //这句语句在任何系统上都能获取当前系统的回车符来实现在java程序中的换行(java的跨平台性)    private static final String LINE_SEPARATOR=System.getProperty("line.separator");//根据指定键获取值    public static void main(String[] args) {        /*         * System类的方法和属性都是静态的。         常见方法:         long currentTimeMillis() 获取当前时间的毫秒值(当前时间与 协调世界时1970.1.1日午夜之间的时间差)         可以用来获取一段代码的运行时间         public static Properties getPropertis() 确定当前的系统属性         * *///      currentimemillis();        System.out.println("hello"+LINE_SEPARATOR+"world");//      getproperties();        //给系统设置一些属性信息。这些信息是全局的,其他程序都可以使用。//      System.setProperty("myclasspath","c:\myclass" );    }    public static void currentimemillis() {        long l1=System.currentTimeMillis();//1509675688852        System.out.println(l1);        System.out.println(l1/1000);//秒   以此类推再除以60为分...        long l2=1509675688852l;        long l3=System.currentTimeMillis();        System.out.println(l3-l2);    }    public static void getproperties(){        //获取系统的属性信息,并存储到了Properties集合中        /*         properties集合中存储的都是String类型的键和值。         最好使用它自己的存储和取出方法来完成元素的操作。         */        Properties prop=System.getProperties();        Set<String> nameSet=prop.stringPropertyNames();        for(String name:nameSet){            String value=prop.getProperty(name);            System.out.println(name+"::"+value);        }    }}

还有一些其他方法:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 数组拷贝,也就是将一个数组中的内容复制到另外一个数组中的指定位置,由于该方法是native方法,所以性能上比使用循环高效。
public static void exit(int status) 退出程序。
public static void gc() 进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。

Runtime类

Runtime类封装了运行时的环境。每个 Java 应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。
一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。
一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。
当Applet和其他不被信任的代码调用任何Runtime方法时,常常会引起SecurityException异常。

对于Process类的实例主要作用是创建一个可以管理的进程,并对它进行管理。Process类还有几个方法分别是destroy() 杀掉子进程、exitValue()返回子进程的出口值、getErrorStream()获取子进程的错误流。

代码示例:

public class RuntimeDemo {    public static void main(String[] args) throws IOException, InterruptedException {        /*         每一个java应用程序都有一个Runtime类实例,是应用程序能够与其运行的环境相连接。         可以通过getRuntime方法获取当前运行时。         应用程序不能创建自己的Runtime类实例。         Runtime:没有构造方法摘要,说明该类不可以创建对象。         又发现还有非静态的方法,说明该类应该提供静态的返回该类对象的方法。         而且只有一个,说明Runtime类使用了单例设计模式         *          * */        Runtime r=Runtime.getRuntime();        //excute:执行  xxx.exe        r.exec("notepad.exe");        r.exec("notepad.exe C:\\Users\\Administrator\\Desktop\\文档1.txt");        r.exec("C:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQScLauncher.exe");        //关闭Runtime类开启的进程        Process p=r.exec("notepad.exe");        Thread.sleep(5000);        p.destroy();    }}

Math类

在Math类中提供了众多的数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值以及平均值函数方法,这些方法都被定义为static形式,可以用如下形式调用:

Math.数学方法

在Math类中除了函数犯法外还存在一些常用数学常量,如PI,E等:

Math.PIMath.E

常用数学运算方法:
1. 三角函数方法

public static double sin(double a):返回角的三角正弦。类似的还有costanasin(反正弦)、acosatan。以及toRadians(角度转弧度)、toDegrees(弧度转角度)。
  1. 指数函数方法
public static double exp(double a):获取e的a次方。类似的还有Math.log(),Math.log10()是对数函数;Math.pow(a,b)是以a为底b为指数的值;Math.sqrt() 是开根号。
  1. 取整函数方法
public static double ceil(double a):返回大于等于参数的最小整数;floor:返回小于等于参数的最大整数rint:返回与参数最接近的整数,如果两个同为整数且同样接近,则结果为偶数。public static int round(float a):将参数加上0.5后返回与参数最近的整数public static long round(double a):将参数加上0.5后返回与参数最近的整数,然后强制转换为长整型。
  1. 取最大值、最小值、绝对值函数方法
    max、min、abs:返回值类型视需求决定。
  2. 随机数方法
    生成随机数取值范围是0.0到1.0的double型数值。也可以用简单的表达式生成任意范围的随机数例如:m+(int)(Math.random()*n) 返回m到m+n(不包括m+n)之间的一个随机整数。
    除了Math类中的random()方法可以获取随机数外,java还提供了一个乐意获取随机数的方式,就是java.util.Random类。可以通过实例化一个Random对象来创建一个随机数生成器。
Random r=new Random();

以这种方式实例化对象时,java编译器以系统当前时间作为随机数生成器的种子。
也可以在实例化Random对象的时候,设置随机数生成器的种子:

Random r=new Random(seedValue);

Random获取各种类型的随机数的方法:

public int nextInt():返回一个随机整数,类似的还有nextLong(),nextBoolean(),nextFloat(),nextDouble(),nextGaussian()public int nextInt(int n):返回一个大于等于0且小于n的随机整数。

Date类

在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。

Date类表示特定的瞬间,精确到毫秒。
创建Date对象
1. public Date()——分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
2. public Date(long date)——根据给定的毫秒值创建日期对象。
日期对象和毫秒值之间的转换
日期对象–>毫秒值:
通过getTime方法可以将一个日期类型转换为long类型的毫秒值。
毫秒值–>日期对象:
1. 可以通过构造函数public Date(long date)将毫秒值转为日期类型。
2. 通过public void setTime(long time)方法。
对对象进行格式化
日期对象转换为日期格式的字符串:
将日期对象转换为日期格式的字符串使用的是DateFormat类中的format方法。
日期格式的字符串转换为日期对象:
使用的是DateFormat类中的parse()方法。
方法演示:

public class DateDemo {    public static void main(String[] args) throws ParseException {//      demo_1();//      methodDemo_2();        methodDemo_3();    }    /**     将日期格式的字符串-->日期对象     使用的是DateFormat类中的parse()方法     * @throws ParseException     */    private static void methodDemo_3() throws ParseException {//      String str_date="2017-11-3";//      DateFormat dateFormat=DateFormat.getDateInstance();//      String str_date="2017年11月3日";//      DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);        String str_date="2017--11--3";        DateFormat dateFormat=new SimpleDateFormat("yyyy--MM--dd");        Date date=dateFormat.parse(str_date);        System.out.println(date);    }    /**     对对象进行格式化     将日期对象-->日期格式的字符串     使用的是DateFormat类中的format方法     * */    public static void methodDemo_2() {        Date date=new Date();        //获取日期格式对象,具备着默认的格式风格.FULL,LONG等可以指定风格//      DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);//      DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.FULL);//      DateFormat dateFormat=DateFormat.getInstance();//      DateFormat dateFormat=DateFormat.getDateTimeInstance();        DateFormat dateFormat=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);        //风格是自定义的        dateFormat=new SimpleDateFormat("yyyy---MM--dd");        String str_date=dateFormat.format(date);        System.out.println(str_date);    }    /**     日期对象和毫秒值之间的转换     毫秒值-->日期对象     1,通过Date对象的构造方法 new Date(timeMillis);     2.还可以通过setTime设置     因为可以通过Date对象的方法对该日期的各个字段(年月日等)进行操作     日期对象-->毫秒值     1.getTime方法     因为可以通过具体数值进行运算     * */    public static void demo_1() {        long time =System.currentTimeMillis();        System.out.println(time);//1509701667787        Date date=new Date();        System.out.println(date);//Fri Nov 03 17:34:27 CST 2017        Date date2=new Date(1509675688852l);        System.out.println(date2);    }}

Date类小练习:
“2017-11-3”到”2017-11-11”中间有多少天?

思路:
两个日期相减,必须要有两个可以进行减法运算的数。 能减的可以是毫秒值。
如何获取毫秒值:通过date对象。
如何获取date对象:可以将字符串转成date对象。
步骤:
1.将日期格式的字符串转成Date对象;
2.将Date对象转成毫秒值;
3.相减,再变成天数。
代码:

public class DateTest {    public static void main(String[] args) throws ParseException {        String str_date1="2017-11-3";        String str_date2="2017-11-11";        test(str_date1,str_date2);    }    public static void test(String str_date1,String str_date2) throws ParseException {        //1.将日期字符串转成日期对象        //定义日期格式对象        DateFormat dateFormat=DateFormat.getDateInstance();        //DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");        Date date1=dateFormat.parse(str_date1);        Date date2=dateFormat.parse(str_date2);        long time1=date1.getTime();        long time2=date2.getTime();        long time=Math.abs(time1-time2);        int day=getDay(time);        System.out.println(day);        }    public static int getDay(long time) {        int day=(int)(time/1000/60/60/24);        return day;    }}

Calendar类

从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现(Date的一些方法都过时了)。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

该类被abstract所修饰,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,说明不能通过new的方式来获得实例,对此,Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象,getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化:

Calendar c = Calendar.getInstance(); 

由于Calendar类toString实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。
使用Calendar类代表指定的时间
通过set方法:public final void set(int year,int month,int date)
首先创建一个Calendar的对象,然后在设定该对象中的年月日参数:

Calendar c=Calendar.getInstance();c.set(year, 2, 1);//某一年的三月一号,月份是0,1,2...11分别代表1,2...12月

或者c1.set(2017,10,6);//设置日期的全部字段
获得Calendar类中的信息
通过get方法获取:

int year=c.get(Calendar.YEAR);int month=c.get(Calendar.MONTH)+1;int day=c.get(Calendar.DAY_OF_MONTH);

其他方法
add方法:public abstract void add(int field,int amount);
该方法的作用是在Calendar对象中的某个字段上增加或减少一定的数值,增加是amount的值为正,减少是amount的值为负。
after方法:public boolean after(Object when);
该方法的作用是判断当前日期对象是否在when对象的后面,如果在when对象的后面则返回true,否则返回false。
方法演示:

public class CalendarDemo {    public static void main(String[] args) {        Calendar c=Calendar.getInstance();//      System.out.println(c);//      showDate(c);        int year=2017;        showDays(year);    }    //求某年的二月有多少天:    public static void showDays(int year) {        Calendar c=Calendar.getInstance();        c.set(year, 2, 1);//某一年的三月一号        c.add(Calendar.DAY_OF_MONTH, -1);//三月一号的前一天        int day=c.get(Calendar.DAY_OF_MONTH);        System.out.println(year+"二月的天数:"+day);        showDate(c);    }    //输出指定日期的日历和星期几    public static void showDate(Calendar c) {        int year=c.get(Calendar.YEAR);        int month=c.get(Calendar.MONTH)+1;        int day=c.get(Calendar.DAY_OF_MONTH);        int week=c.get(Calendar.DAY_OF_WEEK);        System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));    }    private static String getWeek(int i) {        String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};        return weeks[i];    }}
原创粉丝点击