2-JavaObjectOriented

Java面向?qū)ο笤O(shè)計(jì)

類與對(duì)象伦腐、封裝、構(gòu)造方法

  • 類:是一組相關(guān)屬性和行為的集合失都“啬ⅲ可以看成是一類事物的模板,使用事物的屬性特征和行為特征來描述該類事物粹庞。
    • 屬性:就是該事物的狀態(tài)信息咳焚。
    • 行為:就是該事物能夠做什么。
  • 對(duì)象:是一類事物的具體體現(xiàn)庞溜。對(duì)象是類的一個(gè)實(shí)例革半,必然具備該類事物的屬性和行為。

類與對(duì)象的關(guān)系:
類是對(duì)一類事物的描述,是抽象的又官。對(duì)象是一類事物的實(shí)例,是具體的。類是對(duì)象的模板蛾号,對(duì)象是類的實(shí)體安岂。

類的定義
public class ClassName{
    成員變量
    成員方法
}

成員變量定義的時(shí)候有其初始化的默認(rèn)值:

在這里插入圖片描述

封裝

訪問數(shù)據(jù)通過指定的方式
private:

  1. private是一個(gè)權(quán)限修飾符,代表最小權(quán)限觉阅。
  2. 可以修飾成員變量和成員方法崖疤。
  3. 被private修飾后的成員變量和成員方法,只在本類中才能訪問典勇。

this:
this代表所在類的當(dāng)前對(duì)象的引用(地址值)劫哼,即對(duì)象自己的引用。

構(gòu)造方法
  1. 如果你不提供構(gòu)造方法割笙,系統(tǒng)會(huì)給出無參數(shù)構(gòu)造方法权烧。
  2. 如果你提供了構(gòu)造方法,系統(tǒng)將不再提供無參數(shù)構(gòu)造方法伤溉。
  3. 構(gòu)造方法是可以重載的般码,既可以定義參數(shù),也可以不定義參數(shù)乱顾。
標(biāo)準(zhǔn)代碼--JavaBean

JavaBean是 Java語言編寫類的一種標(biāo)準(zhǔn)規(guī)范板祝。
符合 JavaBean 的類,要求類必須是具體的和公共的走净,并且具有無參數(shù)的構(gòu)造方法券时,提供用來操作成員變量的 set 和 get 方法

常用API

API

應(yīng)用程序編程接口

匿名對(duì)象

創(chuàng)建對(duì)象時(shí),只有創(chuàng)建對(duì)象的語句伏伯,卻沒有把對(duì)象地址值賦值給某個(gè)變量橘洞。
應(yīng)用場(chǎng)景:

  • 創(chuàng)建匿名對(duì)象類直接調(diào)用方法,沒有變量名
  • 一旦調(diào)用兩個(gè)方法就是創(chuàng)建了兩個(gè)對(duì)象说搅,造成浪費(fèi)
  • 匿名對(duì)象可以作為方法的參數(shù)和返回值
static關(guān)鍵字

關(guān)于 static 關(guān)鍵字的使用炸枣,它可以用來修飾的成員變量和成員方法,被修飾的成員是屬于類的弄唧,而不是單單是屬于某個(gè)對(duì)象的适肠。也就是說,既然屬于類候引,就可以不靠創(chuàng)建對(duì)象來調(diào)用了迂猴。

  • 類變量
  • 靜態(tài)方法
    注意事項(xiàng):
    靜態(tài)方法可以直接訪問類變量和靜態(tài)方法。
    靜態(tài)方法不能直接訪問普通成員變量或成員方法背伴。反之沸毁,成員方法可以直接訪問類變量或靜態(tài)方法峰髓。靜態(tài)方法中,不能使用this關(guān)鍵字息尺。
    靜態(tài)方法只能訪問靜態(tài)成員

在這里插入圖片描述

方法區(qū)中只有一塊區(qū)域是用來保存靜態(tài)區(qū)的
靜態(tài)代碼塊:
給類變量進(jìn)行賦值

Object類

java.lang.Object類是Java語言中的根類携兵,即所有類的父類。它中描述的所有方法子類都可以使用搂誉。在對(duì)象實(shí)例化的時(shí)候徐紧,最終找的父類就是Object。
如果一個(gè)類沒有特別指定父類炭懊,那么默認(rèn)則繼承自O(shè)bject類


  • java.lang.Object
  • 構(gòu)造方法
    Object()
  • 成員方法
    protected Object clone()
    創(chuàng)建并返回此對(duì)象的一個(gè)副本并级。
    boolean equals(Object obj)
    指示其他某個(gè)對(duì)象是否與此對(duì)象“相等”。
    protected void finalize()
    當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí)侮腹,由對(duì)象的垃圾回收器調(diào)用此方法嘲碧。
    Class<?> getClass()
    返回此 Object 的運(yùn)行時(shí)類。
    int hashCode()
    返回該對(duì)象的哈希碼值父阻。
    void notify()
    喚醒在此對(duì)象監(jiān)視器上等待的單個(gè)線程愈涩。
    void notifyAll()
    喚醒在此對(duì)象監(jiān)視器上等待的所有線程。
    String toString()
    返回該對(duì)象的字符串表示加矛。
    void wait()
    在其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法前履婉,導(dǎo)致當(dāng)前線程等待。
    void wait(long timeout)
    在其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法斟览,或者超過指定的時(shí)間量前毁腿,導(dǎo)致當(dāng)前線程等待。
    void wait(long timeout, int nanos)
    在其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法苛茂,或者其他某個(gè)線程中斷當(dāng)前線程已烤,或者已超過某個(gè)實(shí)際時(shí)間量前,導(dǎo)致當(dāng)前線程等待味悄。
Objects類

java.util.Objects類
在JDK7添加了一個(gè)Objects工具類草戈,它提供了一些方法來操作對(duì)象塌鸯,它由一些靜態(tài)的實(shí)用方法組成侍瑟,這些方法是null-save(空指針安全的)或null-tolerant(容忍空指針的),用于計(jì)算對(duì)象的hashcode丙猬、返回對(duì)象的字符串表示形式涨颜、比較兩個(gè)對(duì)象。

在比較兩個(gè)對(duì)象的時(shí)候茧球,Object的equals方法容易拋出空指針異常庭瑰,而Objects類中的equals方法就優(yōu)化了這個(gè)問題。
//內(nèi)部調(diào)用equals方法
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}

Scanner類

一個(gè)可以使用正則表達(dá)式來解析基本類型和字符串的簡(jiǎn)單文本掃描器抢埋。
public final class Scanner
extends Object
implements Iterator<String>


  • Java.util.Scanner
    Scanner 使用分隔符模式將其輸入分解為標(biāo)記弹灭,默認(rèn)情況下該分隔符模式與空白匹配督暂。然后可以使用不同的 next 方法將得到的標(biāo)記轉(zhuǎn)換為不同類型的值。
    實(shí)現(xiàn)迭代器Iterator接口穷吮,調(diào)用迭代器方法輸出
    掃描器還可以使用不同于空白的分隔符逻翁。下面是從一個(gè)字符串讀取若干項(xiàng)的例子:
     String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
     System.out.println(s.nextInt());
     System.out.println(s.nextInt());
     System.out.println(s.next());
     System.out.println(s.next());
     s.close(); 

掃描器所使用的默認(rèn)空白分隔符通過 Character.isWhitespace 來識(shí)別。不管以前是否更改捡鱼,reset() 方法將把掃描器分隔符的值重置為默認(rèn)空白分隔符八回。
**若沒有外部同步,則 Scanner 的多線程使用是不安全的驾诈。 **
除非另行說明缠诅,否則將一個(gè) null 參數(shù)傳遞到 Scanner 的任何一個(gè)方法中都將拋出NullPointerException。
默認(rèn)情況下掃描器會(huì)將數(shù)字解釋為十進(jìn)制形式乍迄,除非已經(jīng)使用 useRadix(int) 方法設(shè)置了不同的基數(shù)管引。不管以前是否更改,reset() 方法將把掃描器的基數(shù)重置為10 就乓。

  • 構(gòu)造方法
    構(gòu)造方法摘要
    Scanner(File source)
    構(gòu)造一個(gè)新的 Scanner汉匙,它生成的值是從指定文件掃描的。
    Scanner(File source, String charsetName)
    構(gòu)造一個(gè)新的 Scanner生蚁,它生成的值是從指定文件掃描的噩翠。
    Scanner(InputStream source)
    構(gòu)造一個(gè)新的 Scanner,它生成的值是從指定的輸入流掃描的邦投。
    Scanner(InputStream source, String charsetName)
    構(gòu)造一個(gè)新的 Scanner伤锚,它生成的值是從指定的輸入流掃描的。
    Scanner(Readable source)
    構(gòu)造一個(gè)新的 Scanner志衣,它生成的值是從指定源掃描的屯援。
    Scanner(ReadableByteChannel source)
    構(gòu)造一個(gè)新的 Scanner,它生成的值是從指定信道掃描的念脯。
    Scanner(ReadableByteChannel source, String charsetName)
    構(gòu)造一個(gè)新的 Scanner狞洋,它生成的值是從指定信道掃描的。
    Scanner(String source)
    構(gòu)造一個(gè)新的 Scanner绿店,它生成的值是從指定字符串掃描的

  • 成員方法
    void close()
    關(guān)閉此掃描器吉懊。
    Pattern delimiter()
    返回此 Scanner 當(dāng)前正在用于匹配分隔符的 Pattern。
    String findInLine(Pattern pattern)
    試圖在忽略分隔符的情況下查找下一個(gè)指定模式假勿。
    String findInLine(String pattern)
    試圖在忽略分隔符的情況下查找下一個(gè)從指定字符串構(gòu)造的模式借嗽。
    String findWithinHorizon(Pattern pattern, int horizon)
    試圖查找下一個(gè)指定模式。
    String findWithinHorizon(String pattern, int horizon)
    試圖在忽略分隔符的情況下查找下一個(gè)從指定字符串構(gòu)造的模式转培。
    boolean hasNext()
    如果此掃描器的輸入中有另一個(gè)標(biāo)記恶导,則返回 true。
    boolean hasNext(Pattern pattern)
    如果下一個(gè)完整標(biāo)記與指定模式匹配浸须,則返回 true惨寿。
    boolean hasNext(String pattern)
    如果下一個(gè)標(biāo)記與從指定字符串構(gòu)造的模式匹配邦泄,則返回 true。
    boolean hasNextBigDecimal()
    如果通過使用 nextBigDecimal() 方法裂垦,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè) BigDecimal虎韵,則返回 true。
    boolean hasNextBigInteger()
    如果通過使用 nextBigInteger() 方法缸废,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè) BigInteger 值包蓝,則返回 true。
    boolean hasNextBigInteger(int radix)
    如果通過使用 nextBigInteger() 方法企量,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為指定基數(shù)中的一個(gè) BigInteger 值测萎,則返回 true。
    boolean hasNextBoolean()
    如果通過使用一個(gè)從字符串 "true|false" 創(chuàng)建的大小寫敏感的模式届巩,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為一個(gè)布爾值硅瞧,則返回 true。
    boolean hasNextByte()
    如果通過使用 nextByte() 方法恕汇,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè)字節(jié)值腕唧,則返回 true。
    boolean hasNextByte(int radix)
    如果通過使用 nextByte() 方法瘾英,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為指定基數(shù)中的一個(gè)字節(jié)值枣接,則返回 true。
    boolean hasNextDouble()
    如果通過使用 nextDouble() 方法缺谴,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè) double 值但惶,則返回 true。
    boolean hasNextFloat()
    如果通過使用 nextFloat() 方法湿蛔,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè) float 值膀曾,則返回 true。
    boolean hasNextInt()
    如果通過使用 nextInt() 方法阳啥,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè) int 值添谊,則返回 true。
    boolean hasNextInt(int radix)
    如果通過使用 nextInt() 方法察迟,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為指定基數(shù)中的一個(gè) int 值斩狱,則返回 true。
    boolean hasNextLine()
    如果在此掃描器的輸入中存在另一行卷拘,則返回 true喊废。
    boolean hasNextLong()
    如果通過使用 nextLong() 方法祝高,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè) long 值栗弟,則返回 true。
    boolean hasNextLong(int radix)
    如果通過使用 nextLong() 方法工闺,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為指定基數(shù)中的一個(gè) long 值乍赫,則返回 true瓣蛀。
    boolean hasNextShort()
    如果通過使用 nextShort() 方法,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè) short 值雷厂,則返回 true惋增。
    boolean hasNextShort(int radix)
    如果通過使用 nextShort() 方法,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為指定基數(shù)中的一個(gè) short 值改鲫,則返回 true诈皿。
    IOException ioException()
    返回此 Scanner 的底層 Readable 最后拋出的 IOException。
    Locale locale()
    返回此掃描器的語言環(huán)境像棘。
    MatchResult match()
    返回此掃描器所執(zhí)行的最后掃描操作的匹配結(jié)果稽亏。
    String next()
    查找并返回來自此掃描器的下一個(gè)完整標(biāo)記。
    String next(Pattern pattern)
    如果下一個(gè)標(biāo)記與指定模式匹配缕题,則返回下一個(gè)標(biāo)記截歉。
    String next(String pattern)
    如果下一個(gè)標(biāo)記與從指定字符串構(gòu)造的模式匹配,則返回下一個(gè)標(biāo)記烟零。
    BigDecimal nextBigDecimal()
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) BigDecimal瘪松。
    BigInteger nextBigInteger()
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) BigInteger。
    BigInteger nextBigInteger(int radix)
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) BigInteger锨阿。
    boolean nextBoolean()
    掃描解釋為一個(gè)布爾值的輸入標(biāo)記并返回該值宵睦。
    byte nextByte()
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) byte。
    byte nextByte(int radix)
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) byte墅诡。
    double nextDouble()
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) double状飞。
    float nextFloat()
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) float。
    int nextInt()
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) int书斜。
    int nextInt(int radix)
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) int诬辈。
    String nextLine()
    此掃描器執(zhí)行當(dāng)前行,并返回跳過的輸入信息荐吉。
    long nextLong()
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) long焙糟。
    long nextLong(int radix)
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) long。
    short nextShort()
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) short样屠。
    short nextShort(int radix)
    將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) short穿撮。
    int radix()
    返回此掃描器的默認(rèn)基數(shù)。
    void remove()
    Iterator 的這種實(shí)現(xiàn)不支持移除操作痪欲。
    Scanner reset()
    重置此掃描器悦穿。
    Scanner skip(Pattern pattern)
    在忽略分隔符的情況下跳過與指定模式匹配的輸入信息。
    Scanner skip(String pattern)
    跳過與從指定字符串構(gòu)造的模式匹配的輸入信息业踢。
    String toString()
    返回此 Scanner 的字符串表示形式栗柒。
    Scanner useDelimiter(Pattern pattern)
    將此掃描器的分隔模式設(shè)置為指定模式。
    Scanner useDelimiter(String pattern)
    將此掃描器的分隔模式設(shè)置為從指定 String 構(gòu)造的模式知举。
    Scanner useLocale(Locale locale)
    將此掃描器的語言環(huán)境設(shè)置為指定的語言環(huán)境瞬沦。
    Scanner useRadix(int radix)
    將此掃描器的默認(rèn)基數(shù)設(shè)置為指定基數(shù)太伊。

Random類

此類的實(shí)例用于生成偽隨機(jī)數(shù)流。
public class Random
extends Object
implements Serializable


  • java.util.Random

  • 構(gòu)造方法
    Random()
    創(chuàng)建一個(gè)新的隨機(jī)數(shù)生成器逛钻。
    Random(long seed)
    使用單個(gè) long 種子創(chuàng)建一個(gè)新的隨機(jī)數(shù)生成器僚焦。

  • 成員方法
    protected int next(int bits)
    生成下一個(gè)偽隨機(jī)數(shù)。
    boolean nextBoolean()
    返回下一個(gè)偽隨機(jī)數(shù)曙痘,它是取自此隨機(jī)數(shù)生成器序列的均勻分布的 boolean 值芳悲。
    void nextBytes(byte[] bytes)
    生成隨機(jī)字節(jié)并將其置于用戶提供的 byte 數(shù)組中。
    double nextDouble()
    返回下一個(gè)偽隨機(jī)數(shù)边坤,它是取自此隨機(jī)數(shù)生成器序列的芭概、在 0.0 和 1.0 之間均勻分布的 double 值。
    float nextFloat()
    返回下一個(gè)偽隨機(jī)數(shù)惩嘉,它是取自此隨機(jī)數(shù)生成器序列的罢洲、在 0.0 和 1.0 之間均勻分布的 float 值。
    double nextGaussian()
    返回下一個(gè)偽隨機(jī)數(shù)文黎,它是取自此隨機(jī)數(shù)生成器序列的惹苗、呈高斯(“正態(tài)”)分布的 double 值,其平均值是 0.0耸峭,標(biāo)準(zhǔn)差是 1.0桩蓉。
    int nextInt()
    返回下一個(gè)偽隨機(jī)數(shù),它是此隨機(jī)數(shù)生成器的序列中均勻分布的 int 值劳闹。
    int nextInt(int n)
    返回一個(gè)偽隨機(jī)數(shù)院究,它是取自此隨機(jī)數(shù)生成器序列的、在 0(包括)和指定值(不包括)之間均勻分布的 int 值本涕。
    long nextLong()
    返回下一個(gè)偽隨機(jī)數(shù)业汰,它是取自此隨機(jī)數(shù)生成器序列的均勻分布的 long 值。
    void setSeed(long seed)
    使用單個(gè) long 種子設(shè)置此隨機(jī)數(shù)生成器的種子菩颖。

詳細(xì)
空參數(shù)

public int nextInt() {
   return next(32);
 }

帶有參數(shù)
返回一個(gè)偽隨機(jī)數(shù)样漆,它是取自此隨機(jī)數(shù)生成器序列的、在 0(包括)和指定值(不包括)之間均勻分布的 int 值晦闰。nextInt 的常規(guī)協(xié)定是放祟,偽隨機(jī)地生成并返回指定范圍中的一個(gè) int 值。所有可能的 n 個(gè) int 值的生成概率(大致)相同呻右。Random 類按如下方式實(shí)現(xiàn) nextInt(int n) 方法:

public int nextInt(int n) {
     if (n<=0)
        throw new IllegalArgumentException("n must be positive");

     if ((n & -n) == n)  // i.e., n is a power of 2
         return (int)((n * (long)next(31)) >> 31);

     int bits, val;
     do {
         bits = next(31);
         val = bits % n;
     } while(bits - val + (n-1) < 0);
     return val;
  }
ArrayList類

java.lang.Object
繼承者 java.util.AbstractCollection<E>
繼承者 java.util.AbstractList<E>
繼承者 java.util.ArrayList<E>
size跪妥、isEmpty、get声滥、set眉撵、iterator 和 listIterator 操作都以固定時(shí)間運(yùn)行。add 操作以分?jǐn)偟墓潭〞r(shí)間 運(yùn)行,也就是說执桌,添加 n 個(gè)元素需要 O(n) 時(shí)間。其他所有操作都以線性時(shí)間運(yùn)行(大體上講)芜赌。
每個(gè) ArrayList 實(shí)例都有一個(gè)容量仰挣。該容量是指用來存儲(chǔ)列表元素的數(shù)組的大小。它總是至少等于列表的大小缠沈。隨著向 ArrayList 中不斷添加元素膘壶,其容量也自動(dòng)增長(zhǎng)。并未指定增長(zhǎng)策略的細(xì)節(jié)洲愤,因?yàn)檫@不只是添加元素會(huì)帶來分?jǐn)偣潭〞r(shí)間開銷那樣簡(jiǎn)單颓芭。
此實(shí)現(xiàn)不是同步的
所有已實(shí)現(xiàn)的接口:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess

存儲(chǔ)基本類型使用包裝類型

在這里插入圖片描述


  • public class ArrayList<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, Serializable

  • 構(gòu)造方法
    ArrayList()
    構(gòu)造一個(gè)初始容量為 10 的空列表。
    ArrayList(Collection<? extends E> c)
    構(gòu)造一個(gè)包含指定 collection 的元素的列表柬赐,這些元素是按照該 collection 的迭代器返回它們的順序排列的亡问。
    ArrayList(int initialCapacity)
    構(gòu)造一個(gè)具有指定初始容量的空列表。

  • 成員方法
    boolean add(E e)
    將指定的元素添加到此列表的尾部肛宋。
    void add(int index, E element)
    將指定的元素插入此列表中的指定位置州藕。
    boolean addAll(Collection<? extends E> c)
    按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素添加到此列表的尾部酝陈。
    boolean addAll(int index, Collection<? extends E> c)
    從指定的位置開始床玻,將指定 collection 中的所有元素插入到此列表中。
    void clear()
    移除此列表中的所有元素沉帮。
    Object clone()
    返回此 ArrayList 實(shí)例的淺表副本锈死。
    boolean contains(Object o)
    如果此列表中包含指定的元素,則返回 true穆壕。
    void ensureCapacity(int minCapacity)
    如有必要待牵,增加此 ArrayList 實(shí)例的容量,以確保它至少能夠容納最小容量參數(shù)所指定的元素?cái)?shù)喇勋。
    E get(int index)
    返回此列表中指定位置上的元素洲敢。
    int indexOf(Object o)
    返回此列表中首次出現(xiàn)的指定元素的索引,或如果此列表不包含元素茄蚯,則返回 -1压彭。
    boolean isEmpty()
    如果此列表中沒有元素,則返回 true
    int lastIndexOf(Object o)
    返回此列表中最后一次出現(xiàn)的指定元素的索引渗常,或如果此列表不包含索引壮不,則返回 -1。
    E remove(int index)
    移除此列表中指定位置上的元素皱碘。
    boolean remove(Object o)
    移除此列表中首次出現(xiàn)的指定元素(如果存在)询一。
    protected void removeRange(int fromIndex, int toIndex)
    移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之間的所有元素。
    E set(int index, E element)
    用指定的元素替代此列表中指定位置上的元素。
    int size()
    返回此列表中的元素?cái)?shù)健蕊。
    Object[] toArray()
    按適當(dāng)順序(從第一個(gè)到最后一個(gè)元素)返回包含此列表中所有元素的數(shù)組菱阵。
    <T> T[]
    toArray(T[] a)
    按適當(dāng)順序(從第一個(gè)到最后一個(gè)元素)返回包含此列表中所有元素的數(shù)組;返回?cái)?shù)組的運(yùn)行時(shí)類型是指定數(shù)組的運(yùn)行時(shí)類型缩功。
    void trimToSize()
    將此 ArrayList 實(shí)例的容量調(diào)整為列表的當(dāng)前大小晴及。

String類

java.lang.Object
繼承者 java.lang.String
所有已實(shí)現(xiàn)的接口:
Serializable, CharSequence, Comparable<String>

public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence

字符串是常量;它們的值在創(chuàng)建之后不能更改嫡锌。字符串緩沖區(qū)支持可變的字符串虑稼。因?yàn)?String 對(duì)象是不可變的,所以可以共享势木。

String 類包括的方法可用于檢查序列的單個(gè)字符蛛倦、比較字符串、搜索字符串啦桌、提取子字符串溯壶、創(chuàng)建字符串副本并將所有字符全部轉(zhuǎn)換為大寫或小寫。大小寫映射基于 Character 類指定的 Unicode 標(biāo)準(zhǔn)版甫男。

Java 語言提供對(duì)字符串串聯(lián)符號(hào)("+")以及將其他對(duì)象轉(zhuǎn)換為字符串的特殊支持茸塞。字符串串聯(lián)是通過 StringBuilder(或 StringBuffer)類及其 append 方法實(shí)現(xiàn)的。字符串轉(zhuǎn)換是通過 toString 方法實(shí)現(xiàn)的查剖,該方法由 Object 類定義钾虐,并可被 Java 中的所有類繼承。有關(guān)字符串串聯(lián)和轉(zhuǎn)換的更多信息笋庄,請(qǐng)參閱 Gosling效扫、Joy 和 Steele 合著的 The Java Language Specification。


  • java.lang.String

  • 構(gòu)造方法
    String()
    初始化一個(gè)新創(chuàng)建的 String 對(duì)象直砂,使其表示一個(gè)空字符序列菌仁。
    String(byte[] bytes)
    通過使用平臺(tái)的默認(rèn)字符集解碼指定的 byte 數(shù)組,構(gòu)造一個(gè)新的 String静暂。
    String(byte[] bytes, Charset charset)
    通過使用指定的 charset 解碼指定的 byte 數(shù)組济丘,構(gòu)造一個(gè)新的 String。
    String(byte[] ascii, int hibyte)
    已過時(shí)洽蛀。 該方法無法將字節(jié)正確地轉(zhuǎn)換為字符摹迷。從 JDK 1.1 開始,完成該轉(zhuǎn)換的首選方法是使用帶有 Charset郊供、字符集名稱峡碉,或使用平臺(tái)默認(rèn)字符集的 String 構(gòu)造方法。
    String(byte[] bytes, int offset, int length)
    通過使用平臺(tái)的默認(rèn)字符集解碼指定的 byte 子數(shù)組驮审,構(gòu)造一個(gè)新的 String鲫寄。
    String(byte[] bytes, int offset, int length, Charset charset)
    通過使用指定的 charset 解碼指定的 byte 子數(shù)組吉执,構(gòu)造一個(gè)新的 String。
    String(byte[] ascii, int hibyte, int offset, int count)
    已過時(shí)地来。 該方法無法將字節(jié)正確地轉(zhuǎn)換為字符戳玫。從 JDK 1.1 開始,完成該轉(zhuǎn)換的首選方法是使用帶有 Charset未斑、字符集名稱咕宿,或使用平臺(tái)默認(rèn)字符集的 String 構(gòu)造方法伦仍。
    String(byte[] bytes, int offset, int length, String charsetName)
    通過使用指定的字符集解碼指定的 byte 子數(shù)組饿凛,構(gòu)造一個(gè)新的 String。
    String(byte[] bytes, String charsetName)
    通過使用指定的 charset 解碼指定的 byte 數(shù)組,構(gòu)造一個(gè)新的 String载城。
    String(char[] value)
    分配一個(gè)新的 String,使其表示字符數(shù)組參數(shù)中當(dāng)前包含的字符序列费就。
    String(char[] value, int offset, int count)
    分配一個(gè)新的 String诉瓦,它包含取自字符數(shù)組參數(shù)一個(gè)子數(shù)組的字符。
    String(int[] codePoints, int offset, int count)
    分配一個(gè)新的 String力细,它包含 Unicode 代碼點(diǎn)數(shù)組參數(shù)一個(gè)子數(shù)組的字符睬澡。
    String(String original)
    初始化一個(gè)新創(chuàng)建的 String 對(duì)象,使其表示一個(gè)與參數(shù)相同的字符序列眠蚂;換句話說煞聪,新創(chuàng)建的字符串是該參數(shù)字符串的副本。
    String(StringBuffer buffer)
    分配一個(gè)新的字符串逝慧,它包含字符串緩沖區(qū)參數(shù)中當(dāng)前包含的字符序列昔脯。
    String(StringBuilder builder)
    分配一個(gè)新的字符串,它包含字符串生成器參數(shù)中當(dāng)前包含的字符序列笛臣。

  • 成員方法
    char charAt(int index)
    返回指定索引處的 char 值云稚。
    int codePointAt(int index)
    返回指定索引處的字符(Unicode 代碼點(diǎn))。
    int codePointBefore(int index)
    返回指定索引之前的字符(Unicode 代碼點(diǎn))沈堡。
    int codePointCount(int beginIndex, int endIndex)
    返回此 String 的指定文本范圍中的 Unicode 代碼點(diǎn)數(shù)静陈。
    int compareTo(String anotherString)
    按字典順序比較兩個(gè)字符串。
    int compareToIgnoreCase(String str)
    按字典順序比較兩個(gè)字符串诞丽,不考慮大小寫鲸拥。
    String concat(String str)
    將指定字符串連接到此字符串的結(jié)尾。
    boolean contains(CharSequence s)
    當(dāng)且僅當(dāng)此字符串包含指定的 char 值序列時(shí)僧免,返回 true崩泡。
    boolean contentEquals(CharSequence cs)
    將此字符串與指定的 CharSequence 比較。
    boolean contentEquals(StringBuffer sb)
    將此字符串與指定的 StringBuffer 比較猬膨。
    static String copyValueOf(char[] data)
    返回指定數(shù)組中表示該字符序列的 String角撞。
    static String copyValueOf(char[] data, int offset, int count)
    返回指定數(shù)組中表示該字符序列的 String呛伴。
    boolean endsWith(String suffix)
    測(cè)試此字符串是否以指定的后綴結(jié)束。
    boolean equals(Object anObject)
    將此字符串與指定的對(duì)象比較谒所。
    boolean equalsIgnoreCase(String anotherString)
    將此 String 與另一個(gè) String 比較热康,不考慮大小寫。
    static String format(Locale l, String format, Object... args)
    使用指定的語言環(huán)境劣领、格式字符串和參數(shù)返回一個(gè)格式化字符串姐军。
    static String format(String format, Object... args)
    使用指定的格式字符串和參數(shù)返回一個(gè)格式化字符串。
    byte[] getBytes()
    使用平臺(tái)的默認(rèn)字符集將此 String 編碼為 byte 序列尖淘,并將結(jié)果存儲(chǔ)到一個(gè)新的 byte 數(shù)組中奕锌。
    byte[] getBytes(Charset charset)
    使用給定的 charset 將此 String 編碼到 byte 序列,并將結(jié)果存儲(chǔ)到新的 byte 數(shù)組村生。
    void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
    已過時(shí)惊暴。 該方法無法將字符正確轉(zhuǎn)換為字節(jié)。從 JDK 1.1 起趁桃,完成該轉(zhuǎn)換的首選方法是通過 getBytes() 方法辽话,該方法使用平臺(tái)的默認(rèn)字符集。
    byte[] getBytes(String charsetName)
    使用指定的字符集將此 String 編碼為 byte 序列卫病,并將結(jié)果存儲(chǔ)到一個(gè)新的 byte 數(shù)組中油啤。
    void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
    將字符從此字符串復(fù)制到目標(biāo)字符數(shù)組。
    int hashCode()
    返回此字符串的哈希碼蟀苛。
    int indexOf(int ch)
    返回指定字符在此字符串中第一次出現(xiàn)處的索引益咬。
    int indexOf(int ch, int fromIndex)
    返回在此字符串中第一次出現(xiàn)指定字符處的索引,從指定的索引開始搜索帜平。
    int indexOf(String str)
    返回指定子字符串在此字符串中第一次出現(xiàn)處的索引幽告。
    int indexOf(String str, int fromIndex)
    返回指定子字符串在此字符串中第一次出現(xiàn)處的索引,從指定的索引開始罕模。
    String intern()
    返回字符串對(duì)象的規(guī)范化表示形式评腺。
    boolean isEmpty()
    當(dāng)且僅當(dāng) length() 為 0 時(shí)返回 true。
    int lastIndexOf(int ch)
    返回指定字符在此字符串中最后一次出現(xiàn)處的索引淑掌。
    int lastIndexOf(int ch, int fromIndex)
    返回指定字符在此字符串中最后一次出現(xiàn)處的索引蒿讥,從指定的索引處開始進(jìn)行反向搜索。
    int lastIndexOf(String str)
    返回指定子字符串在此字符串中最右邊出現(xiàn)處的索引抛腕。
    int lastIndexOf(String str, int fromIndex)
    返回指定子字符串在此字符串中最后一次出現(xiàn)處的索引芋绸,從指定的索引開始反向搜索。
    int length()
    返回此字符串的長(zhǎng)度担敌。
    boolean matches(String regex)
    告知此字符串是否匹配給定的正則表達(dá)式摔敛。
    int offsetByCodePoints(int index, int codePointOffset)
    返回此 String 中從給定的 index 處偏移 codePointOffset 個(gè)代碼點(diǎn)的索引。
    boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
    測(cè)試兩個(gè)字符串區(qū)域是否相等全封。
    boolean regionMatches(int toffset, String other, int ooffset, int len)
    測(cè)試兩個(gè)字符串區(qū)域是否相等马昙。
    String replace(char oldChar, char newChar)
    返回一個(gè)新的字符串桃犬,它是通過用 newChar 替換此字符串中出現(xiàn)的所有 oldChar 得到的。
    String replace(CharSequence target, CharSequence replacement)
    使用指定的字面值替換序列替換此字符串所有匹配字面值目標(biāo)序列的子字符串行楞。
    String replaceAll(String regex, String replacement)
    使用給定的 replacement 替換此字符串所有匹配給定的正則表達(dá)式的子字符串攒暇。
    String replaceFirst(String regex, String replacement)
    使用給定的 replacement 替換此字符串匹配給定的正則表達(dá)式的第一個(gè)子字符串。
    String[] split(String regex)
    根據(jù)給定正則表達(dá)式的匹配拆分此字符串子房。
    String[] split(String regex, int limit)
    根據(jù)匹配給定的正則表達(dá)式來拆分此字符串形用。
    boolean startsWith(String prefix)
    測(cè)試此字符串是否以指定的前綴開始。
    boolean startsWith(String prefix, int toffset)
    測(cè)試此字符串從指定索引開始的子字符串是否以指定前綴開始证杭。
    CharSequence subSequence(int beginIndex, int endIndex)
    返回一個(gè)新的字符序列田度,它是此序列的一個(gè)子序列。
    String substring(int beginIndex)
    返回一個(gè)新的字符串解愤,它是此字符串的一個(gè)子字符串镇饺。
    String substring(int beginIndex, int endIndex)
    返回一個(gè)新字符串,它是此字符串的一個(gè)子字符串琢歇。
    char[] toCharArray()
    將此字符串轉(zhuǎn)換為一個(gè)新的字符數(shù)組兰怠。
    String toLowerCase()
    使用默認(rèn)語言環(huán)境的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為小寫梦鉴。
    String toLowerCase(Locale locale)
    使用給定 Locale 的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為小寫李茫。
    String toString()
    返回此對(duì)象本身(它已經(jīng)是一個(gè)字符串!)肥橙。
    String toUpperCase()
    使用默認(rèn)語言環(huán)境的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為大寫魄宏。
    String toUpperCase(Locale locale)
    使用給定 Locale 的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為大寫。
    String trim()
    返回字符串的副本存筏,忽略前導(dǎo)空白和尾部空白宠互。
    static String valueOf(boolean b)
    返回 boolean 參數(shù)的字符串表示形式。
    static String valueOf(char c)
    返回 char 參數(shù)的字符串表示形式椭坚。
    static String valueOf(char[] data)
    返回 char 數(shù)組參數(shù)的字符串表示形式予跌。
    static String valueOf(char[] data, int offset, int count)
    返回 char 數(shù)組參數(shù)的特定子數(shù)組的字符串表示形式。
    static String valueOf(double d)
    返回 double 參數(shù)的字符串表示形式善茎。
    static String valueOf(float f)
    返回 float 參數(shù)的字符串表示形式券册。
    static String valueOf(int i)
    返回 int 參數(shù)的字符串表示形式。
    static String valueOf(long l)
    返回 long 參數(shù)的字符串表示形式垂涯。
    static String valueOf(Object obj)
    返回 Object 參數(shù)的字符串表示形式烁焙。

Arrays類

public class Arrays
extends Object


  • java.util.Arrays
  • 構(gòu)造方法
    默認(rèn)構(gòu)造方法
  • 成員方法
    static <T> List<T>
    asList(T... a)
    返回一個(gè)受指定數(shù)組支持的固定大小的列表。
    static int binarySearch(byte[] a, byte key)
    使用二分搜索法來搜索指定的 byte 型數(shù)組耕赘,以獲得指定的值骄蝇。
    static int binarySearch(byte[] a, int fromIndex, int toIndex, byte key)
    使用二分搜索法來搜索指定的 byte 型數(shù)組的范圍,以獲得指定的值操骡。
    static int binarySearch(char[] a, char key)
    使用二分搜索法來搜索指定的 char 型數(shù)組九火,以獲得指定的值赚窃。
    static int binarySearch(char[] a, int fromIndex, int toIndex, char key)
    使用二分搜索法來搜索指定的 char 型數(shù)組的范圍,以獲得指定的值岔激。
    static int binarySearch(double[] a, double key)
    使用二分搜索法來搜索指定的 double 型數(shù)組考榨,以獲得指定的值。
    static int binarySearch(double[] a, int fromIndex, int toIndex, double key)
    使用二分搜索法來搜索指定的 double 型數(shù)組的范圍鹦倚,以獲得指定的值河质。
    static int binarySearch(float[] a, float key)
    使用二分搜索法來搜索指定的 float 型數(shù)組,以獲得指定的值震叙。
    static int binarySearch(float[] a, int fromIndex, int toIndex, float key)
    使用二分搜索法來搜索指定的 float 型數(shù)組的范圍掀鹅,以獲得指定的值。
    static int binarySearch(int[] a, int key)
    使用二分搜索法來搜索指定的 int 型數(shù)組媒楼,以獲得指定的值乐尊。
    static int binarySearch(int[] a, int fromIndex, int toIndex, int key)
    使用二分搜索法來搜索指定的 int 型數(shù)組的范圍,以獲得指定的值划址。
    static int binarySearch(long[] a, int fromIndex, int toIndex, long key)
    使用二分搜索法來搜索指定的 long 型數(shù)組的范圍扔嵌,以獲得指定的值。
    static int binarySearch(long[] a, long key)
    使用二分搜索法來搜索指定的 long 型數(shù)組夺颤,以獲得指定的值痢缎。
    static int binarySearch(Object[] a, int fromIndex, int toIndex, Object key)
    使用二分搜索法來搜索指定數(shù)組的范圍,以獲得指定對(duì)象世澜。
    static int binarySearch(Object[] a, Object key)
    使用二分搜索法來搜索指定數(shù)組独旷,以獲得指定對(duì)象。
    static int binarySearch(short[] a, int fromIndex, int toIndex, short key)
    使用二分搜索法來搜索指定的 short 型數(shù)組的范圍寥裂,以獲得指定的值嵌洼。
    static int binarySearch(short[] a, short key)
    使用二分搜索法來搜索指定的 short 型數(shù)組,以獲得指定的值封恰。
    static <T> int
    binarySearch(T[] a, int fromIndex, int toIndex, T key, Comparator<? super T> c)
    使用二分搜索法來搜索指定數(shù)組的范圍麻养,以獲得指定對(duì)象。
    static <T> int
    binarySearch(T[] a, T key, Comparator<? super T> c)
    使用二分搜索法來搜索指定數(shù)組诺舔,以獲得指定對(duì)象鳖昌。
    static boolean[] copyOf(boolean[] original, int newLength)
    復(fù)制指定的數(shù)組,截取或用 false 填充(如有必要)混萝,以使副本具有指定的長(zhǎng)度遗遵。
    static byte[] copyOf(byte[] original, int newLength)
    復(fù)制指定的數(shù)組,截取或用 0 填充(如有必要)逸嘀,以使副本具有指定的長(zhǎng)度车要。
    static char[] copyOf(char[] original, int newLength)
    復(fù)制指定的數(shù)組,截取或用 null 字符填充(如有必要)崭倘,以使副本具有指定的長(zhǎng)度翼岁。
    static double[] copyOf(double[] original, int newLength)
    復(fù)制指定的數(shù)組类垫,截取或用 0 填充(如有必要),以使副本具有指定的長(zhǎng)度琅坡。
    static float[] copyOf(float[] original, int newLength)
    復(fù)制指定的數(shù)組悉患,截取或用 0 填充(如有必要),以使副本具有指定的長(zhǎng)度榆俺。
    static int[] copyOf(int[] original, int newLength)
    復(fù)制指定的數(shù)組售躁,截取或用 0 填充(如有必要),以使副本具有指定的長(zhǎng)度茴晋。
    static long[] copyOf(long[] original, int newLength)
    復(fù)制指定的數(shù)組陪捷,截取或用 0 填充(如有必要),以使副本具有指定的長(zhǎng)度诺擅。
    static short[] copyOf(short[] original, int newLength)
    復(fù)制指定的數(shù)組市袖,截取或用 0 填充(如有必要),以使副本具有指定的長(zhǎng)度烁涌。
    static <T> T[]
    copyOf(T[] original, int newLength)
    復(fù)制指定的數(shù)組苍碟,截取或用 null 填充(如有必要),以使副本具有指定的長(zhǎng)度撮执。
    static <T,U> T[]
    copyOf(U[] original, int newLength, Class<? extends T[]> newType)
    復(fù)制指定的數(shù)組微峰,截取或用 null 填充(如有必要),以使副本具有指定的長(zhǎng)度二打。
    static boolean[] copyOfRange(boolean[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組县忌。
    static byte[] copyOfRange(byte[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組掂榔。
    static char[] copyOfRange(char[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組继效。
    static double[] copyOfRange(double[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組。
    static float[] copyOfRange(float[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組装获。
    static int[] copyOfRange(int[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組瑞信。
    static long[] copyOfRange(long[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組。
    static short[] copyOfRange(short[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組穴豫。
    static <T> T[]
    copyOfRange(T[] original, int from, int to)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組凡简。
    static <T,U> T[]
    copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType)
    將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組。
    static boolean deepEquals(Object[] a1, Object[] a2)
    如果兩個(gè)指定數(shù)組彼此是深層相等 的精肃,則返回 true秤涩。
    static int deepHashCode(Object[] a)
    基于指定數(shù)組的“深層內(nèi)容”返回哈希碼。
    static String deepToString(Object[] a)
    返回指定數(shù)組“深層內(nèi)容”的字符串表示形式司抱。
    static boolean equals(boolean[] a, boolean[] a2)
    如果兩個(gè)指定的 boolean 型數(shù)組彼此相等筐眷,則返回 true。
    static boolean equals(byte[] a, byte[] a2)
    如果兩個(gè)指定的 byte 型數(shù)組彼此相等习柠,則返回 true匀谣。
    static boolean equals(char[] a, char[] a2)
    如果兩個(gè)指定的 char 型數(shù)組彼此相等照棋,則返回 true。
    static boolean equals(double[] a, double[] a2)
    如果兩個(gè)指定的 double 型數(shù)組彼此相等武翎,則返回 true烈炭。
    static boolean equals(float[] a, float[] a2)
    如果兩個(gè)指定的 float 型數(shù)組彼此相等,則返回 true宝恶。
    static boolean equals(int[] a, int[] a2)
    如果兩個(gè)指定的 int 型數(shù)組彼此相等符隙,則返回 true。
    static boolean equals(long[] a, long[] a2)
    如果兩個(gè)指定的 long 型數(shù)組彼此相等垫毙,則返回 true膏执。
    static boolean equals(Object[] a, Object[] a2)
    如果兩個(gè)指定的 Objects 數(shù)組彼此相等,則返回 true露久。
    static boolean equals(short[] a, short[] a2)
    如果兩個(gè)指定的 short 型數(shù)組彼此相等更米,則返回 true。
    static void fill(boolean[] a, boolean val)
    將指定的 boolean 值分配給指定 boolean 型數(shù)組的每個(gè)元素毫痕。
    static void fill(boolean[] a, int fromIndex, int toIndex, boolean val)
    將指定的 boolean 值分配給指定 boolean 型數(shù)組指定范圍中的每個(gè)元素征峦。
    static void fill(byte[] a, byte val)
    將指定的 byte 值分配給指定 byte 節(jié)型數(shù)組的每個(gè)元素。
    static void fill(byte[] a, int fromIndex, int toIndex, byte val)
    將指定的 byte 值分配給指定 byte 型數(shù)組指定范圍中的每個(gè)元素消请。
    static void fill(char[] a, char val)
    將指定的 char 值分配給指定 char 型數(shù)組的每個(gè)元素栏笆。
    static void fill(char[] a, int fromIndex, int toIndex, char val)
    將指定的 char 值分配給指定 char 型數(shù)組指定范圍中的每個(gè)元素。
    static void fill(double[] a, double val)
    將指定的 double 值分配給指定 double 型數(shù)組的每個(gè)元素臊泰。
    static void fill(double[] a, int fromIndex, int toIndex, double val)
    將指定的 double 值分配給指定 double 型數(shù)組指定范圍中的每個(gè)元素蛉加。
    static void fill(float[] a, float val)
    將指定的 float 值分配給指定 float 型數(shù)組的每個(gè)元素。
    static void fill(float[] a, int fromIndex, int toIndex, float val)
    將指定的 float 值分配給指定 float 型數(shù)組指定范圍中的每個(gè)元素缸逃。
    static void fill(int[] a, int val)
    將指定的 int 值分配給指定 int 型數(shù)組的每個(gè)元素针饥。
    static void fill(int[] a, int fromIndex, int toIndex, int val)
    將指定的 int 值分配給指定 int 型數(shù)組指定范圍中的每個(gè)元素。
    static void fill(long[] a, int fromIndex, int toIndex, long val)
    將指定的 long 值分配給指定 long 型數(shù)組指定范圍中的每個(gè)元素需频。
    static void fill(long[] a, long val)
    將指定的 long 值分配給指定 long 型數(shù)組的每個(gè)元素丁眼。
    static void fill(Object[] a, int fromIndex, int toIndex, Object val)
    將指定的 Object 引用分配給指定 Object 數(shù)組指定范圍中的每個(gè)元素。
    static void fill(Object[] a, Object val)
    將指定的 Object 引用分配給指定 Object 數(shù)組的每個(gè)元素昭殉。
    static void fill(short[] a, int fromIndex, int toIndex, short val)
    將指定的 short 值分配給指定 short 型數(shù)組指定范圍中的每個(gè)元素苞七。
    static void fill(short[] a, short val)
    將指定的 short 值分配給指定 short 型數(shù)組的每個(gè)元素。
    static int hashCode(boolean[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼挪丢。
    static int hashCode(byte[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼蹂风。
    static int hashCode(char[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼。
    static int hashCode(double[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼乾蓬。
    static int hashCode(float[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼惠啄。
    static int hashCode(int[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼。
    static int hashCode(long[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼。
    static int hashCode(Object[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼礁阁。
    static int hashCode(short[] a)
    基于指定數(shù)組的內(nèi)容返回哈希碼巧号。
    static void sort(byte[] a)
    對(duì)指定的 byte 型數(shù)組按數(shù)字升序進(jìn)行排序。
    static void sort(byte[] a, int fromIndex, int toIndex)
    對(duì)指定 byte 型數(shù)組的指定范圍按數(shù)字升序進(jìn)行排序姥闭。
    static void sort(char[] a)
    對(duì)指定的 char 型數(shù)組按數(shù)字升序進(jìn)行排序丹鸿。
    static void sort(char[] a, int fromIndex, int toIndex)
    對(duì)指定 char 型數(shù)組的指定范圍按數(shù)字升序進(jìn)行排序。
    static void sort(double[] a)
    對(duì)指定的 double 型數(shù)組按數(shù)字升序進(jìn)行排序棚品。
    static void sort(double[] a, int fromIndex, int toIndex)
    對(duì)指定 double 型數(shù)組的指定范圍按數(shù)字升序進(jìn)行排序靠欢。
    static void sort(float[] a)
    對(duì)指定的 float 型數(shù)組按數(shù)字升序進(jìn)行排序。
    static void sort(float[] a, int fromIndex, int toIndex)
    對(duì)指定 float 型數(shù)組的指定范圍按數(shù)字升序進(jìn)行排序铜跑。
    static void sort(int[] a)
    對(duì)指定的 int 型數(shù)組按數(shù)字升序進(jìn)行排序门怪。
    static void sort(int[] a, int fromIndex, int toIndex)
    對(duì)指定 int 型數(shù)組的指定范圍按數(shù)字升序進(jìn)行排序。
    static void sort(long[] a)
    對(duì)指定的 long 型數(shù)組按數(shù)字升序進(jìn)行排序锅纺。
    static void sort(long[] a, int fromIndex, int toIndex)
    對(duì)指定 long 型數(shù)組的指定范圍按數(shù)字升序進(jìn)行排序掷空。
    static void sort(Object[] a)
    根據(jù)元素的自然順序?qū)χ付▽?duì)象數(shù)組按升序進(jìn)行排序。
    static void sort(Object[] a, int fromIndex, int toIndex)
    根據(jù)元素的自然順序?qū)χ付▽?duì)象數(shù)組的指定范圍按升序進(jìn)行排序囤锉。
    static void sort(short[] a)
    對(duì)指定的 short 型數(shù)組按數(shù)字升序進(jìn)行排序坦弟。
    static void sort(short[] a, int fromIndex, int toIndex)
    對(duì)指定 short 型數(shù)組的指定范圍按數(shù)字升序進(jìn)行排序。
    static <T> void
    sort(T[] a, Comparator<? super T> c)
    根據(jù)指定比較器產(chǎn)生的順序?qū)χ付▽?duì)象數(shù)組進(jìn)行排序官地。
    static <T> void
    sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)
    根據(jù)指定比較器產(chǎn)生的順序?qū)χ付▽?duì)象數(shù)組的指定范圍進(jìn)行排序酿傍。
    static String toString(boolean[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式。
    static String toString(byte[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式驱入。
    static String toString(char[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式赤炒。
    static String toString(double[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式。
    static String toString(float[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式亏较。
    static String toString(int[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式莺褒。
    static String toString(long[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式。
    static String toString(Object[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式宴杀。
    static String toString(short[] a)
    返回指定數(shù)組內(nèi)容的字符串表示形式癣朗。
Math類

java.lang.Object
繼承者 java.lang.Math
public final class Math
extends Object


  • java.lang.Math

  • 構(gòu)造函數(shù)
    靜態(tài)變量
    static double E
    比任何其他值都更接近 e(即自然對(duì)數(shù)的底數(shù))的 double 值。
    static double PI
    比任何其他值都更接近 pi(即圓的周長(zhǎng)與直徑之比)的 double 值旺罢。

  • 成員方法
    static double abs(double a)
    返回 double 值的絕對(duì)值。
    static float abs(float a)
    返回 float 值的絕對(duì)值绢记。
    static int abs(int a)
    返回 int 值的絕對(duì)值扁达。
    static long abs(long a)
    返回 long 值的絕對(duì)值。
    static double acos(double a)
    返回一個(gè)值的反余弦蠢熄;返回的角度范圍在 0.0 到 pi 之間跪解。
    static double asin(double a)
    返回一個(gè)值的反正弦;返回的角度范圍在 -pi/2 到 pi/2 之間签孔。
    static double atan(double a)
    返回一個(gè)值的反正切叉讥;返回的角度范圍在 -pi/2 到 pi/2 之間窘行。
    static double atan2(double y, double x)
    將矩形坐標(biāo) (x, y) 轉(zhuǎn)換成極坐標(biāo) (r, theta),返回所得角 theta图仓。
    static double cbrt(double a)
    返回 double 值的立方根罐盔。
    static double ceil(double a)
    返回最小的(最接近負(fù)無窮大)double 值,該值大于等于參數(shù)救崔,并等于某個(gè)整數(shù)惶看。
    static double copySign(double magnitude, double sign)
    返回帶有第二個(gè)浮點(diǎn)參數(shù)符號(hào)的第一個(gè)浮點(diǎn)參數(shù)。
    static float copySign(float magnitude, float sign)
    返回帶有第二個(gè)浮點(diǎn)參數(shù)符號(hào)的第一個(gè)浮點(diǎn)參數(shù)六孵。
    static double cos(double a)
    返回角的三角余弦纬黎。
    static double cosh(double x)
    返回 double 值的雙曲線余弦。
    static double exp(double a)
    返回歐拉數(shù) e 的 double 次冪的值劫窒。
    static double expm1(double x)
    返回 ex -1本今。
    static double floor(double a)
    返回最大的(最接近正無窮大)double 值,該值小于等于參數(shù)主巍,并等于某個(gè)整數(shù)诈泼。
    static int getExponent(double d)
    返回 double 表示形式中使用的無偏指數(shù)。
    static int getExponent(float f)
    返回 float 表示形式中使用的無偏指數(shù)煤禽。
    static double hypot(double x, double y)
    返回 sqrt(x2 +y2)铐达,沒有中間溢出或下溢。
    static double IEEEremainder(double f1, double f2)
    按照 IEEE 754 標(biāo)準(zhǔn)的規(guī)定檬果,對(duì)兩個(gè)參數(shù)進(jìn)行余數(shù)運(yùn)算瓮孙。
    static double log(double a)
    返回 double 值的自然對(duì)數(shù)(底數(shù)是 e)。
    static double log10(double a)
    返回 double 值的底數(shù)為 10 的對(duì)數(shù)选脊。
    static double log1p(double x)
    返回參數(shù)與 1 之和的自然對(duì)數(shù)杭抠。
    static double max(double a, double b)
    返回兩個(gè) double 值中較大的一個(gè)。
    static float max(float a, float b)
    返回兩個(gè) float 值中較大的一個(gè)恳啥。
    static int max(int a, int b)
    返回兩個(gè) int 值中較大的一個(gè)偏灿。
    static long max(long a, long b)
    返回兩個(gè) long 值中較大的一個(gè)。
    static double min(double a, double b)
    返回兩個(gè) double 值中較小的一個(gè)钝的。
    static float min(float a, float b)
    返回兩個(gè) float 值中較小的一個(gè)翁垂。
    static int min(int a, int b)
    返回兩個(gè) int 值中較小的一個(gè)。
    static long min(long a, long b)
    返回兩個(gè) long 值中較小的一個(gè)硝桩。
    static double nextAfter(double start, double direction)
    返回第一個(gè)參數(shù)和第二個(gè)參數(shù)之間與第一個(gè)參數(shù)相鄰的浮點(diǎn)數(shù)沿猜。
    static float nextAfter(float start, double direction)
    返回第一個(gè)參數(shù)和第二個(gè)參數(shù)之間與第一個(gè)參數(shù)相鄰的浮點(diǎn)數(shù)。
    static double nextUp(double d)
    返回 d 和正無窮大之間與 d 相鄰的浮點(diǎn)值碗脊。
    static float nextUp(float f)
    返回 f 和正無窮大之間與 f 相鄰的浮點(diǎn)值啼肩。
    static double pow(double a, double b)
    返回第一個(gè)參數(shù)的第二個(gè)參數(shù)次冪的值。
    static double random()
    返回帶正號(hào)的 double 值,該值大于等于 0.0 且小于 1.0祈坠。
    static double rint(double a)
    返回最接近參數(shù)并等于某一整數(shù)的 double 值害碾。
    static long round(double a)
    返回最接近參數(shù)的 long。
    static int round(float a)
    返回最接近參數(shù)的 int赦拘。
    static double scalb(double d, int scaleFactor)
    返回 d × 2scaleFactor慌随,其舍入方式如同將一個(gè)正確舍入的浮點(diǎn)值乘以 double 值集合中的一個(gè)值。
    static float scalb(float f, int scaleFactor)
    返回 f × 2scaleFactor另绩,其舍入方式如同將一個(gè)正確舍入的浮點(diǎn)值乘以 float 值集合中的一個(gè)值儒陨。
    static double signum(double d)
    返回參數(shù)的符號(hào)函數(shù);如果參數(shù)為 0笋籽,則返回 0蹦漠;如果參數(shù)大于 0,則返回 1.0车海;如果參數(shù)小于 0笛园,則返回 -1.0。
    static float signum(float f)
    返回參數(shù)的符號(hào)函數(shù)侍芝;如果參數(shù)為 0研铆,則返回 0;如果參數(shù)大于 0州叠,則返回 1.0棵红;如果參數(shù)小于 0,則返回 -1.0咧栗。
    static double sin(double a)
    返回角的三角正弦逆甜。
    static double sinh(double x)
    返回 double 值的雙曲線正弦。
    static double sqrt(double a)
    返回正確舍入的 double 值的正平方根致板。
    static double tan(double a)
    返回角的三角正切交煞。
    static double tanh(double x)
    返回 double 值的雙曲線余弦。
    static double toDegrees(double angrad)
    將用弧度表示的角轉(zhuǎn)換為近似相等的用角度表示的角斟或。
    static double toRadians(double angdeg)
    將用角度表示的角轉(zhuǎn)換為近似相等的用弧度表示的角素征。
    static double ulp(double d)
    返回參數(shù)的 ulp 大小。
    static float ulp(float f)
    返回參數(shù)的 ulp 大小萝挤。

Date類

java.lang.Object
繼承者 java.util.Date
public class Date
extends Object
implements Serializable, Cloneable, Comparable<Date>


  • java.util.Date
  • 構(gòu)造方法
    Date()
    分配 Date 對(duì)象并初始化此對(duì)象御毅,以表示分配它的時(shí)間(精確到毫秒)。
    Date(long date)
    分配 Date 對(duì)象并初始化此對(duì)象平斩,以表示自從標(biāo)準(zhǔn)基準(zhǔn)時(shí)間(稱為“歷元(epoch)”亚享,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數(shù)。
  • 成員方法
    after(Date when)
    測(cè)試此日期是否在指定日期之后绘面。
    boolean before(Date when)
    測(cè)試此日期是否在指定日期之前。
    Object clone()
    返回此對(duì)象的副本。
    int compareTo(Date anotherDate)
    比較兩個(gè)日期的順序揭璃。
    boolean equals(Object obj)
    比較兩個(gè)日期的相等性晚凿。
    long getTime()
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對(duì)象表示的毫秒數(shù)。
    hashCode()
    返回此對(duì)象的哈希碼值瘦馍。
    toString()
    把此 Date 對(duì)象轉(zhuǎn)換為以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)歼秽。
DateFormat類

java.text.DateFormat
由于DateFormat為抽象類,不能直接使用情组,所以需要常用的子類java.text.SimpleDateFormat


在這里插入圖片描述

public String format(Date date):將Date對(duì)象格式化為字符串燥筷。
public Date parse(String source):將字符串解析為Date對(duì)象。

繼承

is-a關(guān)系

繼承:就是子類繼承父類的屬性和行為院崇,使得子類對(duì)象具有與父類相同的屬性肆氓、相同的行為。子類可以直接訪問父類中的非私有的屬性和行為底瓣。
優(yōu)點(diǎn):

  1. 提高代碼的復(fù)用性谢揪。
  2. 類與類之間產(chǎn)生了關(guān)系,是多態(tài)的前提捐凭。

成員變量:
訪問重名變量使用super關(guān)鍵字
封裝提供getter setter方法
成員方法:
訪問重名父類方法需要使用SUPER關(guān)鍵字
調(diào)用本類重名方法為重寫(Override)
方法重寫 :子類中出現(xiàn)與父類一模一樣的方法時(shí) (返回值類型嘁信,方法名和參數(shù)列表都相同)队橙,會(huì)出現(xiàn)覆蓋效果,也稱為重寫或者復(fù)寫。聲明不變贬芥,重新實(shí)現(xiàn)。
注意事項(xiàng):

  1. 子類方法覆蓋父類方法画拾,必須要保證權(quán)限大于等于父類權(quán)限删咱。
  2. 子類方法覆蓋父類方法,返回值類型奶赔、函數(shù)名和參數(shù)列表都要一模一樣惋嚎。

父類空間優(yōu)于子類對(duì)象的產(chǎn)生
super :代表父類的存儲(chǔ)空間標(biāo)識(shí)(可以理解為父親的引用)。
this :代表當(dāng)前對(duì)象的引用(誰調(diào)用就代表誰)站刑。

子類的每個(gè)構(gòu)造方法中均有默認(rèn)的super()另伍,調(diào)用父類的空參構(gòu)造。手動(dòng)調(diào)用父類構(gòu)造會(huì)覆蓋默認(rèn)的super()绞旅。 super() 和 this() 都必須是在構(gòu)造方法的第一行摆尝,所以不能同時(shí)出現(xiàn)。

繼承的特點(diǎn)
1因悲、Java中支持單繼承
2堕汞、Java支持多層繼承
3、子類和父類是一種相對(duì)的概念

Calendar類

java.lang.Object
繼承者 java.util.Calendar
public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>

java.util.Calendar日歷類


在這里插入圖片描述

public int get(int field):返回給定日歷字段的值晃琳。
public void set(int field, int value):將給定的日歷字段設(shè)置為給定值讯检。
public abstract void add(int field, int amount):根據(jù)日歷的規(guī)則琐鲁,為給定的日歷字段添加或減去指定的時(shí)間量。
public Date getTime():返回一個(gè)表示此Calendar時(shí)間值(從歷元到現(xiàn)在的毫秒偏移量)的Date對(duì)象人灼。

System類

java.lang.System類中提供了大量的靜態(tài)方法围段,可以獲取與系統(tǒng)相關(guān)的信息或系統(tǒng)級(jí)操作,在System類的API文檔中投放,常用的方法有:
public static long currentTimeMillis():返回以毫秒為單位的當(dāng)前時(shí)間奈泪。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):將數(shù)組中指定的數(shù)據(jù)拷貝到另一個(gè)數(shù)組中。

StringBuilder類

StringBuilder是個(gè)字符串的緩沖區(qū)灸芳,即它是一個(gè)容器涝桅,容器中可以裝很多字符串。并且能夠?qū)ζ渲械淖址M(jìn)行各種操作烙样。
public StringBuilder():構(gòu)造一個(gè)空的StringBuilder容器冯遂。
public StringBuilder(String str):構(gòu)造一個(gè)StringBuilder容器,并將字符串添加進(jìn)去误阻。

public StringBuilder append(...):添加任意類型數(shù)據(jù)的字符串形式债蜜,并返回當(dāng)前對(duì)象自身。
public String toString():將當(dāng)前StringBuilder對(duì)象轉(zhuǎn)換為String對(duì)象究反。

一個(gè)可變的字符序列寻定。此類提供一個(gè)與 StringBuffer 兼容的 API,但不保證同步精耐。該類被設(shè)計(jì)用作 StringBuffer 的一個(gè)簡(jiǎn)易替換狼速,用在字符串緩沖區(qū)被單個(gè)線程使用的時(shí)候(這種情況很普遍)。如果可能卦停,建議優(yōu)先采用該類向胡,因?yàn)樵诖蠖鄶?shù)實(shí)現(xiàn)中,它比 StringBuffer 要快惊完。

StringBuffer類

線程安全的可變字符序列僵芹。
一個(gè)類似于 String 的字符串緩沖區(qū),但不能修改小槐。

抽象類

我們把沒有方法主體的方法稱為抽象方法拇派。
Java語法規(guī)定,包含抽象方法的類就是抽象類凿跳。
抽象方法 : 沒有方法體的方法件豌。
抽象類:包含抽象方法的類。
繼承抽象類的子類必須重寫父類所有的抽象方法
此時(shí)的方法重寫控嗜,是子類對(duì)父類抽象方法的完成實(shí)現(xiàn)茧彤,我們將這種方法重寫的操作,也叫做實(shí)現(xiàn)方法疆栏。

  1. 抽象類不能創(chuàng)建對(duì)象曾掂,如果創(chuàng)建惫谤,編譯無法通過而報(bào)錯(cuò)。只能創(chuàng)建其非抽象子類的對(duì)象遭殉。
  2. 抽象類中石挂,可以有構(gòu)造方法博助,是供子類創(chuàng)建對(duì)象時(shí)险污,初始化父類成員使用的。
  3. 抽象類中富岳,不一定包含抽象方法蛔糯,但是有抽象方法的類必定是抽象類。
  4. 抽象類的子類窖式,必須重寫抽象父類中所有的抽象方法蚁飒,否則,編譯無法通過而報(bào)錯(cuò)萝喘。除非該子類也是抽象

接口

接口淮逻,是Java語言中一種引用類型,是方法的集合阁簸,如果說類的內(nèi)部封裝了成員變量爬早、構(gòu)造方法和成員方法,那么接口的內(nèi)部主要就是封裝了方法启妹,包含抽象方法(JDK 7及以前)筛严,默認(rèn)方法和靜態(tài)方法(JDK 8),私有方法(JDK 9)饶米。

抽象方法:使用 abstract 關(guān)鍵字修飾桨啃,可以省略,沒有方法體檬输。該方法供子類實(shí)現(xiàn)使用照瘾。
默認(rèn)方法:使用 default 修飾,不可省略丧慈,供子類調(diào)用或者子類重寫析命。
靜態(tài)方法:使用 static 修飾,供接口直接調(diào)用伊滋。
私有方法:使用 private 修飾碳却,供接口中的默認(rèn)方法或者靜態(tài)方法調(diào)用。

非抽象子類實(shí)現(xiàn)接口:

  1. 必須重寫接口中所有抽象方法笑旺。
  2. 繼承了接口的默認(rèn)方法昼浦,即可以直接調(diào)用,也可以重寫筒主。
    抽象方法:
    子類必須全部實(shí)現(xiàn)
    默認(rèn)方法:
    可以繼承可以重寫关噪,但是只能通過實(shí)現(xiàn)類的對(duì)象來調(diào)用
    靜態(tài)方法:
    靜態(tài)和.class文件相關(guān)鸟蟹,只能使用接口名進(jìn)行調(diào)用,不可以通過實(shí)現(xiàn)類的類名或者實(shí)現(xiàn)類的對(duì)象進(jìn)行調(diào)用
    私有方法:
    只有默認(rèn)方法可以調(diào)用
    私有靜態(tài)方法:
    默認(rèn)方法和靜態(tài)方法可以調(diào)用
接口的多實(shí)現(xiàn)

接口中有多個(gè)抽象方法的時(shí)候使兔,實(shí)現(xiàn)類必須重寫所有的抽象方法建钥,如果抽象方法存在重名,只需要重寫一次
接口中虐沥,有多個(gè)默認(rèn)方法時(shí)熊经,實(shí)現(xiàn)類都可繼承使用。如果默認(rèn)方法有重名的欲险,必須重寫一次镐依。
接口中,存在同名的靜態(tài)方法并不會(huì)沖突天试,原因是只能通過各自接口名訪問靜態(tài)方法槐壳。

優(yōu)先級(jí)的問題
當(dāng)一個(gè)類,既繼承一個(gè)父類喜每,又實(shí)現(xiàn)若干個(gè)接口時(shí)务唐,父類中的成員方法與接口中的默認(rèn)方法重名,子類就近選擇執(zhí)行父類的成員方法带兜。

接口的多繼承

一個(gè)接口能繼承另一個(gè)或者多個(gè)接口枫笛,這和類之間的繼承比較相似。接口的繼承使用 extends 關(guān)鍵字鞋真,子接口繼承父接口的方法崇堰。如果父接口中的默認(rèn)方法有重名的,那么子接口需要重寫一次涩咖。

子接口重寫默認(rèn)方法時(shí)海诲,default關(guān)鍵字可以保留。子類重寫默認(rèn)方法時(shí)檩互,default關(guān)鍵字不可以保留特幔。

接口中,無法定義成員變量闸昨,但是可以定義常量蚯斯,其值不可以改變,默認(rèn)使用public static ?nal修飾饵较。
接口中拍嵌,沒有構(gòu)造方法,不能創(chuàng)建對(duì)象循诉。
接口中横辆,沒有靜態(tài)代碼塊。

多態(tài)

指同一行為茄猫,具有多個(gè)不同的表現(xiàn)形式
1狈蚤、繼承或者實(shí)現(xiàn)
2困肩、方法的重寫
3、父類應(yīng)用指向子類對(duì)象
當(dāng)使用多態(tài)調(diào)用方法的時(shí)候脆侮,首先檢查父類中是否有該方法锌畸,如果沒有,則編譯錯(cuò)誤靖避,如果有執(zhí)行的是子類重寫后的方法

多態(tài)具有良好的擴(kuò)展性:

應(yīng)用類型轉(zhuǎn)換

向上轉(zhuǎn)型:
多態(tài)本身是子類類型向父類類型向上轉(zhuǎn)換的過程潭枣,這個(gè)過程是默認(rèn)的。當(dāng)父類引用指向一個(gè)子類對(duì)象時(shí)筋蓖,便是向上轉(zhuǎn)型卸耘。
向下轉(zhuǎn)型:
父類類型向子類類型向下轉(zhuǎn)換的過程,這個(gè)過程是強(qiáng)制的粘咖。
一個(gè)已經(jīng)向上轉(zhuǎn)型的子類對(duì)象,將父類引用轉(zhuǎn)為子類引用侈百,可以使用強(qiáng)制類型轉(zhuǎn)換的格式瓮下,便是向下轉(zhuǎn)型。
多態(tài)帶來的麻煩:
需要調(diào)用子類中的特有的方法必須使用向下轉(zhuǎn)型
instanceof給引用變量做類型的校驗(yàn)钝域,適用于在向下轉(zhuǎn)型的時(shí)候先做一次判斷讽坏,防止ClassCastException異常

final關(guān)鍵字

?nal: 不可改變±ぃ可以用于修飾類路呜、方法和變量。
類:被修飾的類织咧,不能被繼承胀葱。
方法:被修飾的方法,不能被重寫笙蒙。
變量:被修飾的變量抵屿,不能被重新賦值。

修飾變量:
局部變量-基本類型:
基本類型的局部變量捅位,被?nal修飾后轧葛,只能賦值一次,不能再更改艇搀。
局部變量-引用類型:
引用類型的局部變量尿扯,被?nal修飾后,只能指向一個(gè)對(duì)象焰雕,地址不能再更改衷笋。但是不影響對(duì)象內(nèi)部的成員變量值的修改

成員變量:

  • 顯示初始化
  • 構(gòu)造方法初始化

權(quán)限修飾符

public:公共的。
protected:受保護(hù)的
default:默認(rèn)的
private:私有的

在這里插入圖片描述

內(nèi)部類

將一個(gè)類A定義在另一個(gè)類B中淀散,里面那個(gè)類A就稱為內(nèi)部類右莱,B稱為外部類

成員內(nèi)部類

定義在類中方法外的類

  • 內(nèi)部類可以直接訪問外部類的成員蚜锨,包括私有成員。
  • 外部類要訪問內(nèi)部類的成員慢蜓,必須要建立內(nèi)部類的對(duì)象亚再。
    內(nèi)部類仍然是一個(gè)獨(dú)立的類,在編譯之后內(nèi)部類會(huì)被編譯成獨(dú)立的.class文件晨抡,但是前面冠以外部類的類名和$符號(hào)
    創(chuàng)建內(nèi)部類對(duì)象格式:
    外部類名.內(nèi)部類名 對(duì)象名 = new 外部類型().new 內(nèi)部類型()氛悬;
匿名內(nèi)部類

是內(nèi)部類的簡(jiǎn)化寫法。它的本質(zhì)是一個(gè) 帶具體實(shí)現(xiàn)的 父類或者父接口的 匿名的 子類對(duì)象耘柱。
開發(fā)中如捅,最常用到的內(nèi)部類就是匿名內(nèi)部類了。

包裝類

在這里插入圖片描述

裝箱:從基本類型轉(zhuǎn)換為對(duì)應(yīng)的包裝類對(duì)象调煎。
拆箱:從包裝類對(duì)象轉(zhuǎn)換為對(duì)應(yīng)的基本類型镜遣。
從Java 5(JDK 1.5)開始,基本類型與包裝類的裝箱士袄、拆箱動(dòng)作可以自動(dòng)完成悲关。

Collection集合

集合:集合是java中提供的一種容器,可以用來存儲(chǔ)多個(gè)數(shù)據(jù)娄柳。
數(shù)組的長(zhǎng)度是固定的寓辱。集合的長(zhǎng)度是可變的。
數(shù)組中存儲(chǔ)的是同一類型的元素赤拒,可以存儲(chǔ)基本數(shù)據(jù)類型值秫筏。集合存儲(chǔ)的都是對(duì)象。而且對(duì)象的類型可以不一致挎挖。在開發(fā)中一般當(dāng)對(duì)象多的時(shí)候这敬,使用集合進(jìn)行存儲(chǔ)。

  • 單列集合java.util.Collection
  • 雙列集合java.util.Map
  • 單列集合java.util.Collection
  •   java.util.List:元素有序肋乍、元素可重復(fù)
    
  •       java.util.ArrayList
          java.util.LinkedList
    
  •   java.util.Set:元素?zé)o序鹅颊,而且不可重復(fù)
          java.util.HashSet
          java.util.TreeSet
    

Collection常用功能:
public boolean add(E e): 把給定的對(duì)象添加到當(dāng)前集合中 。
public void clear() :清空集合中所有的元素墓造。
public boolean remove(E e): 把給定的對(duì)象在當(dāng)前集合中刪除堪伍。
public boolean contains(E e): 判斷當(dāng)前集合中是否包含給定的對(duì)象。
public boolean isEmpty(): 判斷當(dāng)前集合是否為空觅闽。
public int size(): 返回集合中元素的個(gè)數(shù)帝雇。
public Object[] toArray(): 把集合中的元素,存儲(chǔ)到數(shù)組中蛉拙。

Iterator迭代器

迭代:即Collection集合元素的通用獲取方式尸闸。在取元素之前先要判斷集合中有沒有元素,如果有,就把這個(gè)元素取出來吮廉,繼續(xù)在判斷苞尝,如果還有就再取出出來。一直把集合中的所有元素全部取出宦芦。這種取出方式專業(yè)術(shù)語稱為迭代宙址。

public E next():返回迭代的下一個(gè)元素。
public boolean hasNext():如果仍有元素可以迭代调卑,則返回 true抡砂。
tips::在進(jìn)行集合元素取出時(shí),如果集合中已經(jīng)沒有元素了恬涧,還繼續(xù)使用迭代器的next方法注益,將會(huì)發(fā)生java.util.NoSuchElementException沒有集合元素的錯(cuò)誤。

原理:
在調(diào)用Iterator的next方法之前溯捆,迭代器的索引位于第一個(gè)元素之前丑搔,不指向任何元素,當(dāng)?shù)谝淮握{(diào)用迭代器的next方法后现使,迭代器的索引會(huì)向后移動(dòng)一位低匙,指向第一個(gè)元素并將該元素返回,當(dāng)再次調(diào)用next方法時(shí)碳锈,迭代器的索引會(huì)指向第二個(gè)元素并將該元素返回,依此類推欺抗,直到hasNext方法返回false售碳,表示到達(dá)了集合的末尾,終止對(duì)元素的遍歷绞呈。

增強(qiáng)for循環(huán)

增強(qiáng)for循環(huán)(也稱for each循環(huán))是JDK1.5以后出來的一個(gè)高級(jí)for循環(huán)贸人,專門用來遍歷數(shù)組和集合的。它的內(nèi)部原理其實(shí)是個(gè)Iterator迭代器佃声,所以在遍歷的過程中艺智,不能對(duì)集合中的元素進(jìn)行增刪操作。
僅僅作為遍歷操作

可變參數(shù)

修飾符 返回值類型 方法名(參數(shù)類型... 形參名){ }
同樣是代表數(shù)組圾亏,但是在調(diào)用這個(gè)帶有可變參數(shù)的方法時(shí)十拣,不用創(chuàng)建數(shù)組(這就是簡(jiǎn)單之處),直接將數(shù)組中的元素作為實(shí)際參數(shù)進(jìn)行傳遞志鹃,其實(shí)編譯成的class文件夭问,將這些元素先封裝到一個(gè)數(shù)組中,在進(jìn)行傳遞曹铃。這些動(dòng)作都在編譯.class文件時(shí)缰趋,自動(dòng)完成了。
不可變參數(shù)只能存在一個(gè),且要卸載一個(gè)方法參數(shù)列表中的末尾

泛型

一般在創(chuàng)建對(duì)象時(shí)秘血,將未知的類型確定具體的類型味抖。當(dāng)沒有指定泛型時(shí),默認(rèn)類型為Object類型灰粮。
集合中是可以存放任意對(duì)象的仔涩,只要把對(duì)象存儲(chǔ)集合后,那么這時(shí)他們都會(huì)被提升成Object類型谋竖。當(dāng)我們?cè)谌〕雒恳粋€(gè)對(duì)象红柱,并且進(jìn)行相應(yīng)的操作,這時(shí)必須采用類型轉(zhuǎn)換蓖乘。
泛型是數(shù)據(jù)類型的一部分锤悄,我們將類名與泛型合并一起看做數(shù)據(jù)類型。

泛型E
自定義的泛型類
修飾符 class 類名<代表泛型的變量> { }
含有泛型的方法
修飾符 <代表泛型的變量> 返回值類型 方法名(參數(shù)){ }
含有泛型的接口
修飾符 interface接口名<代表泛型的變量> { }

泛型通配符
當(dāng)使用泛型類或者接口時(shí)嘉抒,傳遞的數(shù)據(jù)中零聚,泛型類型不確定,可以通過通配符<?>表示些侍。但是一旦使用泛型的通配符后隶症,只能使用Object類中的共性方法,集合中元素自身方法無法使用岗宣。

受限泛型
泛型的上限:
格式: 類型名稱 <? extends 類 > 對(duì)象名稱
意義: 只能接收該類型及其子類
泛型的下限:

格式: 類型名稱 <? super 類 > 對(duì)象名稱
意義: 只能接收該類型及其父類型

List集合

public void add(int index, E element) : 將指定的元素蚂会,添加到該集合中的指定位置上。
public E get(int index) :返回集合中指定位置的元素耗式。
public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素胁住。
public E set(int index, E element) :用指定元素替換集合中指定位置的元素,返回值的更新前的元素。

ArrayList集合
LinkdedList集合
public void addFirst(E e) :將指定元素插入此列表的開頭刊咳。
public void addLast(E e) :將指定元素添加到此列表的結(jié)尾彪见。
public E getFirst() :返回此列表的第一個(gè)元素。
public E getLast() :返回此列表的最后一個(gè)元素娱挨。
public E removeFirst() :移除并返回此列表的第一個(gè)元素余指。
public E removeLast() :移除并返回此列表的最后一個(gè)元素。
public E pop() :從此列表所表示的堆棧處彈出一個(gè)元素跷坝。
public void push(E e) :將元素推入此列表所表示的堆棧酵镜。
public boolean isEmpty() :如果列表不包含元素,則返回true探孝。

Set接口

HashSet集合
哈希表是由數(shù)組+鏈表+紅黑樹(JDK1.8增加了紅黑樹部分)實(shí)現(xiàn)的
LinkedHashSet集合

Collections類

java.util.Collections

public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素笋婿。
public static void shuffle(List<?> list) 打亂順序 :打亂集合順序。
public static <T> void sort(List<T> list) :將集合中元素按照默認(rèn)規(guī)則排序顿颅。
public static <T> void sort(List<T> list缸濒,Comparator<? super T> ) :將集合中元素按照指定規(guī)則排序。

比較形式

Java提供兩種比較形式:
java.lang.Comparable;
java.util.Comparator;

  • Comparable:強(qiáng)行對(duì)實(shí)現(xiàn)它的每個(gè)類的對(duì)象進(jìn)行整體排序。這種排序被稱為類的自然排序庇配,類的compareTo方法被稱為它的自然比較方法斩跌。只能在類中實(shí)現(xiàn)compareTo()一次,不能經(jīng)常修改類的代碼實(shí)現(xiàn)自己想要的排序捞慌。實(shí)現(xiàn)此接口的對(duì)象列表(和數(shù)組)可以通過Collections.sort(和Arrays.sort)進(jìn)行自動(dòng)排序耀鸦,對(duì)象可以用作有序映射中的鍵或有序集合中的元素,無需指定比較器啸澡。
  • Comparator強(qiáng)行對(duì)某個(gè)對(duì)象進(jìn)行整體排序袖订。可以將Comparator 傳遞給sort方法(如Collections.sort或Arrays.sort)嗅虏,從而允許在排序順序上實(shí)現(xiàn)精確控制洛姑。還可以使用Comparator來控制某些數(shù)據(jù)結(jié)構(gòu)(如有序set或有序映射)的順序,或者為那些沒有自然順序的對(duì)象collection提供排序皮服。

方法內(nèi)部調(diào)用new Comparator()
兩個(gè)對(duì)象比較的結(jié)果有三種:大于楞艾,等于,小于龄广。
如果要按照升序排序硫眯, 則o1 小于o2,返回(負(fù)數(shù))择同,相等返回0两入,01大于02返回(正數(shù)) 如果要按照降序排序 則o1 小于o2,返回(正數(shù))敲才,相等返回0谆刨,01大于02返回(負(fù)數(shù))
直接在函數(shù)中寫匿名內(nèi)部類

Map集合

public V put(K key, V value) : 把指定的鍵與指定的值添加到Map集合中。
public V remove(Object key) : 把指定的鍵 所對(duì)應(yīng)的鍵值對(duì)元素 在Map集合中刪除归斤,返回被刪除元素的值。
public V get(Object key) 根據(jù)指定的鍵刁岸,在Map集合中獲取對(duì)應(yīng)的值脏里。
public Set<K> keySet() : 獲取Map集合中所有的鍵,存儲(chǔ)到Set集合中虹曙。
public Set<Map.Entry<K,V>> entrySet() : 獲取到Map集合中所有的鍵值對(duì)對(duì)象的集合(Set集合)迫横。

public K getKey() :獲取Entry對(duì)象中的鍵。
public V getValue() :獲取Entry對(duì)象中的值酝碳。

HashMap集合

數(shù)據(jù)采用的哈希表結(jié)構(gòu)矾踱,元素的存取順序不能保證一致。由于要保證鍵的唯一疏哗、不重復(fù)呛讲,需要重寫鍵的hashCode()方法、equals()方法。

LinkedHashMap集合

ashMap下有個(gè)子類LinkedHashMap贝搁,存儲(chǔ)數(shù)據(jù)采用的哈希表結(jié)構(gòu)+鏈表結(jié)構(gòu)吗氏。通過鏈表結(jié)構(gòu)可以保證元素的存取順序一致;通過哈希表結(jié)構(gòu)可以保證的鍵的唯一雷逆、不重復(fù)弦讽,需要重寫鍵的hashCode()方法、equals()方法膀哲。

JDK9對(duì)集合添加的優(yōu)化

使用與創(chuàng)建少量的元素:
1:.of()方法只是Map往产,List,Set這三個(gè)接口的靜態(tài)方法某宪,其父類接口和子類實(shí)現(xiàn)并沒有這類方法仿村,比如HashSet,ArrayList等待缩抡;
2:返回的集合是不可變的奠宜;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞻想,隨后出現(xiàn)的幾起案子压真,更是在濱河造成了極大的恐慌,老刑警劉巖蘑险,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滴肿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡佃迄,警方通過查閱死者的電腦和手機(jī)泼差,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呵俏,“玉大人堆缘,你說我怎么就攤上這事∑账椋” “怎么了吼肥?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)麻车。 經(jīng)常有香客問我缀皱,道長(zhǎng),這世上最難降的妖魔是什么动猬? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任啤斗,我火速辦了婚禮,結(jié)果婚禮上赁咙,老公的妹妹穿的比我還像新娘钮莲。我一直安慰自己免钻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布臂痕。 她就那樣靜靜地躺著伯襟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪握童。 梳的紋絲不亂的頭發(fā)上姆怪,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音澡绩,去河邊找鬼稽揭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肥卡,可吹牛的內(nèi)容都是我干的溪掀。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼步鉴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼揪胃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起氛琢,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤喊递,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后阳似,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骚勘,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年撮奏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了俏讹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡畜吊,死狀恐怖泽疆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情玲献,我是刑警寧澤于微,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站青自,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驱证。R本人自食惡果不足惜延窜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抹锄。 院中可真熱鬧逆瑞,春花似錦荠藤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至念秧,卻和暖如春淤井,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摊趾。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工币狠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砾层。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓漩绵,卻偏偏與公主長(zhǎng)得像烤惊,于是被迫代替她去往敵國(guó)和親你雌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

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