String检吆、StringBuffer薪捍、StringBuilder
區(qū)別對(duì)比:
String在進(jìn)行 str = str+“123”時(shí)币他,會(huì)先給“123”創(chuàng)建一個(gè)存儲(chǔ)空間尔当,然后再創(chuàng)建一個(gè)存儲(chǔ)空間來來存儲(chǔ)str+“123”莲祸,最后再將str指向到新的字符串,所以無謂的浪費(fèi)了空間椭迎,改變了指向的存儲(chǔ)位置锐帜。
StringBuffer,相當(dāng)于一個(gè)緩沖區(qū)畜号,可以直接對(duì)里面的內(nèi)容進(jìn)行修改缴阎,而不是像String那樣重新開辟空間進(jìn)行操作。
StringBuilder與StringBuffer類似简软,是后者的簡(jiǎn)化版蛮拔,在單線程中使用比StringBuffer要方便,但是基于多線程安全痹升,最好用StringBuffer建炫。
異常Exception
關(guān)鍵字 throws 和 throw
throws
throws 是說將當(dāng)前的異常向上逐級(jí)遞交拋出,最后頂級(jí)是JVM來處理
例如
public static void main(String args[]){ try{ tell(10,0); }catch(Exception e){ System.out.println(); } } public static void tell(int i ,int j) throws ArithmeticException { int temp = 0; temp = i/j; System.out.println(temp); }
這里就是將tell()中的異常拋給上面的main方法來處理疼蛾,main中有try catch塊來處理踱卵,若main也throws出異常,則異常則交給JVM來處理据过。
throw
一般與catch聯(lián)用惋砂,需要進(jìn)行實(shí)例化,如
try{ throw new MyException("error had happened"); }catch( MyException e){ System.out.println(e); }
一般在try中拋出異常后绳锅,需要在下面給出異常處理的catch塊西饵。
封裝性
Static關(guān)鍵字
單繼承 關(guān)鍵字extends
子類實(shí)例化
ps:子類在實(shí)例化對(duì)象時(shí),都是先去調(diào)用父類的構(gòu)造方法鳞芙,然后再調(diào)用子類的構(gòu)造方法眷柔。
重寫 重載 super關(guān)鍵字
重寫與重載的區(qū)別對(duì)照
java抽象類
java 接口
ps:接口是允許多實(shí)現(xiàn)的期虾,也就是說一個(gè)類可以implements多個(gè)接口類,間接的彌補(bǔ)了java中單繼承的不足驯嘱。
第五點(diǎn)實(shí)例:
interface testabc { } interface testbcd { } interface abc extends testabc, testbcd { };
java多態(tài)應(yīng)用
java多態(tài)的體現(xiàn) 一個(gè)是體現(xiàn)在重載和重寫上镶苞,還有一個(gè)點(diǎn)是體現(xiàn)在向上轉(zhuǎn)型和向下轉(zhuǎn)型。
如:
public static void main(String[] args) tell(new B()); tell(new C()); } void tell(A a){ a.say1(); } } class A { void say1(){ System.out.println("i m a"); } } class B extends A{ void say2() { System.out.println("i m b"); } } class C extends A{ void say3() { System.out.println("i m c"); } }
這里調(diào)用了class A的say1方法鞠评,傳入的是class B和classC的實(shí)例化對(duì)象茂蚓,則會(huì)調(diào)用父類的say1 方法,這樣調(diào)用say1方法不論傳入B或者C都可以調(diào)用到父類的say1方法。