您的位置:首页 > 编程语言 > Java开发

Java常用API

2019-08-17 20:00 260 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_43273005/article/details/99697158

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)
将系统时间格式化为字符串类型

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要符合指定规则,否则不能 转换)

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)构造方法的形参;

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)
用来获取指定键(字符串名称)中所记录的系统属性信息

  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次花费时间并打印。

6.Math类

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

注意向上取整方法:

Math.ceil(double i)
;可以用来做分页;

7.基本数据包装类型

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

可以把基本类型转成对象,也可以把对象转成基本类型,也可以基本数据类型转成字符串
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://www.geek-share.com/detail/2638012168.html

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: