Java常用API

Java常用API(Date、DateFormat、 Calendar、System、StringBuilder、Math、基本数据类型包装类)

1.java.util.Date
Date类:表示一个特定的瞬间,精确到毫秒(很多方法都被Canlendar类替代了)

构造方法:

Date()生成一个代表当前系统时间的Date对象

Date(long date)根据指定的long类型的参数生成一个Date对象。该构造器参数表示创建的Date对象与时间原点(epic:1970年1月1日)到现在的时间差,参数单位为“毫秒”

static void method(){
    //获取系统当前时间
    Date date = new Date();
    System.out.println(date);
    //Java的时间原点:1970年1月1号 0时0分0秒(GMT:0经度线)
    
    //获取从时间原点到1000ms的时间
    Date date1 = new Date(1000L);
    System.out.println(date1);
}

常用成员方法:

public long getTime()获取时间原点到现在的毫秒值 (通过日期获得毫秒值)

public void setTime(long time)根据指定的毫秒数,设置时间

eg:long time = date.getTime();

​ date.setTime(2000); //时间原点后两秒 System.out.println(date);

把一个毫秒值转换为日期:用构造方法2 Date(long date)

2.DateFormat类:是日期/时间格式化子类的抽象类,不能创建对象。

日期/时间格式化子类(如SimpleDateFormat)允许进行:

格式化:Date类型的时间->字符串类型的时间

解析:把字符串类型的时间->Date类型的:1970年1月1日00:00 00-》>Date

软件产品是给普通用户使用的,由于Date生成的时间(如:Thu Jan 01 08:00:02 CST 1970)受到用户知识水平差异,大部分用户难以阅读,而人们输入的日期常规写法(如:2018-09-09;2018/09/09等)计算机又不认识,所以Java提供了 java.text.SimpleDateFormat这个类解决这一问题,顾名思义,SimpleDateFormat即为简单的时间格式化。

SimpleDateFormat类

构造方法:

SimpleDateFormat()

SimpleDateFormat(String pattern)pattern:日期和时间的格式

成员方法:

从Date->String

public final String format(Date date)将系统时间格式化为字符串类型

img

Date date = new Date();
System.out.println(date);
//格式化 我们看的懂得格式 -> xx 年 X月X日 X时X分X秒
//					  -> xx -X-X- X:X:X
//					  -> xx/X/X X时X分X秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日,HH时mm分ss秒");
String format = sdf.format(date);
System.out.println(format);

从String ->Date

public Date parse(String source) :将字符串类型解析为Date日期类型(转换时,该String要符合指定规则,否则不能 转换)

img

 public static void main(String[] args) throws ParseException {
      
        //给定一个String类型的时间
        String time = "2019-09-10";
        //参数要与给定的时间格式相同,否则会抛出ParseException
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //抛出异常
        Date parse = sdf.parse(time);
        System.out.println(parse);
 
    }

一般在公司,很多常用的功能都封装成了一个工具类,会调用就行。

DateFormat作用:即可以将一个Date对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转换为一个Date对象

指定格式---->即SimpleDateFormat(String pattern)构造方法的形参;

img

public abstract class DateFormat extends Format
  /*DateFormat类是一个抽象类,其本身内部提供了可以直接为其实例化的操作。
  得到日期的DateFormat对象:
    public static final DateFormat getDateInstance()
  得到日期时间的DateFormat对象:
public static final DateFormat getDateTimeInstance()
直接使用DateFormat类完成Date类的转换功能:*/
  public final String format(Date date)
import java.text.DateFormat ;
import java.util.Date ;
public class Test{
    public static void main(String args[]){
        DateFormat df1 = null ;        // 声明一个DateFormat
        DateFormat df2 = null ;        // 声明一个DateFormat
        df1 = DateFormat.getDateInstance() ;    // 得到日期的DateFormat对象
        df2 = DateFormat.getDateTimeInstance() ;    // 得到日期时间的DateFormat对象
        System.out.println("DATE:" + df1.format(new Date())) ; // 按照日期格式化
        System.out.println("DATETIME:" + df2.format(new Date())) ;     // 按照日期时间格式化
 
    }
};

通过此类可以直接将Date类的显示进行合理的格式化操作。此时采用的是默认的格式化操作,也可以通过Locale对象指定要显示的区域。如指定的区域是中国:

import java.text.DateFormat ;
import java.util.Date ;
import java.util.Locale ;
public class Test{
    public static void main(String args[]){
        DateFormat df1 = null ;        // 声明一个DateFormat
        DateFormat df2 = null ;        // 声明一个DateFormat
        df1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN")) ;    // 得到日期的DateFormat对象
        df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,new Locale("zh","CN")) ;    // 得到日期时间的DateFormat对象
        System.out.println("DATE:" + df1.format(new Date())) ; // 按照日期格式化
        System.out.println("DATETIME:" + df2.format(new Date())) ;     // 按照日期时间格式化
 
    }
};

SimpleDateFormat类代码:此类的功能是完成日期的显示格式化的,例如,在开发中,可能会将一种日期格式变为另一种日期格式,如下所示:

import java.util.* ;
public class Test{
    public static void main(String args[]){
        String strDate = "2008-10-19 10:11:30.345" ;
        // 准备第一个模板,从字符串中提取出日期数字
        String pat1 = "yyyy-MM-dd HH:mm:ss.SSS" ;
        // 准备第二个模板,将提取后的日期数字变为指定的格式
        String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" ;
        SimpleDateFormat sdf1 = new SimpleDateFormat(pat1) ;        // 实例化模板对象
        SimpleDateFormat sdf2 = new SimpleDateFormat(pat2) ;        // 实例化模板对象
        Date d = null ;
        try{
            d = sdf1.parse(strDate) ;    // 将给定的字符串中的日期提取出来
        }catch(Exception e){            // 如果提供的字符串格式有错误,则进行异常处理
            e.printStackTrace() ;        // 打印异常信息
        }
        System.out.println(sdf2.format(d)) ;    // 将日期变为新的格式
    }
};

例子:你活了多少天了?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
 
public class LiveDayDemo {
 
    public static void main(String[] args) throws ParseException {
        //1. 获取你的生日 (String) -> Date -> getTime
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的生日(yyyy-MM-dd):");
        String birthString = sc.nextLine();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date birthDate = sdf.parse(birthString);
        long birthTime = birthDate.getTime();
        //2. 获取系统当前时间  new Date().getTime();
        long currentTime = new Date().getTime();
        //3. 当前时间 - 你的生日 (毫秒值)
        long day = (currentTime - birthTime) / 1000 / 3600 / 24;
        System.out.println("你活了" + day + "天");
    }
}

3.java.util.Calendar 表示日历的类

Calendar类 :抽象类,不能new,其方法都是静态方法,它为特定瞬间与一组诸如YEAR、MONTH 、DAY_OF_MONTH等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期)提供了一些方法。

Calendar类可以精确的得到每一个日历字段,如果你想得到年月日,时分秒这样的数据,就可以把日历字段做拼接

1)Calendar提供了一个静态方法(不用创建对象,节约资源),可以直接获取当地日历

创建对象:

Calendar c = Calendar.GetInstance() //根据系统信息获取当地的日历对象

或者用子类创建对象:

Calendar c = new GregorianCalendar();

但这样获取的信息非常多,所以Calendar提供了get()方法获取具体的日历,参数为Calendar提供的很多常量值。

private static void method2() {
        Calendar c = Calendar.getInstance();
        //c.getYear();  获取年份,可以替换为下面的方式
        int year = c.get(Calendar.YEAR);
        // 获取月分,获取的是0--11月,不符合实际生活,所以+1
        int month = c.get(Calendar.MONTH) + 1;
        //获取天(几号)
        int day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "-" + month + "-" + day);
    }

public int get(int field) 返回给定日历字段的值

eg:int year = rightNow.get(Calendar.YEAR);

​ int second = rightNow.get(Calendar.SECOND);显示的是5,而不是05

所以在输出秒的时候可以用.append(second>9?second:“0”+second);

注意:三元运算符返回连个不同类型的值,如果大于9,则返回int类型;否则,返回字符串类型

成员方法:
  1.abstract void add(int field,int amout);根据字段名称和偏移量,修改时间
  field字段值:Calendar.YEAR amout 偏移量
  2.int get (int field):返回日历字段的值,
  3.Date getTime():返回一个表示此Calendar时间值的Date对象
  4.void set(int field,int value):将给定的日历字段值设置为给定值
  5.void set(int year,int month,int date,int hourOfDay,int minute,int second)
  6.void setTime(Date date):
  在Calendar 类中,月份的表示以0-11 表示1-12月,西方的周日,中国的周一

     Calendar c = Calendar.getInstance();
        // 在 天数添加 30天
        c.add(Calendar.DAY_OF_MONTH,30);
 
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1; // 0 ~11
        int day = c.get(Calendar.DAY_OF_MONTH);
 
        System.out.println(year + "-" + month + "-" + day);
public class Test{
    public static void main(String args[]){
        Calendar calendar = new GregorianCalendar();    // 实例化Calendar类对象
        System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
        System.out.println("MONTH: " + (calendar.get(Calendar.MONTH) + 1));
        System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
        System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
        System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
    }
};
//注:在取得月份的时候要特别注意,需要加1。
 // 如果按照此方法取得,则很麻烦,最好的做法是将Date进行一些相关的格式化操作。

4.System类:系统类

a.final修饰,不让继承 b.私有化构造,不让实例化 c.所有属性和方法都是static

System从一开始接触Java就已经接触到:System.out.println System.in等

提供了静态成员供我们使用

1)public static void gc()运行JVM中的垃圾回收器,完成内村长垃圾的清除

2)public static void exit(int status)用于结束正在运行的Java程序。参数传入一个数字即可。通常传入0记为正常状态,其他为异常状态

  1. public static long currentTimeMills() 获取当前系统时间与时间原点的毫秒差值

而new Date().getTime()得底层正是这个:所以可以直接使用currentTimeMillis方法获取,效率更高

public Date(){
	this(System.currentTimeMillis());
}

可以用来计算一段程序执行所需的时间

long start = System.currentTimeMills();

…程序

long end = System.currentTimeMills();

end - start

4)getProperty(String key)用来获取指定键(字符串名称)中所记录的系统属性信息

img

  1. public static void arraycopy(Object src,int srcPOS,Object dest,int destPos,int length)用来实现将源数组部分元素复制到目标数组的指定位置(源数组,源数组起始位置,目标数组,目标数组起始位置,长度)

这个数组复制功能在JDK源码中用的多,实际使用中用的少

 /*        参数含义
         * @param      src      源数组
         * @param      srcPos   源数组起始位置
         * @param      dest     目标数组
         * @param      destPos  目标数组的起始位置
         * @param      length    被复制的元素个数
         */
        int[] src = {1,2,3,4,5};
        int[] dest = {6,7,8,9,0};
        System.arraycopy(src,2,dest,0,3);
 
        System.out.println(Arrays.toString(dest)); //[3, 4, 5, 9, 0]

例子:现有一个字符数组{‘e’,‘r’,‘r’,‘o’,‘a’},请使用System类中的arraycopy()方法在控制台输出“error”

char[] array1 = {'e','r','r','o','a'};
System.arraycopy(array1,1, array1,array1.length-1,1);
System.out.println(array1);

5.StringBuilder

String被final修饰,所以本身不可变,每次对String进行操作,都会产生很多新的对象,很浪费资源,影响效率;

StringBuilder继承自AbstractStringBuilder,每个对象都有一定的缓冲区,在缓冲区范围内操作, 不会产生新(临时)的对象。

StringBuilder拼接字符串可用append("…")拼接

StringBuilder append = sb.append("1").append(2).append("3").append(4).append(5).append(6);
        System.out.println(append);

为什么要用StringBuilder:

例:分别使用String的+=和StringBuilder的append()方法对字符串做100000次拼接,计算String拼接100000次花费时间与StringBuilder拼接100000次花费时间并打印。

img

img

6.Math类

数学的类,用来进行基本的数学运算

img

注意向上取整方法:Math.ceil(double i);可以用来做分页;

7.基本数据包装类型

img

注意:基本类型与包装类匹配,否则运行时报错

可以把基本类型转成对象,也可以把对象转成基本类型,也可以基本数据类型转成字符串
1.把基本类型转成对象

第一种构造方法:包装类 i = new 包装类(基本类型);或者包装类 i = new 包装类(“基本类型”)

第二种方法:通过包装类的valueOf方法

包装类的构造方法:Interger inter = new Integer(50);

package com.oracle.demo02;

public class demo02 {

    public static void main(String[] args) {
            //基本数据类型和包装类之间的转换
        //第一种 通过构造方法
            Integer in = new  Integer(44); //deprecated
            Integer in2 = new  Integer("44");
        //第二种  通过包装类的valueof方法
            Integer in3 = Integer.valueOf(33);
            Integer in4 = Integer.valueOf("33"); 
    }

}

2.把对象转成基本数据类型
  包装类对象的方法:inter.intValue();

package com.oracle.demo02;

public class demo02 {

    public static void main(String[] args) {
            Integer in = new  Integer(44);//将包装类对象转为基本数据类型
            int  i = in.intValue();
       System.out.println(i+1);
    }

}

3.把基本数据类型转成字符串 :第一种与 ""相连;第二种valueOf; 第三种:toString(基本数据类型);

包装类的方法:inter.toString();

package com.oracle.demo02;

public class demo01 {
               public static void main(String[] args) {//将基本数据类型转为字符串
                   //第一种与""相连
                   System.out.println(12+""+1);
                   //第二种 valueof
                   System.out.println(String.valueOf(12)+6);
                   //toString(基本数据类型)
                   System.out.println(Integer.toString(12)+9);
            }
}

4.把字符串转成基本数据类型, 包装类.parseXXX(String s);

[parsenXXX]一般为静态方法,因此直接用类名访问[parse:解析]
包装类的方法:Integer.parseInt(“1234”);
5.把基本数据类型转成包装类型
  包装类的方法:Integer.valueOf(55);

  • 自动装箱:把基本类型的数据,自动转换成 包装类型的对象;

  • 自动拆箱:把包装类型的对象 自动 转成 基本类型的数据;

    package com.oracle.demo02;
    
    public class demo03 {
    
        public static void main(String[] args) {
            //自动装箱   基本类型 =》包装类
            Integer i = 2; 
            //自动拆箱   包装类 =》基本类型
            int sum = i+2;
        }
    
    }
    

原文:https://blog.csdn.net/u013905744/article/details/44538469

https://blog.csdn.net/weixin_38816084/article/details/82620084

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值