讀Java 804 - Quick refresher

  • Upcast永遠是成功的,但Downcast不是,記得作instanceof判斷
  • 僅拋不一樣異常,而返回值相同的重載是不能夠的
  • static import只會import靜態類
  • static method內不能使用this和super,不能用super!
  • 只有static nested class能有靜態成員,其它nested不能有,且靜態嵌入類能夠訪問外圍類的私有成員但僅限於靜態成員
  • 不能夠在enums前使用new(由於其構造函數是私有的)
  • 枚舉默認且只能爲public static final,因此不能繼承
  • 接口裏面的變量必須被初始化,並且是final的
  • 接口裏面不能有BODY,所有爲public abstract
  • 接口能夠有nested interface,這時的內嵌的接口能夠爲private/protected or public
  • is-a (實現/繼承) is-like-a(接口),has-a(組合)
  • 泛型不支持協變,again, List<SuperT> lst = new List<T>() 會出錯
  • <? extends T> 指必須在T的scope內,至關於c#的(?), <? super T> 指的是T必須爲繼承了T,好比<? super Path>
  • 沒有泛型異常這回事,即沒有這種東西 -> GenericExeption<T> extends Throwable
  • 泛型類型不能夠爲primitive
  • 使用HashSet/HashMap時要重寫hashCode()和equals()
  • 關於泛型呢,由於是type erasure因此沒有預先定義這回事,因此靜態泛型(static T xxx) 是不存在的,
  • %o: octual 八進制  %x: hexadecimal 16進制
  • Watch service不會遞歸watch子目錄,須要本身resursively register watch key
  • If the JDBC API is not able to locate the JDBC driver, it will throw a SQLException. If there are jars for the drivers available, they need to be included in the classpath to enable the JDBC API to locate the driverjava

  • ResultSet一開始遊標指向的是第一條前面,因此必須運行.next()拿到第一條正則表達式

  • RowSet是種特殊的支持JavaBean組件的ResultSet
        JdbcRowSet: 
        CachedRowSet: disconnected ResultSet
            WebRowSet: CachedRowset + XML (沒有說這個是JSON格式喔)
                JoinRowSet: WebRowset + SQL join
                FilteredRowSet: WebRowset + filteringc#

  • JDBC 4.1 introduces the capability to use try-with-resources statement to close resources (Connection, ResultSet,and Statement) automatically.oracle

  • try-catch的異常若是相似並且處理方式也相似的話,能夠考慮使用multi-catch塊 app

  • 即便在catch中return了,也仍是會執行到finally的,除非執行的是system.exit(n), 由於這個是停掉全部包括其它的dom

  • static initialization block cannot throw any checked exceptions. now-static initialization blocks can. however, all the constructors should declare that exception in their throws clauseide

  • 重寫的方法中throw的異常只能比父類的異常更具體,而不能更寬泛,或者不throws也是能夠的函數

  • 若是方法在實現的多個接口中都存在且拋出的異常不一樣,則實現的方法應該同時拋出這些異常this

  • 自定義exception最後繼承於Exception或RuntimeException,而不要直接繼承Throwable,這個是JVM預留的spa

  • bundlename_language_country_#script.properties

  • Format (抽象類)
        NumberFormat
        DateFormat - 大寫W/D/F(day of week)的是in year, 小寫w/d/f的是in month,大寫S是毫秒,大寫K是am/pm小時數,小寫k是hour (1-24), H是(0-23)
            SimpleDateFormat

  • sleep(): 不會release the lock,會hold on to the lock

  • join(): wait for another thread to terminate

  • 仍然不懂的:


  • static method 不能夠被override

  • 接口裏的方法只能爲public & abstract,不然會出編譯錯「Illegal modifier for the interface method say; only public & abstract are permitted」

    接口裏面的field只能爲public, final & static,不然會出編譯錯「Illegal modifier for the interface field Foo.iVisual; only public, static & final are permitted」

  • 前期綁定和後期綁定

  • static block: A constructor will be invoked when an instance of the class is created, while the static block will be invoked when the program initializes

  • 抽象類能夠有靜態類
  • static的目標不可使用this,由於它不屬於任何一個實例
  • 靜態方法裏面不可使用super.StaticMethod(),既然它不能夠被繼承,也不能使用super了
  • nested class:
    若是內嵌方法是static的,則使用new A.B()
    若是外圍方法是static的,則使用new A().B()
    new A().B().C();
    抽象類中的內嵌方法,由於沒有實例,因此能夠直接A.new B()或A.this.method();
    記住實例方法必定要有實例,不然要new()
    沒有static外圍類這回事內部類自動擁有對其外圍類的全部成員的訪問權, 若是內部類和外部類成員的名字徹底相同,則在內部類方法中要訪問外部類成員(即便是private的),
    內部類必須聲明爲protected, default, public纔對外圍類可見(private則會編譯錯顯示爲is not visible),
  • a. 內部類能夠訪問private
    b. 內部類成員能夠與外圍類同名
  • 內部類不能夠有static變量但能夠有常量即static final
  • 內部方法類的參數只能爲final
  • 匿名類必定是定義在實例化後的對象內的,即 Foo f = new Foo(){ public void say(){ .. } }; 或Foo f {return new Foo(){ public void say(){};}}
  • 匿名類沒有顯式構造函數,也不能有構造函數
  • Enum類型的constructor只能被定義爲private
  • Enum類型的enum常量的定義必須是在第一行...
  • Enums被隱式定義爲public, static, final,不可被繼承
  • 全部enum都會被轉換爲類:因此TryEnums.SomeEnum.valueOf("TEST1").getClass()
  • 全部enum類型都繼承於java.lang.Enum,每一個enum元素都會被轉換爲enum類的常量,見enum定義 TryEnums.SomeEnum et = TryEnums.SomeEnum.TEST1; 
  • 接口內部類自動都是public static的,至關於爲接口定義了一種變量類型

  • TryEnums.SomeEnum et = TryEnums.SomeEnum.TEST1;

    System.out.println(et.TEST2); // et定義爲一個靜態類的常量後,仍然能夠用et.TEST2來取到TEST2的常量

  • 由於enum是final static public的,因此不能定義在local inter class中

  • FileWriter fw = FileWriter(path, boolean isAppend)
    fw.append("test001");
    fw.close();
    若是沒有第二個boolean參數,默認爲覆蓋寫。

  • A setAutoCommit (False) method invocation starts a transaction context.

  • 看一下正則表達式
    \\s* matches 0 or more occurrences of whitespaces.

  • ScheduledExecutorService

  • The method used to obtain the Executor determines how many Threads are used to execute tasks.

  • 看集合類圖,象Q144

  • Class Hashtable extends Dictionary implements Serializable, Cloneable, Map。

    Interface SortedMap extends Map

  • Change FileReader to BufferReader.

    public class BufferedReader extends Reader

    Read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.

    The buffer size may be specified, or the default size may be used. The default is large enough for most purposes.

  • ThreadLocalRandom.current().nextInt(1, 101);   

相關文章
相關標籤/搜索