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)将系统时间格式化为字符串类型
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记为正常状态,其他为异常状态
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)用来获取指定键(字符串名称)中所记录的系统属性信息
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
- 阶段1 语言基础+高级_1-3-Java语言高级_03-常用API第二部分_第5节 StringBuilder类_1_StringBuilder的原理...
- Java常用基础操作API
- mongodb java api常用方法的使用以及和spring的集成使用
- 黑马日记第六篇——java常用API
- 详解介绍Selenium常用API的使用--Java语言(完整版)
- Java常用API(五)Math 数学类
- JAVA 常用API(一)
- Java基础知识:常用API
- Java基础系列(十四)常用API
- Java语言基础-常用对象API(二)泛型、Map集合
- java学习笔记——API中的常用类和StringBuffer
- Java map 详解 - 用法、遍历、排序、常用API等
- Java常用API解析——序列化API
- JAVA常用API###集合
- 【Java学习笔记】12.常用API
- java-常用API
- Java基础---API常用类3(Random类与BigDecimal类)
- Java常用API(一)
- 用java常用加密,解密,数字签名等常用API
- Java学习记录day14--常用API学习