Java基础-----常用API

Java基础—–常用API

——- android培训java培训、期待与您交流! ———-

一.Calendar类

Calendar类的静态方法getInstance()可以初始化一个日历对象:Calendar now = Calendar.getInstance();

可以使用下面三个方法把日历定到任何一个时间:
set(int year ,int month,int date)
set(int year ,int month,int date,int hour,int minute)
set(int year ,int month,int date,int hour,int minute,int second)

如果想获得年份、月份、小时等信息可以使用:
Now.get(Calendar.Month);这样的方法 0表示一月,1表示二月
get(Calendar.DAY_OF_MONTH)获得这个月的第几天
get(Calendar.DAY_OF_WEEK)获得这个星期的第几天
get(Calendar.DAY_OF_YEAR)获得这个年的第几天
getTimeMillis()获得当前时间的毫秒表示

一些使用场景
1.计算某一月份的最大天数

Calendar time=Calendar.getInstance(); 
time.clear(); 
time.set(Calendar.YEAR,year); 
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0             
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数

注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间。

2.Calendar和Date的转化

//Calendar转化为Date
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();

//Date转化为Calendar
Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);

3.格式化输出日期时间

Date date=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(df.format(date));

4.计算相隔天数的方法


   public int getDaysBetween (Calendar d1, Calendar d2){
      if (d1.after(d2)){  // swap dates so that d1 is start and d2 is end
           java.util.Calendar swap = d1;
           d1 = d2;
           d2 = swap;
      }
       int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
       int y2 = d2.get(Calendar.YEAR);
     if (d1.get(Calendar.YEAR) != y2){
           d1 = (Calendar) d1.clone();
           do{
             days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
               d1.add(Calendar.YEAR, 1);
          } while (d1.get(Calendar.YEAR) != y2);
      }
       return days;
    }

5.获取百天后的日期

/**
 * 输出一百天的日期
 */
package com.itheima.demo.FileDemo;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class _2 {
    public static void main(String[] args) {
        SimpleDateFormat sfd = new SimpleDateFormat("yyyy年MM月dd日");//这 里M必须为大写
        Date d = new Date();
        Calendar c = Calendar.getInstance();
        c.setTime(d);
        c.add(Calendar.DATE, 100);
        System.out.println(sfd.format(c.getTime()));
    }

}
二.System类

System类是一个功能强大、非常有用的特殊类,它提供了标准输入输出、运行是的系统信息等重要工具。但不能创建System类的对象,它所有的属性和方法都是静态的,引用时应以System为前缀。

1 用System类获取标准输入输出

System类的属性有三个,分别是系统的标准输入,标准输出和标准错误输出。

public static PrintStream err;

public static PrintStream in;

public static PrintStream out;

通常标准输入指的是输入设备键盘,标准输出和标准错误输出指的是输出设备屏幕,如:

char c=System.in.read();//由键盘读入一个字节的数据送给字符变量C

System.out.println(“Hello! Guys,”);//由屏幕输出一个字符串。

2 用System类的方法获取系统信息,完成系统操作

System类提供用来与运行Java的系统进行交互操作的方法,利用这些方法可以获取解释器或硬件平台的系统参量信息,也可以直接向运行系统发出指令来完成系统操作。常用的System类方法如下:

public static long currentTimeMillis();//获取1970年1月1日零时到当前系统时刻的微秒数。

public static void exit(int status);//在程序的用户线程执行完以前,强制Java虚拟机退出运行状态,并把状态信息status返回运动虚拟机的操作系统。

public static void gc();//gc方法代表无用内存回收器。

3.应用示例代码

  • System类中除了可以进行内容输出外,还可以通过方法取得一个操作的计算时间.
public class SystemDemo01{  
    public static void main(String args[]){  
        long startTime = System.currentTimeMillis() ;   // 取得开始计算之前的时间  
        int sum = 0 ;           // 声明变量  
        for(int i=0;i<30000000;i++){ // 执行累加操作  
            sum += i ;  
        }  
        long endTime = System.currentTimeMillis() ; // 取得计算之后的时间  
        // 结束时间减去开始时间  
        System.out.println("计算所花费的时间:" + (endTime-startTime) +"毫秒") ;  
    }  
}; 
  • 除了此功能之外,还可以列出本机的全部系统属性.
public class SystemDemo02{  
    public static void main(String args[]){  
        System.getProperties().list(System.out) ;   // 列出系统的全部属性  
    }  
};  
  • 调用系统部分属性
public class SystemDemo03{  
    public static void main(String args[]){  
        System.out.println("系统版本:" + System.getProperty("os.name")  
            + System.getProperty("os.version")  
            + System.getProperty("os.arch")) ;  
        System.out.println("系统用户:" + System.getProperty("user.name")) ;  
        System.out.println("当前用户目录:" + System.getProperty("user.home")) ;  
        System.out.println("当前用户工作目录:" + System.getProperty("user.dir")) ;  
    }  
};  
  • 垃圾对象的回收
    一个对象如果不使用,则肯定要等待进行垃圾收集,垃圾收集可以自动调用也可以手式调用,手式调用的时候就是调用System.gc()或Runtime.getRuntime().gc(). 但是,如果一个对象在回收之前需要做一些收尾工作,则就必须覆写Object类中的protected void finalize() throws Throwable在对象被回收之前进行调用,以处理对象回收前的若干操作,例如释放资源等等.
class Person{  
    private String name ;  
    private int age ;  
    public Person(String name,int age){  
        this.name = name ;  
        this.age = age;  
    }  
    public String toString(){   // 覆写toString()方法  
        return "姓名:" + this.name + ",年龄:" + this.age ;  
    }  
    public void finalize() throws Throwable{    // 对象释放空间时默认调用此方法  
        System.out.println("对象被释放 --> " + this) ;  
    }  
};  
public class SystemDemo04{  
    public static void main(String args[]){  
        Person per = new Person("张三",30) ;  
        per = null ;    // 断开引用  
        System.gc() ;       // 强制性释放空间  
    }  
};  

注:只有强制性调用gc()的时候才可以发现对象被回收,当然,如果不调用,则系统也会在一定时间内自动进行回收。

三.Runtime类

1.概述
1、每个java应用程序都有一个Runtime类实例,使用应用程序能与其中运行的环境相连接,应用程序不能创建自己的Runtime类的实例,是由系统底层自己创建的。
2、该类中并没有提供构造函数。说明不可以new对象。那么会直接想到该类中的方法都是静态的。查阅API文档发现,该类中还有非静态方法。说明该类肯定会提供了方法获取本来对象。而且该方法是静态的,并返回值类型是本来类型。
3、由以上特点可以看出该类使用了单例设计模式完成。

2.方法
1、获取本类对象
static RuntimegetRuntime();
2、在单独的进程中执行指定字符串命令
Processexec(String command);
3、在Process中有一个杀掉子进程的方法,可将exec方法开启的进程结束
void destroy();
示例:

class RuntimeDemo   
{  
    public static void main(String[] args)throws Exception  
    {  
        Runtime r=Runtime.getRuntime();//获取本类对象  

        Process p=r.exec("notepad.exe");//执行记事本程序  
        r.exec("notepad.exe  RuntimeDemo.java");//用记事本打开指定文件  

        Thread.sleep(3000);//让线程等待3秒  
        p.destroy();//杀掉指定进程  
    }  
}  
四.Math类

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。该类全为静态方法。

常用方法
1、doubleceil(double d);//返回大于指定数据的最小整数
2、doublefloor(double d);//返回小于指定数据的最大整数
3、double pow(doublea,double b);//返回a的b次方
4、long round(doubleb);//返回b四舍五入的值
5、doublerandom();//返回正号的double值,是一个大于等于0.0且小于1.0的随机数

Random类
这是java.util中的一个单独的类,该类对象用于获取随机数。与Math中的random方法是一样的,不过这个类有自身的方法,可以将相应的随机数强转为指定基本数据类型。
如:intnextInt(int n);//返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。

常用操作举例

public class MathDemo {  
    public static void main(String args[]){  
        /** 
         * abs求绝对值 
         */  
        System.out.println(Math.abs(-10.4));    //10.4  
        System.out.println(Math.abs(10.1));     //10.1  

        /** 
         * ceil天花板的意思,就是返回大的值,注意一些特殊值 
         */  
        System.out.println(Math.ceil(-10.1));   //-10.0  
        System.out.println(Math.ceil(10.7));    //11.0  
        System.out.println(Math.ceil(-0.7));    //-0.0  
        System.out.println(Math.ceil(0.0));     //0.0  
        System.out.println(Math.ceil(-0.0));    //-0.0  

        /** 
         * floor地板的意思,就是返回小的值 
         */  
        System.out.println(Math.floor(-10.1));  //-11.0  
        System.out.println(Math.floor(10.7));   //10.0  
        System.out.println(Math.floor(-0.7));   //-1.0  
        System.out.println(Math.floor(0.0));    //0.0  
        System.out.println(Math.floor(-0.0));   //-0.0  

        /** 
         * max 两个中返回大的值,min和它相反,就不举例了 
         */  
        System.out.println(Math.max(-10.1, -10));   //-10.0  
        System.out.println(Math.max(10.7, 10));     //10.7  
        System.out.println(Math.max(0.0, -0.0));    //0.0  

        /** 
         * random 取得一个大于或者等于0.0小于不等于1.0的随机数 
         */  
        System.out.println(Math.random());  //0.08417657924317234  
        System.out.println(Math.random());  //0.43527904004403717  

        /** 
         * rint 四舍五入,返回double值 
         * 注意.5的时候会取偶数 
         */  
        System.out.println(Math.rint(10.1));    //10.0  
        System.out.println(Math.rint(10.7));    //11.0  
        System.out.println(Math.rint(11.5));    //12.0  
        System.out.println(Math.rint(10.5));    //10.0  
        System.out.println(Math.rint(10.51));   //11.0  
        System.out.println(Math.rint(-10.5));   //-10.0  
        System.out.println(Math.rint(-11.5));   //-12.0  
        System.out.println(Math.rint(-10.51));  //-11.0  
        System.out.println(Math.rint(-10.6));   //-11.0  
        System.out.println(Math.rint(-10.2));   //-10.0  

        /** 
         * round 四舍五入,float时返回int值,double时返回long值 
         */  
        System.out.println(Math.round(10.1));   //10  
        System.out.println(Math.round(10.7));   //11  
        System.out.println(Math.round(10.5));   //11  
        System.out.println(Math.round(10.51));  //11  
        System.out.println(Math.round(-10.5));  //-10  
        System.out.println(Math.round(-10.51)); //-11  
        System.out.println(Math.round(-10.6));  //-11  
        System.out.println(Math.round(-10.2));  //-10  
    }  
}  

——- android培训java培训、期待与您交流! ———-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值