34歲!100天!學會Java編程(Day12)——知識點串連

敲黑板,劃重點

知識點串連

前面開發項目時,主要依靠的是《手把手教你學Java》中零散的知識點,以及將《Java從入門到精通》當作開發詞典來進行查詢。晚上將后者從頭到尾過一遍,對知識點進行查漏補缺,揀主要的記錄如下:

  1. 變量的作用域。作用域靜態(全局)變量>成員變量>局部變量。但是在類方法的局部域中,同名局部變量覆蓋成員變量,如果想要操作同名成員變量,需要使用關鍵字this。其中形參也可看作局部變量,會覆蓋同名成員變量;成員變量在對象創建后才能被對象調用,而靜態變量在類被加載后,就可以被類名調用。
  2. 運算符優先級。總共分為15級:圓括號>正負號>一元運算符>乘除>加減>移位運算>比較大小>比較是否相等>按位與>按位異或>按位或>邏輯與>邏輯或>三元運算符>賦值運算符。總結起來,不確定優先級的情況就用圓括號圈起來,賦值運算的等級最低。
  3. 數據類型的轉換分五種。
    (1)按以下優先級,則數據類型可以隱式自動轉換,byte<short<int<long<float<doublue。
    (2)反向進行則需要進行強制轉換。
    (3)char類型和String類型不包含在其中,不能簡單進行強制轉換,需特別對待。需特別注意,char變量有兩種賦值方式,一種是char cr=5;另一種是char cr='5'。前者cr等于ASCII碼表中,序號5所對應的字符ENQ,意思是請求字符;后者cr就等于‘5’。所以語句char cr=56;可以執行,運算結果是cr等于序號為56的字符‘8’,而語句char cr='56'則會因為超過一個字符而報錯。因此對應char與int的強制轉換就有兩種方式,如果char a=56,則char與int可以直接加圓括弧強制轉換。而如果char a='8',char類型強制轉換為int,輸出的是字符所對應的ASCII十進制編碼,反之亦然。
    (4)上述類型與String類型也不能強制轉換,以int2String為例,可以使用String.valueOf(int a)方法,返回一個String值;String2int可以使用包裝類Integer的方法Integer.valueOf(String str).intValue(),返回一個int值。同理,char2String可以使用String.valueOf(char cr)方法,String2char可以使用String.charAt(int index),String2char_array可以使用String.toCharArray()方法。
    (5)父類與子類對象的轉換,子類可隱式賦值給父類,稱為向上轉換;父類可有條件地強制轉換,然后賦值給子類,稱為向下轉換。
  4. 日期與時間的獲取。
    (1)創建一個Date對象,然后用String.format(格式轉換符%,Date對象),返回一個期望格式的字符串日期和時間。
    (2)使用System.currentTimeMillis()方法,返回一個當前時間(毫秒milliseconds)的long值。
  5. 數學運算。
    靈活運用Math類,可以獲得常用的一元函數運算值(三角函數、指數函數、冪函數、對數函數、取整函數、絕對值函數),二元函數運算值(pow指數函數,二元最值函數)等。
  6. 隨機數獲取。
    (1)使用Math.random()方法,獲得一個介于[0,1)的符合平均分布函數的double型小數。在這個小數的基礎上,可以轉換成任意整數[m,n)之間的隨機整數。
    (2)使用Random類中的若干方法,獲得平均分布的整數、小數、布爾值。除此以外,還可以獲得符合高斯分布的數。
  7. 數組操作。
    (1)多維數組的創建。例如int[][][] abc=new int[10][10][10];
    (2)數組的遍歷。多維循環與foreach語句。
    (3)數組的復制。Arrays.copyOf()和Arrays.copyOfRange()方法。
    (4)數組元素的查詢。Arrays.binarySearch()方法。
    (5)數組的排序。可以使用Arrays.sort()方法。當然,也可以使用經典的排序算法,自己編寫可調用的函數,包括:冒泡排序,直接選擇排序,反轉排序等。
  8. 幾個修飾變量和方法的關鍵字。如下表:
權限修飾 常量修飾 靜態修飾
private,protected,public final static

使用規則包括:
(1)被private修飾的成員變量和方法,不能被類對象顯示調用和子類對象內部調用。同理,子類方法不能重寫父類private方法。
(2)被protected修飾的成員變量和方法,不能被類對象顯示調用,但可以被子類對象內部調用。
(3)被public修飾的成員變量和方法,以上權限都有。
(4)子類同名方法(不管重寫還是重載),權限一定要大于等于上級父類。
(5)被final修飾的變量為常量;被final修飾的方法不可被子類重寫;被final修飾的類不可被繼承。
(6)被static修飾的變量為全局變量,在類被加載時就被創建;被static修飾的方法,為全局方法。同時不能在其內部調用該類的動態成員變量和動態方法;static不被用于修飾外部類,但可用于修飾內部類。靜態內部類創建對象不需要外部類對象,同時靜態內部類只能訪問靜態的外部類變量和方法。
(7)靜態變量和成員的語法規則,對于public的靜態變量和方法,通常直接使用(類名+靜態變量)和(類名+靜態方法)調用,而不是使用對象+變量/方法的方式(這種方法可行,但不被提倡)。

  1. 類的基本特點:封裝、繼承、多態。
    (1)封裝是為了保護成員變量,但是也有擴展成員變量使用范圍的靜態成員變量。
    (2)繼承最初是為了復用代碼,后來是因為樹狀結構不僅易于人類理解,而且可以拓展出多態這樣可愛的特性。
    (3)多態要實現,除了樹狀結構,最核心的技術是必須用到方法重寫的概念。關于多態使用場景,舉個例子,編一個籃球賽程序讓一個球員對象投籃,只需要主方法中調用一個球員對象投籃,具體到子一層對象后衛、前鋒、中鋒,子二層對象科比、詹姆斯、奧尼爾在投籃動作上不同的表現,只需要在具體子類和子子類中使用投籃方法重寫修改就行,不需要動主方法。而若是傳統的編程方法,則需要在主方法中加入大量的條件分支。
    (4)這里需注意方法重寫方法重載的區別。
  2. 繼承多態、接口多態、泛型、反射。
    (1)繼承多態的核心是方法重寫各不相同,但是各方法間可以通過復用父類方法而重用大部分代碼;
    (2)接口多態的核心是方法實現各不相同,且各方法間沒有可復用的代碼,所以方法實現過程完全不同;
    (3)泛型的核心是方法相同,即方法代碼相同,但方法操作的具體對象類型不同。
    (4)反射的核心是身份鑒定,在上述三種技術把程序玩懵圈了以后,使出一招ID Identify大招,判斷現在程序里運轉的到底是TM的什么類型對象。嗯,我猜在判定以后還能造出同類型的分身對象出來,玩6了不遜于孫悟空揪下一把毫毛,變出萬子千孫出來。
    11.其他:Swing,并發,TCP,JDBC都大略看了一下,等開發CE項目V2.0的時候再仔細琢磨吧。

參考書目
《Java從入門到精通》

2017-11-8

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,614評論 4 12
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,690評論 0 11
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,143評論 0 62
  • C++ 函數模板 函數模板的聲明和模板函數的生成 1.函數模板的聲明 函數模板可以用來創建一個通用的函數,以支持多...
    yslmyr閱讀 332評論 0 0