JAVA筆記(菜鳥教程)

1.局部變量是在棧上分配的。
2.局部變量沒有默認(rèn)值,所以局部變量被聲明后,必須經(jīng)過初始化,才可以使用。
3.類變量(靜態(tài)變量)和實例變量區(qū)別在于:類變量是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變后的結(jié)果;而實例變量則屬對象私有,某一個對象將其值改變,不影響其他對象。
4.訪問控制范圍
訪問控制.jpg

(1)private類內(nèi)訪問
(2)被聲明為 protected 的變量、方法和構(gòu)造器能被同一個包中的任何其他類訪問,也能夠被不同包中的子類訪問。

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()); 
       此時打印出李四,說明對象的屬性是可以被改變的、        

p1=new Person("王五"); 當(dāng)引用改變指向?qū)ο蟮臅r候,在eclipse下會提示錯誤,final 類不能被繼承,沒有類能夠繼承 final 類的任何特性。

7.抽象類的唯一目的是為了將來對該類進(jìn)行擴(kuò)充,作為備用方法,如有需要,子類繼承他并進(jìn)行擴(kuò)充。抽象方法是一種沒有任何實現(xiàn)的方法,該方法的的具體實現(xiàn)由子類提供。由于此方法是備用方法,所以抽象方法不能被聲明成 final 和 static,任何繼承抽象類的子類必須實現(xiàn)父類的所有抽象方法(注意,只是抽象方法,并不是所有方法),除非該子類也是抽象類,如果一個類包含抽象方法,那么該類必須聲明為抽象類。但抽象類可以不包含抽象方法。抽象方法的聲明以分號結(jié)尾。 例如:public abstract sample();
8.synchronized 關(guān)鍵字聲明的方法同一時間只能被一個線程訪問。序列化的對象包含被 transient 修飾的實例變量時,java 虛擬機(jī)(JVM)跳過該特定的變量。volatile 修飾的成員變量在每次被線程訪問時,都強(qiáng)制從共享內(nèi)存中重新讀取該成員變量的值。
9.位運算符
位運算符1.jpg
位運算符2.jpg
10.增強(qiáng)型for循環(huán)
增強(qiáng)型for循環(huán).jpg
11.Java轉(zhuǎn)義序列
轉(zhuǎn)義序列.jpg
12.創(chuàng)建string對象,一旦創(chuàng)建就不能改變
String.jpg
13.獲取字符串長度: int len = site.length();
14.sBuffer拼接
sBuffer拼接.jpg
15.以下實例中使用了正則表達(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.一個類的兩個方法擁有相同的名字,但是有不同的參數(shù)列表。Java編譯器根據(jù)方法簽名判斷哪個方法應(yīng)該被調(diào)用。的max方法就會被調(diào)用;如果傳遞的是double型參數(shù),則double類型的max方法體會被調(diào)用,這叫做方法重載。重載的方法必須擁有不同的參數(shù)列表。你不能僅僅依據(jù)修飾符或者返回類型的不同來重載方法。
17.創(chuàng)建目錄
創(chuàng)建目錄.jpg
18.next() 與 nextLine() 區(qū)別

(1)對輸入有效字符之前遇到的空白,next() 方法會自動將其去掉,next()只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結(jié)束符,next() 不能得到帶有空格的字符串。
(2)nextLine()以enter為結(jié)束符,可輸入空格

19.方法的重寫規(guī)則

參數(shù)列表必須完全與被重寫方法的相同;
返回類型必須完全與被重寫方法的返回類型相同;
訪問權(quán)限不能比父類中被重寫的方法的訪問權(quán)限更低。例如:如果父類的一個方法被聲明為public,那么在子類中重寫該方法就不能聲明為protected。
父類的成員方法只能被它的子類重寫。
聲明為final的方法不能被重寫。
聲明為static的方法不能被重寫,但是能夠被再次聲明。
子類和父類在同一個包中,那么子類可以重寫父類所有方法,除了聲明為private和final的方法。
子類和父類不在同一個包中,那么子類只能夠重寫父類的聲明為public和protected的非final方法。
重寫的方法能夠拋出任何非強(qiáng)制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強(qiáng)制性異常,或者比被重寫方法聲明的更廣泛的強(qiáng)制性異常,反之則可以。
構(gòu)造方法不能被重寫。
如果不能繼承一個方法,則不能重寫這個方法。

20.重載(Overload)

重載(overloading) 是在一個類里面,方法名字相同,而參數(shù)不同。返回類型可以相同也可以不同。
每個重載的方法(或者構(gòu)造函數(shù))都必須有一個獨一無二的參數(shù)類型列表。
最常用的地方就是構(gòu)造器的重載。
重載規(guī)則
被重載的方法必須改變參數(shù)列表(參數(shù)個數(shù)或類型或順序不一樣);
被重載的方法可以改變返回類型;
被重載的方法可以改變訪問修飾符;
被重載的方法可以聲明新的或更廣的檢查異常;
方法能夠在同一個類中或者在一個子類中被重載。
無法以返回值類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。

21.重載和重寫的區(qū)別
重載和重寫.jpg
22.抽象類總結(jié)規(guī)定

(1). 抽象類不能被實例化(初學(xué)者很容易犯的錯),抽象類不可以被實例化,只有被實體類繼承后,子類實例化父類的抽象方法,抽象類才會有作用。抽象類如果被實例化,就會報錯,編譯無法通過。只有抽象類的非抽象子類可以創(chuàng)建對象。
(2). 抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類。
(3). 抽象類中的抽象方法只是聲明,不包含方法體,就是不給出方法的具體實現(xiàn)也就是方法的具體功能。
(4). 構(gòu)造方法,類方法(用static修飾的方法)不能聲明為抽象方法。
(5). 抽象類的子類必須給出抽象類中的抽象方法的具體實現(xiàn),除非該子類也是抽象類。(子類必須重寫所有抽象方法。
當(dāng)然,不都重寫也可以,但是這樣的話,子類也必須是抽象類。)

23.接口定義

接口中所有的方法必須是抽象方法。
接口不能包含成員變量,除了 static 和 final 變量。
接口不是被類繼承了,而是要被類實現(xiàn)。
接口支持多重繼承。

24.抽象類和接口的區(qū)別

(1). 抽象類中的方法可以有方法體,就是能實現(xiàn)方法的具體功能,但是接口中的方法不行。
(2). 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是 public static final 類型的。
(3). 接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法(用 static 修飾的方法),而抽象類是可以有靜態(tài)代碼塊和靜態(tài)方法。
(4). 一個類只能繼承一個抽象類,而一個類卻可以實現(xiàn)多個接口。
(5).一個接口能繼承另一個接口,這和類之間的繼承比較相似。

25.沒有任何方法的接口被稱為標(biāo)記接口。標(biāo)記接口主要用于以下兩種目的:

(1).建立一個公共的父接口
(2).向一個類添加數(shù)據(jù)類型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容