1. 程式人生 > 其它 >2021年度總結 | 葡萄城軟體開發技術回顧(上)

2021年度總結 | 葡萄城軟體開發技術回顧(上)

常用類

String

String:字串,使用一對“”引號來表示。

  1. String宣告為final的,不可被繼承

  2. String實現了Serializable介面:表示字串是支援序列化的。

實現了Comparable介面:表示String可以比較大小

  1. String 內部定義了final char [ ] value用於儲存字串資料

  2. String:代表不可變的字元序列。簡稱:不可變性。

體現:- 當對字串重新賦值時,需要重寫指定的記憶體區域賦值,不能使用原有的value進行賦值。

- 當對現有的字串進行連線操作時,也需要重新指定記憶體區域賦值,不能使用原有的value進行賦值。

- 當呼叫String的replace( )方法修改指定字元或字串時,也需要重新指定記憶體區域賦值,不能使用原有的value進行賦值。

  1. 通過字面量的方式(區別於new)給一個字串賦值,此時的字串值宣告在字串常量池中。

  2. 字串常量池中是不會儲存相同內容的字串的。

String的例項化方式:

方式一:通過字面量定義的方式

方式二:通過new + 構造器的方式

結論:

  1. 常量與常量的拼接結果在常量池。且常量池中不會存在相同內容的常量。

  2. 只要其中有一個時變數,結果就在堆中。

  3. 如果拼接的結果呼叫intern()方法,返回值就在常量池中

常用方法

int length():返回字串的長度: return value.length

char charAt(int index):返回某索引處的字元return value [index]

boolean isEmpty( ):判斷是否是空字串:return value.length ==0

String toLowerCase( ):使用預設語言環境,將String中的所有字元轉換為小寫

String toUpperCase( ):使用預設語言環境,將String中的所有字元轉換為大寫

String trim( ):返回字串的副本,忽略前導空白和尾部空白

boolean equals(Object obj):比較字串的內容是否相同

boolean equalsIgnoreCase(String anotherString):與equals方法類似,忽略大小寫

String concat(String str):將指定字串連線到此字串的結尾。 等價於用“+”

int compareTo(String anotherString):比較兩個字串的大小

String substring(int beginIndex):返回一個新的字串,它是此字串的從begin Index開始擷取到最後的一個子字串

String substring(int beginIndex, int endIndex):返回一個新字串,它是此字串從begin index開始擷取到endIndex(不包含)的一個子字串。

boolean endsWith(String suffix):測試此字串是否以指定的字尾結束

boolean startsWith(String prefix):測試此字串是否以指定的字首開始

boolean startsWith(String prefix, int toffset):測試此字串從指定索引開始的 子字串是否以指定字首開始

boolean contains(CharSequence s):當且僅當此字串包含指定的 char 值序列 時,返回 true

int indexOf(String str):返回指定子字串在此字串中第一次出現處的索引

int indexOf(String str, int fromIndex):返回指定子字串在此字串中第一次出 現處的索引,從指定的索引開始

int lastIndexOf(String str):返回指定子字串在此字串中最右邊出現處的索引

int lastIndexOf(String str, int fromIndex):返回指定子字串在此字串中最後 一次出現處的索引,從指定的索引開始反向搜尋

注:indexOf和lastIndexOf方法如果未找到都是返回-1

替換:

String replace(char oldChar, char newChar):返回一個新的字串,它是 通過用 newChar 替換此字串中出現的所有 oldChar 得到的。

String replace(CharSequence target, CharSequence replacement):使 用指定的字面值替換序列替換此字串所有匹配字面值目標序列的子字串。

String replaceAll(String regex, String replacement) : 使 用 給 定 的 replacement 替換此字串所有匹配給定的正則表示式的子字串。

String replaceFirst(String regex, String replacement) : 使 用 給 定 的 replacement 替換此字串匹配給定的正則表示式的第一個子字串。

匹配:

boolean matches(String regex):告知此字串是否匹配給定的正則表示式。

切片:

String[] split(String regex):根據給定正則表示式的匹配拆分此字串。

String[] split(String regex, int limit):根據匹配給定的正則表示式來拆分此 字串,最多不超過limit個,如果超過了,剩下的全部都放到最後一個元素中。

String和其他型別轉換

String 與 char[ ]之間的轉換

String --》 char[ ]: 呼叫String的toCharArray()

char [ ] --》 String :呼叫String的構造器

String 與 byte[ ]之間的轉換

編碼:String --》 byte[ ]:呼叫String的getBytes()

解碼:byte[ ] - -> String :呼叫String的構造器

說明:解碼時,要求解碼使用的字符集必須與編碼時使用的字符集一致,否則出現亂碼。

StringBuffer

StringBuffer類不同於String,其物件必須使用構造器生成。有三個構造器:

StringBuffer():初始容量為16的字串緩衝區

StringBuffer(int size):構造指定容量的字串緩衝區

StringBuffer(String str):將內容初始化為指定字串內容

常用方法

StringBuffer append(xxx):提供了很多的append()方法,用於進行字串拼接

StringBuffer delete(int start,int end):刪除指定位置的內容

StringBuffer replace(int start, int end, String str):把[start,end)位置替換為str

StringBuffer insert(int offset, xxx):在指定位置插入xxx

StringBuffer reverse() :把當前字元序列逆轉

public int indexOf(String str)

public String substring(int start,int end) :返回一個從start開始到end索引結束的左閉右開區間的子字串

public int length() public char charAt(int n )

public void setCharAt(int n ,char ch

StringBuilder

String、StringBuffer、StringBuilder三者的異同?

String:不可變的字元序列;底層使用char[ ]儲存

StringBuffer:可變的字元序列;執行緒安全的,效率低;底層使用char[ ]儲存

StringBuilder:可變的字元序列;jdk5.0新增的,執行緒不安全的,效率高;底層使用char[ ]儲存

擴容問題:如果要新增的資料底層陣列放不下了,那就需要擴容底層的陣列。

預設情況下,擴容為原來容量的2被+2,同時將原有陣列中的元素複製到新的陣列中。

三者效率:

從高到低排列:StringBuilder > StringBuffer > String

Date類

System類中currentTimeMillis( );

//返回當前時間與1970年1月1日0時0分0秒之間以毫秒為單位的時間差。

//稱為時間戳

java.util.Date類

java.sql.Date類

  1. 兩個構造器的使用

構造器一:Date( ):建立一個對應當前時間的Date物件

構造器二:創建制定毫秒數的Date物件

  1. 兩個方法的使用

toString( ):顯示當前的年、月、時、分、秒

getTime( ):獲取當前Date物件對應的毫秒數。(時間戳)

  1. Java.sql.Date對應著資料庫中的日期型別的變數

SimpleDateFormat

SimpleDateFormat的使用:SimpleDateFormat對日期Date類的格式化和解析

  1. 兩個操作

    • 格式化:日期 ---》字串

    • 解析:格式化的逆過程,字串 ----》 日期

Calendar(日曆)類

Calendar日曆類(抽象類)的使用

  1. 例項化

方式一:建立其子類(GregorianCalendar)的物件

方式二:呼叫其靜態方法getInstance()

  1. 常用方法

get(int field)

public void set(int field,int value)

public void add(int field,int amount)

public final Date getTime()

public final void setTime(Date date)

LocalDate、LocalTime、LocalDateTime的使用

說明:

  1. LocalDateTime相較於LocalDate、LocalTime,使用頻率要高

  2. 類似於Calendar

Java比較器

一、說明:Java中的物件,正常情況下,只能進行比較:== 或 !=。不能使用 > 或 < 的

但是在開發場景中,我們需要對多個物件進行排序,言外之意,就需要比較物件的大小。

如何實現?使用兩個介面中的任何一個:Comparable 或 Comparator

二、Comparable介面的使用

Comparable介面的使用舉例:(自然排序)

  1. 像String、包裝類等實現了Comparable介面,重寫了compareTo()方法,給出了比較兩個物件大小的方式。

  2. 像String、包裝類重寫compareTo()方法以後,進行了從小到大的排列

  3. 重寫compareTo(obj)的規則:

如果當前物件this大於形參物件obj,則返回正整數,

如果當前物件this小於形參物件obj,則返回負整數,

如果當前物件this等於形參物件obj,則返回零

  1. 對於自定義類來說,如果需要排序,我們可以讓自定義類實現Comparable介面,重寫compareTo()方法,在compareTo()方法中指明如何排序

Comparator介面的使用:定製排序

  1. 背景:

當元素的型別沒有實現java.lang.Comparable介面而又不方便修改程式碼,或者實現了java.lang.Comparable介面的排序規則不適合當前的操作,那麼可以考慮使用Comparator的物件來排序

  1. 重寫compare(Object 01,Object 02)方法,比較01和02的大小:

如果方法返回正整數,則表示01大於02;如果返回0,表示相等;返回負整數,表示01小於02

其他常用類

System

Math

BigInteger 和 BigDecimal