Java SE-02-常用API

1.1 String

  1. jdk1.8及以前String底層使用的是char數(shù)組,jdk1.9及以后使用的是byte數(shù)組茄厘。
  2. 字符串之間使用+號連接時豆巨,系統(tǒng)底層會自動創(chuàng)建一個StringBuilder或StringBuffer對象松却,然后再調(diào)用其append方法完成拼接沫浆,拼接后再調(diào)用其toString方法轉(zhuǎn)換為String類型。
  3. String內(nèi)容不可變洲尊,字符串創(chuàng)建后不能被更改远豺,但可以被共享;
  4. Java中的所有雙引號字符串坞嘀,都是String類的對象躯护;
  5. 通過new創(chuàng)建的字符串對象,每一次new都會申請一個內(nèi)存空間丽涩,雖然內(nèi)容相同棺滞,但是地址值不同
  6. 以""方式給出的字符串,只要字符序列相同(順序和大小寫),無論在程序代碼中出現(xiàn)幾次继准,JVM都只會建立一個String對象厘擂,并在字符串池中維護
常用構(gòu)造:
// 初始化新創(chuàng)建的String對象,以使其表示空字符序列
String()

// 分配一個新的String以便它表示當(dāng)前包含在字符數(shù)組參數(shù)中的字符序列
String(char[] value)

解碼:
// 通過使用平臺的默認字符集解碼指定的字節(jié)數(shù)組來構(gòu)造新的String
String(byte[] bytes)
// 構(gòu)造一個新的String由指定用指定的字節(jié)的數(shù)組解碼charset
String(byte[] bytes, String charsetName)

String s = "字符串";

常用方法:
// 返回指定索引處的char值
char charAt(int index)

// 將此字符串與指定對象進行比較
boolean equals(Object anObject)

// 返回此字符串的長度
int length()

// 測試此字符串是否以指定的后綴結(jié)尾
boolean endsWith(String suffix)

// 測試此字符串是否以指定的前綴開頭
boolean startsWith(String prefix)

// 按字典順序比較兩個字符串
int compareTo(String anotherString)

// 當(dāng)且僅當(dāng)此字符串包含指定的char值序列時才返回true
boolean contains(CharSequence s)

// 返回一個字符串锰瘸,該字符串是此字符串的子字符串[beginIndex, endIndex)
String substring(int beginIndex, int endIndex)

// 返回字符串的副本,忽略前導(dǎo)空白和尾部空白
String trim()

// 返回Object參數(shù)的字符串表示形式
static String valueOf(Object obj)

// 將當(dāng)前字符串中匹配regex正則表達式的符號作為"分隔符"來分割字符串
String[] split(String regex)

// 將當(dāng)前字符串中匹配regex正則表達式的所有子字符串替換為replacement
String replaceAll(String regex, String replacement)

// 將當(dāng)前字符串中匹配regex正則表達式的第一個子字符串替換為replacement
String replaceFirst(String regex, String replacement)

// 告訴這個字符串是否匹配給定的regular expression
boolean matches(String regex)

編碼:
// 使用平臺的默認字符集將該String編碼為一系列字節(jié)昂灵,將結(jié)果存儲到新的字節(jié)數(shù)組中
byte[] getBytes()
// 使用指定的字符集將該String編碼為一系列字節(jié)避凝,將結(jié)果存儲到新的字節(jié)數(shù)組中
byte[] getBytes(String charsetName)

1.2 StringBuilder

  1. StringBuilder內(nèi)容可變
  2. StringBuilder和StringBuffer的方法相同,但StringBuilder線程不安全(效率高)眨补,而StringBuffer線程安全(效率低)
  3. String轉(zhuǎn)換為StringBuilder:使用StringBuilder構(gòu)造方法StringBuilder(String str)
  4. StringBuilder轉(zhuǎn)換為String:使用StringBuilder成員方法String toString()
  5. String管削、StringBuilder、StringBuffer應(yīng)用場景:
    1. String適用于少量的字符串拼接的情況
    2. StringBuilder適用于單線程下在字符緩沖區(qū)進行大量操作的情況
    3. StringBuffer適用于多線程下在字符緩沖區(qū)進行大量操作的情況
常用構(gòu)造:
// 構(gòu)造一個沒有字符的字符串構(gòu)建器撑螺,初始容量為16個字符
StringBuilder()

// 構(gòu)造一個初始化為指定字符串內(nèi)容的字符串構(gòu)建器
StringBuilder(String str)

常用方法:
// 返回長度(字符數(shù))
int length()

// 將參數(shù)的字符串表示追加到此序列含思,并返回對象本身
StringBuilder append(參數(shù))

// 導(dǎo)致該字符序列被序列的相反代替
StringBuilder reverse()

1.3 Pattern

java.util.regex.Pattern:正則表達式類

正則表達式(Regular Expression)通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本

2.1 Date

常用構(gòu)造:
// 分配一個 Date對象并對其進行初始化甘晤,以便它表示分配的時間含潘,以最接近的毫秒為單位
Date()

// 配一個Date對象,并將其初始化為表示從標準基準時間即1970年1月1日00:00:00 GMT起的指定毫秒數(shù)
Date(long date)

常用方法:
// 返回自1970年1月1日以來线婚,由 Date對象表示的00:00:00 GMT的毫秒數(shù)
long getTime()

// 將此Date對象設(shè)置為1970年1月1日00:00:00 GMT后的 time毫秒的時間點
void setTime(long time)

2.2 SimpleDateFormat

常用日期和時間模式:
y  Year
M  Month in year (context sensitive)
w  Week in year
W  Week in month
D  Day in year
d  Day in month
H  Hour in day (0-23)
m  Minute in hour
s  Second in minute

常用構(gòu)造:
// 構(gòu)造一個 SimpleDateFormat使用默認模式和日期格式符號為默認的 FORMAT區(qū)域設(shè)置
SimpleDateFormat()

// 使用給定模式構(gòu)建一個SimpleDateFormat遏弱,默認日期格式符號為默認的 FORMAT區(qū)域設(shè)置
SimpleDateFormat(String pattern)

常用方法:
// 將日期轉(zhuǎn)換為字符串
String format(Date date)

// 將文本解析為日期
Date parse(String text)

// 將給定模式字符串應(yīng)用于此日期格式
void applyPattern(String pattern)

2.3 Calendar

Calendar類是一個抽象類,可以用于操縱該日歷字段

常用方法:
// 使用默認時區(qū)和區(qū)域設(shè)置獲取日歷
static Calendar getInstance()

// 返回給定日歷字段的值
int get(int field)

// 根據(jù)日歷的規(guī)則塞弊,將指定的時間量添加或減去給定的日歷字段
abstract void add(int field, int amount)

// 設(shè)置日歷字段的值YEAR漱逸,MONTH,DAY_OF_MONTH
void set(int year, int month, int date)

// 使用給定的Date設(shè)置此Calendar的時間
void setTime(Date date)

// 用給定的long值設(shè)置此Calendar的當(dāng)前時間值
void setTimeInMillis(long millis)

3.1 Math

常用字段:
// 比其他任何一個更接近e的double值游沿,自然對數(shù)的基礎(chǔ)
static double E

// 比其他任何一個更接近pi的double值饰抒,圓周長與其直徑的比率
static double PI

常用方法:
// 返回值為a的絕對值
static double abs(基礎(chǔ)類型 a)

// 向上取整
static double ceil(double a)

// 向下取整
static double floor(double a)

// 四舍五入
static int round(基礎(chǔ)類型 a)

// 返回較大值
static long max(基礎(chǔ)類型 a, 基礎(chǔ)類型 b)

// 返回較小值
static double min(基礎(chǔ)類型 a, 基礎(chǔ)類型 b)

// [0, 1)的隨機數(shù)
static double random()

// a的b次冪
static double pow(double a, double b)

3.2 大數(shù)運算

java.math.BigInteger
java.math.BigDecimal

常用構(gòu)造:
// 將 BigInteger 的十進制字符串表示形式轉(zhuǎn)換為 BigInteger
BigInteger(String val)

常用方法:
// 返回其值為 (this + val) 的 BigInteger
BigInteger add(BigInteger val)

// 返回其值為 (this - val) 的 BigInteger
BigInteger subtract(BigInteger val)

// 返回其值為 (this * val) 的 BigInteger
BigInteger multiply(BigInteger val)

// 返回其值為 (this / val) 的 BigInteger
BigInteger divide(BigInteger val)

BigDecimal的divide除不盡時會拋算術(shù)異常,這時需要傳遞scale和roundingMode
// scale:保留的位數(shù)诀黍;roundingMode:怎么保留
// ROUND_UP類似于向上取整
// ROUND_DOWN類似于向下取整
// ROUND_HALF_UP四舍五入
BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

4. 包裝類

基本類型    包裝類
byte        Byte
short       Short
int         Integer
long        Long
float       Float
double      Double
char        Character
boolean     Boolean

常用字段:
// int 類型能夠表示的最大值
static int MAX_VALUE

// int 類型能夠表示的最小值
static int MIN_VALUE

常用構(gòu)造:
Integer(String s)
Integer(int value)

常用方法:
static String toBinaryString(int i)
static String toHexString(int i)
static String toOctalString(int i)

// 字符串轉(zhuǎn)基本類型int
static int parseInt(String s)
static Integer valueOf(String s)
// 若Integer的內(nèi)容在字節(jié)范圍袋坑,則valueOf不會new對象
int intValue()
// 樣例
int i = Integer.valueOf("226").intValue();
int j = Integer.parseInt("226");

// 自動裝箱:將基本數(shù)據(jù)類型轉(zhuǎn)成對象
Integer i = 226;
// 自動拆箱:將對象轉(zhuǎn)成基本數(shù)據(jù)類型
// 先拆箱,再裝箱
i = i + 1;
自動裝箱和自動拆箱是javac進行編譯上的優(yōu)化

5. Random

常用構(gòu)造:
// 創(chuàng)建一個新的隨機數(shù)生成器
Random()

常用方法:
// 范圍:int所有范圍
int nextInt()

// 范圍:[0, range)
int nextInt(int bound)

6. Arrays數(shù)組工具類

常用方法:
// 按照默認升序?qū)?shù)組元素排序
// 如果是對自定義類型排序眯勾,那么這個自定義的類需要有Comparable或Comparator接口的支持
static void sort(int[] a)

// 返回指定數(shù)組內(nèi)容的字符串表示形式咒彤,默認格式:[元素0, 元素1, 元素2]
static String toString(int[] a)

// 使用二叉搜索算法搜索指定對象的指定數(shù)組
static int binarySearch(Object[] a, Object key)

7. Base64

Base64是jdk8出現(xiàn)的,可以按照一定規(guī)則進行編碼和解碼

3中Base64編解碼器:
基本:輸出被映射到一組字符A-Za-z0-9+/咒精,編碼不添加任何行標镶柱,輸出的解碼僅支持A-Za-z0-9+/
URL:輸出映射到一組字符A-Za-z0-9+_,輸出是URL和文件
MIME:輸出每行不超過76字符模叙,并且使用'\r'并跟隨'\n'作為分割歇拆,編碼輸出最后沒有行分割

獲取編碼器和解碼器的方法:
// 基本型base64解碼器
static Base64.Decoder getDecoder()
// 基本型base64編碼器
static Base64.Encoder getEncoder()
// Mime型base64解碼器
static Base64.Decoder getMimeDecoder()
// Mime型base64編碼器
static Base64.Encoder getMimeEncoder()
// Url型base64解碼器
static Base64.Decoder getUrlDecoder()
// Url型base64編碼器
static Base64.Encoder getUrlEncoder()

編碼和解碼的方法:
Base64.Decoder解碼器:byte[] decode(String src)
Base64.Encoder編碼器:String encodeToString(byte[] src)


Base64使用示例:
import java.util.Base64;

public class Base64Test {
    public static void main(String[] args) {
        String s = "name=用戶名?password=密碼";
        basic(s);
        url(s);
        mime(s);
    }

    public static void basic(String s) {
        Base64.Decoder decoder = Base64.getDecoder();
        Base64.Encoder encoder = Base64.getEncoder();
        // 編碼:bmFtZT3nlKjmiLflkI0/cGFzc3dvcmQ95a+G56CB
        String ets = encoder.encodeToString(s.getBytes());
        System.out.println(ets);
        // 解碼:name=用戶名?password=密碼
        byte[] decode = decoder.decode(ets);
        System.out.println(new String(decode));
    }

    public static void url(String s) {
        Base64.Decoder urlDecoder = Base64.getUrlDecoder();
        Base64.Encoder urlEncoder = Base64.getUrlEncoder();
        // 編碼:bmFtZT3nlKjmiLflkI0_cGFzc3dvcmQ95a-G56CB
        String ets = urlEncoder.encodeToString(s.getBytes());
        System.out.println(ets);
        // 解碼:name=用戶名?password=密碼
        byte[] decode = urlDecoder.decode(ets);
        System.out.println(new String(decode));
    }

    public static void mime(String s) {
        Base64.Decoder mimeDecoder = Base64.getMimeDecoder();
        Base64.Encoder mimeEncoder = Base64.getMimeEncoder();
        // 編碼:bmFtZT3nlKjmiLflkI0/cGFzc3dvcmQ95a+G56CB
        String est = mimeEncoder.encodeToString(s.getBytes());
        System.out.println(est);
        // 解碼:name=用戶名?password=密碼
        byte[] decode = mimeDecoder.decode(est);
        System.out.println(new String(decode));
    }
}

8. System

常用字段:
// “標準”錯誤輸出流
static PrintStream err

// “標準”輸入流
static InputStream in

// “標準”輸出流
static PrintStream out

常用方法:
// 返回當(dāng)前時間(以毫秒為單位)
static long currentTimeMillis()

// 終止當(dāng)前運行的Java虛擬機,非零表示異常終止
static void exit(int status)

// 重新分配“標準”錯誤輸出流
static void setErr(PrintStream err)

// 重新分配“標準”輸入流
static void setIn(InputStream in)

// 重新分配“標準”輸出流
static void setOut(PrintStream out)

// 運行垃圾回收器
static void gc()

// 將指定源數(shù)組中的數(shù)組從指定位置復(fù)制到目標數(shù)組的指定位置
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

// 確定當(dāng)前的系統(tǒng)屬性
static Properties getProperties()

9. Object

Object是類層次結(jié)構(gòu)的根。每個類都有Object作為超類故觅。所有對象(包括數(shù)組)都實現(xiàn)了這個類的方法厂庇。

常用構(gòu)造:
// 構(gòu)造一個新對象
Object()

常用方法:
// 指示一些其他對象是否等于此
boolean equals(Object obj)

// 返回對象的哈希碼值
int hashCode()

// 返回對象的字符串表示形式
String toString()

// 返回此Object的運行時類
Class<?> getClass()

// 隨機喚醒正在等待對象監(jiān)視器的單個線程
void notify()

// 喚醒正在等待對象監(jiān)視器的所有線程
void notifyAll()

// 會讓線程進入無限等待
void wait()

// 導(dǎo)致當(dāng)前線程等待,直到另一個線程調(diào)用該對象的notify()方法或notifyAll()方法输吏,
// 或者某些其他線程中斷當(dāng)前線程权旷,或者已經(jīng)過了一定量的實時時間
void wait(long timeout, int nanos)

// 當(dāng)垃圾收集確定不再有對該對象的引用時,垃圾收集器在對象上調(diào)用該對象
protected void finalize()
  1. equals不重寫則比較兩個對象的哈希值贯溅;重寫則比較兩個對象的成員信息
  2. hashCode不重寫則返回的是對象的哈希值拄氯;重寫則是根據(jù)對象的成員變量來計算出一個整數(shù)
  3. 兩個對象通過equals比較是相等的,那么hashCode肯定相等它浅;若通過hashCode比較是相等的译柏,則equals不一定相等
  4. 因為相等的對象應(yīng)該具有相等的哈希值,因此建議只要重寫equals姐霍,就必須重寫hashCode
  5. 若一個對象中有大量的成員信息鄙麦,可以先通過hashCode進行比較,如果不相等則兩個對象一定不同镊折,若相等則再通過equals進行比較胯府,這樣既判斷了對象是否相同,又可以提高效率

若有錯誤或補充恨胚,歡迎私信

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盟劫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子与纽,更是在濱河造成了極大的恐慌侣签,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件急迂,死亡現(xiàn)場離奇詭異影所,居然都是意外死亡,警方通過查閱死者的電腦和手機僚碎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門猴娩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勺阐,你說我怎么就攤上這事卷中。” “怎么了渊抽?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵蟆豫,是天一觀的道長。 經(jīng)常有香客問我懒闷,道長十减,這世上最難降的妖魔是什么栈幸? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮帮辟,結(jié)果婚禮上速址,老公的妹妹穿的比我還像新娘。我一直安慰自己由驹,他們只是感情好芍锚,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蔓榄,像睡著了一般并炮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上润樱,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音羡棵,去河邊找鬼壹若。 笑死,一個胖子當(dāng)著我的面吹牛皂冰,可吹牛的內(nèi)容都是我干的店展。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼秃流,長吁一口氣:“原來是場噩夢啊……” “哼赂蕴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舶胀,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤概说,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嚣伐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糖赔,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年轩端,在試婚紗的時候發(fā)現(xiàn)自己被綠了放典。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡基茵,死狀恐怖奋构,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拱层,我是刑警寧澤弥臼,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站根灯,受9級特大地震影響醋火,放射性物質(zhì)發(fā)生泄漏悠汽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一芥驳、第九天 我趴在偏房一處隱蔽的房頂上張望柿冲。 院中可真熱鬧,春花似錦兆旬、人聲如沸假抄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宿饱。三九已至,卻和暖如春脚祟,著一層夾襖步出監(jiān)牢的瞬間谬以,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工由桌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留为黎,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓行您,卻偏偏與公主長得像铭乾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子娃循,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容