java學習筆記

基礎語法:

①java源文件名必須和public類名相同,一個java文件中只能有一個public類

②每個類都有構造方法。在創建一個對象的時候,至少要調用一個構造方法。構造方法的名稱必須與類同名。一個類可以有多個構造方法。

③接口和抽象類:java通過接口實現多重繼承,而一個類只能繼承一個類(包括抽象類)或者使用內部類可以實現多繼承。Java8中接口也可以有方法體。

變量類型:

①成員變量和類變量:類變量有static修飾符,修改類變量的值會令new出來的任何一個實例中具有相同的值,而不同實例對象間的成員變量相互獨立。

②局部變量沒有默認值,所以局部變量被聲明后,必須經過初始化,才可以使用。

基本數據類型:

① Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。

② 引用類型: 強引用 軟引用 弱引用 虛引用

引用類型的變量非常類似于C/C++的指針。引用類型指向一個對象(數組),指向對象的變量是引用變量。

③ 對于==,如果作用于基本數據類型的變量,則直接比較其存儲的“值”是否相等;如果作用于引用類型的變量(? 例如string類型),則比較的是所指向的對象的地址

④ 對于equals方法(注意:equals方法不能作用于基本數據類型的變量),如果沒有對equals方法進行重寫,則比較的是引用類型的變量所指向的對象的地址;諸如String、Date等類對equals方法進行了重寫的話,比較的是所指向的對象的內容。

修飾符:

① final(表示常量) 變量能被顯式地初始化并且只能初始化一次。被聲明為 final 的對象的引用不能指向不同的對象,但是 final對象里的數據可以被改變。

② 一個類不能同時被 abstract 和 final 修飾。如果一個類包含抽象方法,那么該類一定要聲明為抽象類,否則將出現編譯錯誤。

抽象方法不能被聲明成 final 和 static。

任何繼承抽象類的子類必須實現父類的所有抽象方法,除非該子類也是抽象類。

③ 靜態變量也被稱為類變量。局部變量不能被聲明為 static 變量。

④ synchronized 關鍵字聲明的方法同一時間只能被一個線程訪問。synchronized 修飾符可以應用于四個訪問修飾符。(保證原子性)

⑤ volatile 修飾的成員變量在每次被線程訪問時,都強制從公共內存中重新讀取該成員變量的值。而且,當成員變量發生變化時,會強制線程將變化值回寫到共享內存。這樣在任何時刻,兩個不同的線程總是看到某個成員變量的同一個值。(不保證原子性)

循環:

① do…while 循環和 while 循環相似,不同的是,do…while 循環至少會執行一次。

Number&Math類:

① Integer b = Integer.valueOf("444",16);? // 使用 16 進制

② 產生隨機數有兩種方法,一種是內置Random對象:? Random rand=new Random(); int j=rand.nextInt(100);

// 這里是一個方法的重載,參數的內容是指定范圍

一種是Math類的random方法:int i=(int)(Math.random()*100);

//生成0-100的隨機數

String類:

① String類是不可改變的解析,因此當對字符串進行修改的時候,需要使用StringBuffer和StringBuilder類。和String類不同的是,StringBuffer和 StringBuilder類的對象能夠被多次的修改,并且不產生新的未使用對象。

② StringBuilder類在Java 5中被提出,它和StringBuffer之間的最大不同在于StringBuilder的方法不是線程安全的(不能同步訪問)。

Collection接口類:

① Set 接口實例存儲的是無序的,不重復的數據。List 接口實例存儲的是有序的,可以重復的元素。

② Set檢索效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變 <實現類有HashSet,TreeSet>

③ List和數組類似,可以動態增長,根據實際存儲的數據的長度自動增長List的長度。查找元素效率高,插入刪除效率低,因為會引起其他元素位置改變 <實現類有ArrayList,LinkedList,Vector> 。

④ ArrayList只能通過get(int i)方法獲取索引 i 的值,不能通過x[i](數組的方法)方法獲取

Stream、File、IO:

PS:按照ANSI編碼標準,標點符號、數字、大小寫字母都占一個字節,漢字占2個字節。按照UNICODE標準所有字? ? 符都占2個字節。在Java當中字符是采用Unicode編碼標準的。

① File類創建文件

② FileInputStream\FileOutputStream負責從file對象讀取原始字節流

③ 如果要以指定的字符編碼方式(字符流)寫入或讀取文件,就需要InputStreamReader

④ 上面只能讀\寫一個字符,讀\寫多個字符需要BufferedReader

⑤ Scanner是一個可以使用正則表達式來分析基本類型和字符串的簡單文本掃描器

異常:

(1)如果調用者發現這個方法拋出異常,那么他必須

①捕獲處理這個異常(try...catch...finally...)

②拋出這個異常(使用 throws 關鍵字來聲明。throws 關鍵字放在方法簽名的尾部。)

(2)聲明自定義異常類

①如果希望寫一個檢查性異常類,則需要繼承 Exception 類。

②如果你想寫一個運行時異常類,那么需要繼承 RuntimeException 類。

③一個異常類和其它任何類一樣,包含有變量和方法。

繼承:

(1)子類的構造過程中必須調用父類的構造方法

(2)子類可在自己的構造方法中使用super()來調用父類的構造方法

①使用this來調用子類的另外的構造方法,調用的代碼只能出現在該構造方法內部的第一行可執行代碼,? ? ? 另外的構造方法必定使用super() ? ? ? ? ? ? ?調用父類構造方法

②如果調用super必須寫在子類構造方法的第一行

(3)如果子類的構造方法中沒有顯示的調用父類的構造方法,則系統默認的調用父類的無參的構造方法。

(4)如果子類的構造方法中既沒有顯示調用父類的構造方法,而父類中又沒有無參的構造方法,則編譯出錯。

(5)this用法:

①用于區分成員變量和局部變量同名的時候,在成員變量名前面帶上this.用于區分

②表示當前引用this的對象名。

③在一個類中如果構造函數間有重復,為增加程序的復用性,利用this調用重復的構造函數

重寫(Override)和重載(Overload):

① 方法的重寫(Overriding)和重載(Overloading)是java多態性的不同表現,重寫是父類與子類之間多態性的一種表現,重載是一類中多態性的一種表現。

② 重寫是在子類里面,方法名字相同,參數相同。返回類型相同。異常可以減少或刪除。訪問修飾符只可以降低限制。

③ 重載是在一個類里面,方法名字相同,而參數不同。返回類型可以相同也可以不同。異常可以修改。訪問修飾符可以修改。

④ 虛方法:編譯的時候檢查父類是否有該方法,而運行的時候則是調用特定對象(子類)的方法。要想調用父類中被重寫的方法,則必須使用關鍵字super。

抽象類:

① 抽象類不能被實例化。

② 抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類。

③ 構造方法、類方法(用static修飾的方法)不能聲明為抽象方法。

④ 抽象類的子類必須重寫抽象父類中的所有抽象方法,除非該子類也是抽象類。

接口:

① 接口不能用于實例化對象。

② 接口沒有構造方法。

③ 接口中所有的方法必須是抽象方法。

④ 接口中的變量會被隱式的指定為 public static/final 變量

⑤ 接口中不能含有靜態代碼塊以及靜態方法(用 static 修飾的方法)。

⑥ 接口允許多重繼承,但是要注意,繼承的多個接口可能包含相同名字方法,注意返回類型要一致,不然編譯報錯(原因:名字、參數相同,不符合重載規范)

Java多線程編程

① Java 線程的優先級是一個整數,其取值范圍是1(Thread.MIN_PRIORITY )- 10(Thread.MAX_PRIORITY )。? 具有較高優先級的線程對程序更重要,并且應該在低優先級的線程之前分配處理器資源。但是,線程優先級不能保證線程執行的順序,而且非常依賴于平臺。

② Thread.currentThread().getName()是獲得調用這個方法的線程的名字(用戶可通過setName()方法定義線程名字);this.getName()也是獲取當前線程對象的名字,但是必須在thread子類中調用,表示當前thread實例。如果沒有自定義線程名字,系統自動以線程編號命名(格式:Thread-X)。

例子:

③ Thread.join(),是用來指定當前主線程等待其他線程執行完畢后,再來繼續執行Thread.join()后面的代碼。

④ Thread.join(long millis),當前主線程等待該線程終止的時間最長為 millis 毫秒,超過時間沒完成則跳回? 主線程,執行join()后面的代碼。

匿名內部類

1、使用匿名內部類時,我們必須是繼承一個類或者實現一個接口,但是兩者不可兼得,同時也只能繼承一個類或者? 實現一個接口。

2、匿名內部類中是不能定義構造函數的。(初始化匿名內部類使用構造代碼塊)

3、匿名內部類中不能存在任何的靜態成員變量和靜態方法。

4、匿名內部類為局部內部類,所以局部內部類的所有限制同樣對匿名內部類生效。

5、匿名內部類不能是抽象的,它必須要實現繼承的類或者實現的接口的所有抽象方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • 1.十進制-->二進制:十進制轉為二進制主要是對十進制數進行除2運算 2.二進制-->十進制:二進制乘以2的過程 ...
    晨星資源閱讀 403評論 0 0
  • 1.軟件開發概述 軟件生命周期軟件生命周期:軟件的產生到報廢的整個過程軟件生命周期內有:問題定義,可行性分析,總體...
    寒橋閱讀 608評論 0 0
  • 面向對象主要針對面向過程。 面向過程的基本單元是函數。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,082評論 0 4
  • 基礎篇 final 修飾符——修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的...
    Darkmoss閱讀 416評論 0 0
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,134評論 0 62