1.局部變量是在棧上分配的蔼啦。
2.局部變量沒(méi)有默認(rèn)值站玄,所以局部變量被聲明后站辉,必須經(jīng)過(guò)初始化啤斗,才可以使用薪丁。
3.類變量(靜態(tài)變量)和實(shí)例變量區(qū)別在于:類變量是所有對(duì)象共有,其中一個(gè)對(duì)象將它值改變,其他對(duì)象得到的就是改變后的結(jié)果一睁;而實(shí)例變量則屬對(duì)象私有,某一個(gè)對(duì)象將其值改變稼稿,不影響其他對(duì)象薄榛。
4.訪問(wèn)控制范圍
(1)private類內(nèi)訪問(wèn)
(2)被聲明為 protected 的變量、方法和構(gòu)造器能被同一個(gè)包中的任何其他類訪問(wèn)让歼,也能夠被不同包中的子類訪問(wèn)敞恋。
5.方法繼承的規(guī)則:
父類中聲明為 public 的方法在子類中也必須為 public。
父類中聲明為 protected 的方法在子類中要么聲明為 protected谋右,要么聲明為 public硬猫,不能聲明為 private。
父類中聲明為 private 的方法改执,不能夠被繼承啸蜜。
6.final及繼承
public class TestFinal {
public static void main(String[] args) {
final Person p1=new Person("張三");
p1.setName("李四");
System.out.println(p1.getName());
此時(shí)打印出李四,說(shuō)明對(duì)象的屬性是可以被改變的辈挂、
p1=new Person("王五"); 當(dāng)引用改變指向?qū)ο蟮臅r(shí)候衬横,在eclipse下會(huì)提示錯(cuò)誤,final 類不能被繼承终蒂,沒(méi)有類能夠繼承 final 類的任何特性蜂林。
7.抽象類的唯一目的是為了將來(lái)對(duì)該類進(jìn)行擴(kuò)充,作為備用方法拇泣,如有需要噪叙,子類繼承他并進(jìn)行擴(kuò)充。抽象方法是一種沒(méi)有任何實(shí)現(xiàn)的方法霉翔,該方法的的具體實(shí)現(xiàn)由子類提供睁蕾。由于此方法是備用方法,所以抽象方法不能被聲明成 final 和 static早龟,任何繼承抽象類的子類必須實(shí)現(xiàn)父類的所有抽象方法(注意惫霸,只是抽象方法猫缭,并不是所有方法),除非該子類也是抽象類壹店,如果一個(gè)類包含抽象方法猜丹,那么該類必須聲明為抽象類。但抽象類可以不包含抽象方法硅卢。抽象方法的聲明以分號(hào)結(jié)尾射窒。 例如:public abstract sample();
8.synchronized 關(guān)鍵字聲明的方法同一時(shí)間只能被一個(gè)線程訪問(wèn)。序列化的對(duì)象包含被 transient 修飾的實(shí)例變量時(shí)将塑,java 虛擬機(jī)(JVM)跳過(guò)該特定的變量脉顿。volatile 修飾的成員變量在每次被線程訪問(wèn)時(shí),都強(qiáng)制從共享內(nèi)存中重新讀取該成員變量的值点寥。
9.位運(yùn)算符
10.增強(qiáng)型for循環(huán)
11.Java轉(zhuǎn)義序列
12.創(chuàng)建string對(duì)象艾疟,一旦創(chuàng)建就不能改變
13.獲取字符串長(zhǎng)度: int len = site.length();
14.sBuffer拼接
15.以下實(shí)例中使用了正則表達(dá)式 .runoob. 用于查找字符串中是否包了 runoob 子串:
String content = "I am noob " +
"from runoob.com.";
String pattern = ".*runoob.*";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("字符串中是否包含了 'runoob' 子字符串? " + isMatch);
16.一個(gè)類的兩個(gè)方法擁有相同的名字,但是有不同的參數(shù)列表敢辩。Java編譯器根據(jù)方法簽名判斷哪個(gè)方法應(yīng)該被調(diào)用蔽莱。的max方法就會(huì)被調(diào)用;如果傳遞的是double型參數(shù)戚长,則double類型的max方法體會(huì)被調(diào)用盗冷,這叫做方法重載。重載的方法必須擁有不同的參數(shù)列表同廉。你不能僅僅依據(jù)修飾符或者返回類型的不同來(lái)重載方法仪糖。
17.創(chuàng)建目錄
18.next() 與 nextLine() 區(qū)別
(1)對(duì)輸入有效字符之前遇到的空白,next() 方法會(huì)自動(dòng)將其去掉迫肖,next()只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結(jié)束符锅劝,next() 不能得到帶有空格的字符串。
(2)nextLine()以enter為結(jié)束符蟆湖,可輸入空格
19.方法的重寫規(guī)則
參數(shù)列表必須完全與被重寫方法的相同鸠天;
返回類型必須完全與被重寫方法的返回類型相同;
訪問(wèn)權(quán)限不能比父類中被重寫的方法的訪問(wèn)權(quán)限更低帐姻。例如:如果父類的一個(gè)方法被聲明為public稠集,那么在子類中重寫該方法就不能聲明為protected。
父類的成員方法只能被它的子類重寫饥瓷。
聲明為final的方法不能被重寫剥纷。
聲明為static的方法不能被重寫,但是能夠被再次聲明呢铆。
子類和父類在同一個(gè)包中晦鞋,那么子類可以重寫父類所有方法,除了聲明為private和final的方法。
子類和父類不在同一個(gè)包中悠垛,那么子類只能夠重寫父類的聲明為public和protected的非final方法线定。
重寫的方法能夠拋出任何非強(qiáng)制異常,無(wú)論被重寫的方法是否拋出異常确买。但是斤讥,重寫的方法不能拋出新的強(qiáng)制性異常,或者比被重寫方法聲明的更廣泛的強(qiáng)制性異常湾趾,反之則可以芭商。
構(gòu)造方法不能被重寫。
如果不能繼承一個(gè)方法搀缠,則不能重寫這個(gè)方法铛楣。
20.重載(Overload)
重載(overloading) 是在一個(gè)類里面,方法名字相同艺普,而參數(shù)不同簸州。返回類型可以相同也可以不同。
每個(gè)重載的方法(或者構(gòu)造函數(shù))都必須有一個(gè)獨(dú)一無(wú)二的參數(shù)類型列表歧譬。
最常用的地方就是構(gòu)造器的重載勿侯。
重載規(guī)則
被重載的方法必須改變參數(shù)列表(參數(shù)個(gè)數(shù)或類型或順序不一樣);
被重載的方法可以改變返回類型缴罗;
被重載的方法可以改變?cè)L問(wèn)修飾符;
被重載的方法可以聲明新的或更廣的檢查異常祭埂;
方法能夠在同一個(gè)類中或者在一個(gè)子類中被重載面氓。
無(wú)法以返回值類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。
21.重載和重寫的區(qū)別
22.抽象類總結(jié)規(guī)定
(1). 抽象類不能被實(shí)例化(初學(xué)者很容易犯的錯(cuò))蛆橡,抽象類不可以被實(shí)例化舌界,只有被實(shí)體類繼承后,子類實(shí)例化父類的抽象方法泰演,抽象類才會(huì)有作用呻拌。抽象類如果被實(shí)例化,就會(huì)報(bào)錯(cuò)睦焕,編譯無(wú)法通過(guò)藐握。只有抽象類的非抽象子類可以創(chuàng)建對(duì)象。
(2). 抽象類中不一定包含抽象方法垃喊,但是有抽象方法的類必定是抽象類猾普。
(3). 抽象類中的抽象方法只是聲明,不包含方法體本谜,就是不給出方法的具體實(shí)現(xiàn)也就是方法的具體功能初家。
(4). 構(gòu)造方法,類方法(用static修飾的方法)不能聲明為抽象方法。
(5). 抽象類的子類必須給出抽象類中的抽象方法的具體實(shí)現(xiàn)溜在,除非該子類也是抽象類陌知。(子類必須重寫所有抽象方法。
當(dāng)然掖肋,不都重寫也可以仆葡,但是這樣的話,子類也必須是抽象類培遵。)
23.接口定義
接口中所有的方法必須是抽象方法浙芙。
接口不能包含成員變量,除了 static 和 final 變量籽腕。
接口不是被類繼承了嗡呼,而是要被類實(shí)現(xiàn)。
接口支持多重繼承皇耗。
24.抽象類和接口的區(qū)別
(1). 抽象類中的方法可以有方法體南窗,就是能實(shí)現(xiàn)方法的具體功能,但是接口中的方法不行郎楼。
(2). 抽象類中的成員變量可以是各種類型的万伤,而接口中的成員變量只能是 public static final 類型的。
(3). 接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法(用 static 修飾的方法)呜袁,而抽象類是可以有靜態(tài)代碼塊和靜態(tài)方法敌买。
(4). 一個(gè)類只能繼承一個(gè)抽象類,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口阶界。
(5).一個(gè)接口能繼承另一個(gè)接口虹钮,這和類之間的繼承比較相似。
25.沒(méi)有任何方法的接口被稱為標(biāo)記接口膘融。標(biāo)記接口主要用于以下兩種目的:
(1).建立一個(gè)公共的父接口
(2).向一個(gè)類添加數(shù)據(jù)類型