文章目錄
- 1、可變字元串類
-
- 1.1 基本概念
- 1.2 StringBuilder類常用的構造方法
- 1.3 StringBuilder類常用的成員方法
- 1.4 傳回值的設計
- 2、Java8之前的日期相關類
-
- 2.1 System類的概述
-
- 2.2 Date類的概述
-
- 2.3 SimpleDateFormat類的概述
-
- 2.4 Calendar類的概述
-
- 2.4.1 基本概念
- 2.4.2 常用的方法
- 2.4.3 多态的使用場合
- 3、 Java8中的日期相關類
-
- 3.1 Java8日期類的由來
- 3.2 Java8日期類的概述
- 3.3 LocalDate類的概述
-
- 3.4 LocalTime類的概述
-
- 3.5 LocalDateTime類的概述
-
- 3.6 Instant類的概述
-
- 3.7 DateTimeFormatter類的概述
-
1、可變字元串類
1.1 基本概念
- 由于String類描述的字元串内容是個常量不可改變,當需要在Java代碼中描述大量類似的字元串時,隻能單獨申請和存儲,此時會造成記憶體空間的浪費。
- 為了解決上述問題,可以使用java.lang.StringBuilder類和java.lang.StringBuffer類來描述字元序列可以改變的字元串。
- StringBuffer類是從jdk1.0開始存在,屬于線程安全的類,是以效率比較低。
- StringBuilder類是從jdk1.5開始存在,屬于非線程安全的類,效率比較高。
1.2 StringBuilder類常用的構造方法
方法聲明 | 功能介紹 |
StringBuilder() | 使用無參方式構造對象,容量為16 |
StringBuilder(int capacity) | 根據參數指定的容量來構造對象,容量為參數指定大小 |
StringBuilder(String str) | 根據參數指定的字元串來構造對象,容量為:16+字元串長度 |
1.3 StringBuilder類常用的成員方法
方法聲明 | 功能介紹 |
int capacity() | 用于傳回調用對象的容量 |
int length() | 用于傳回字元串的長度,也就是字元的個數 |
StringBuilder insert(int offset, String str) | 插入字元串并傳回調用對象的引用,就是自己 |
StringBuilder append(String str) | 字元串的末尾追加字元串 |
StringBuilder deleteCharAt(int index) | 将目前字元串中下标為index位置的單個字元删除 |
StringBuilder delete(int start,int end) | 删除字元串 |
StringBuilder replace(int start,int end,String str) | 替換字元串 |
StringBuilder reverse() | 字元串反轉 |
- 注意:作為參數傳遞的話,方法内部String不會改變其值,StringBuffer和StringBuilder會改變其值。
- 筆試考點一:如何實作StringBuilder類型和String類型之間的轉換?
StringBuilder sb3 = new StringBuilder("hello");
String str3 = sb3.toString();
StringBuilder sb5 = new StringBuilder(str3);
1.4 傳回值的設計
- StringBuilder的很多方法的傳回值均為StringBuilder類型。這些方法的傳回語句均為:return this。
- 由此可見,這些方法在對StringBuilder所封裝的字元序列進行改變後又傳回了該對象的引用。基于這樣設計的目的在于可以連續調用。
2、Java8之前的日期相關類
2.1 System類的概述
2.1.1 常用的方法
方法聲明 | 功能介紹 |
static long currentTimeMillis() | 傳回目前時間與1970年1月1日0時0分0秒之間以毫秒為機關的時間差。通常用于測試某一段代碼的執行效率。 |
2.2 Date類的概述
2.2.1 基本概念
- java.util.Date類主要用于描述特定的瞬間,也就是年月日時分秒,可以精确到毫秒。
2.2.2 常用的方法
方法聲明 | 功能介紹 |
Date() | 使用無參的方式構造對象,也就是目前系統時間 |
Date(long date) | 根據參數指定毫秒數構造對象, 參數為距離1970年1月1日0時0分0秒的毫秒數 |
long getTime() | 擷取調用對象距離1970年1月1日0時0分0秒的毫秒數 |
void setTime(long time) | 設定調用對象為距離基準時間time毫秒的時間點 |
2.3 SimpleDateFormat類的概述
2.3.1 基本概念
- java.text.SimpleDateFormat類主要用于實作日期和文本之間的轉換。
2.3.2 常用的方法
方法聲明 | 功能介紹 |
SimpleDateFormat() | 使用無參方式構造對象 |
SimpleDateFormat(String pattern) | 根據參數指定的模式來構造對象,模式主要有: y-年 M-月 d-日 H-時 m-分 s-秒 |
final String format(Date date) | 用于将日期類型轉換為文本類型 |
Date parse(String source) | 用于将文本類型轉換為日期類型 |
2.4 Calendar類的概述
2.4.1 基本概念
- java.util.Calender類主要用于描述特定的瞬間,取代Date類中的過時方法實作全球化。
- 該類是個抽象類,是以不能執行個體化對象,其具體子類針對不同國家的月曆系統,其中應用最廣泛的是GregorianCalendar(格裡高利曆),對應世界上絕大多數國家/地區使用的标準月曆系統。
2.4.2 常用的方法
方法聲明 | 功能介紹 |
static Calendar getInstance() | 用于擷取Calendar類型的引用 |
void set(int year, int month, int date, int hourOfDay, int minute, int second) | 用于設定年月日時分秒資訊 |
Date getTime() | 用于将Calendar類型轉換為Date類型 |
void set(int field, int value) | 設定指定字段的數值 |
void add(int field, int amount) | 向指定字段增加數值 |
2.4.3 多态的使用場合
public static void draw(Shape s){
s.show();
}
draw(new Rect(1, 2, 3, 4));
Calender getInstance(){
return new GregorianCalendar(zone, aLocale);
}
3、 Java8中的日期相關類
3.1 Java8日期類的由來
JDK 1.0中包含了一個java.util.Date類,但是它的大多數方法已經在JDK 1.1引入Calendar類之後被棄用了。而Calendar并不比Date好多少。它們面臨的問題是:
- Date類中的年份是從1900開始的,而月份都從0開始。
- 格式化隻對Date類有用,對Calendar類則不能使用。
- 非線程安全等。
3.2 Java8日期類的概述
- Java 8通過釋出新的Date-Time API來進一步加強對日期與時間的處理。
- java.time包:該包是日期/時間API的基礎包。
- java.time.chrono包:該包提供對不同月曆系統的通路。
- java.time.format包:該包能夠格式化和解析日期時間對象。
- java.time.temporal包:該包包含底層架構和擴充特性。
- java.time.zone包:該包支援不同時區以及相關規則的類。
3.3 LocalDate類的概述
3.3.1 基本概念
- java.time.LocalDate類主要用于描述年-月-日格式的日期資訊,該類不表示時間和時區資訊。
3.3.2 常用的方法
方法聲明 | 功能介紹 |
static LocalDate now() | 在預設時區中從系統時鐘擷取目前日期 |
3.4 LocalTime類的概述
3.4.1 基本概念
- java.time.LocalTime 類主要用于描述時間資訊,可以描述時分秒以及納秒。
3.4.2 常用的方法
方法聲明 | 功能介紹 |
static LocalTime now() | 從預設時區的系統時間中擷取目前時間 |
static LocalTime now(ZoneId zone) | 擷取指定時區的目前時間 |
3.5 LocalDateTime類的概述
3.5.1 基本概念
- java.time.LocalDateTime類主要用于描述ISO-8601月曆系統中沒有時區的日期時間,如2007-12-03T10:15:30。
3.5.2 常用的方法
方法聲明 | 功能介紹 |
static LocalDateTime now() | 從預設時區的系統時間中擷取目前日期時間 |
static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second) | 根據參數指定的年月日時分秒資訊來設定日期時間 |
int getYear() | 擷取年份字段的數值 |
int getMonthValue() | 擷取1到12之間的月份字段 |
int getDayOfMonth() | 擷取日期字段 |
int getHour() | 擷取小時數 |
int getMinute() | 擷取分鐘數 |
int getSecond() | 擷取秒數 |
LocalDateTime withYear(int year) | 設定為參數指定的年 |
LocalDateTime withMonth(int month) | 設定為參數指定的月 |
LocalDateTime withDayOfMonth(int dayOfMonth) | 設定為參數指定的日 |
LocalDateTime withHour(int hour) | 設定為參數指定的時 |
LocalDateTime withMinute(int minute) | 設定為參數指定的分 |
LocalDateTime withSecond(int second) | 設定為參數指定的秒 |
LocalDateTime plusYears(long years) | 加上參數指定的年 |
LocalDateTime plusMonths(long months) | 加上參數指定的月 |
LocalDateTime plusDays(long days) | 加上參數指定的日 |
LocalDateTime plusHours(long hours) | 加上參數指定的時 |
LocalDateTime plusMinutes(long minutes) | 加上參數指定的分 |
LocalDateTime plusSeconds(long seconds) | 加上參數指定的秒 |
LocalDateTime minusYears(long years) | 減去參數指定的年 |
LocalDateTime minusMonths(long months) | 減去參數指定的月 |
LocalDateTime minusDays(long days) | 減去參數指定的日 |
LocalDateTime minusHours(long hours) | 減去參數指定的時 |
LocalDateTime minusMinutes(long minutes) | 減去參數指定的分 |
LocalDateTime minusSeconds(long seconds) | 減去參數指定的秒 |
3.6 Instant類的概述
3.6.1 基本概念
- java.time.Instant類主要用于描述瞬間的時間點資訊。
3.6.2 常用的方法
方法聲明 | 功能介紹 |
static Instant now() | 從系統時鐘上擷取目前時間 |
OffsetDateTime atOffset(ZoneOffset offset) | 将此瞬間與偏移量組合以建立偏移日期時間 |
static Instant ofEpochMilli(long epochMilli) | 根據參數指定的毫秒數來構造對象,參數為距離1970年1月1日0時0分0秒的毫秒數 |
long toEpochMilli() | 擷取距離1970年1月1日0時0分0秒的毫秒數 |
3.7 DateTimeFormatter類的概述
3.7.1 基本概念
- java.time.format.DateTimeFormatter類主要用于格式化和解析日期。
3.7.2 常用的方法
方法聲明 | 功能介紹 |
static DateTimeFormatter ofPattern(String pattern) | 根據參數指定的模式來擷取對象 |
String format(TemporalAccessor temporal) | 将參數指定日期時間轉換為字元串 |
TemporalAccessor parse(CharSequence text) | 将參數指定字元串轉換為日期時間 |