1. 程式人生 > >java基礎語法(本人學習java的筆記)

java基礎語法(本人學習java的筆記)

基本語法部分 為選定的行改為註釋: shift+方向鍵  選定數行內容 ctrl+/    想解綁哪一行的話,同樣使用ctrl+/    常量:final 資料型別 輸入賦值: int 變數名;  Scanner in=new Scanner(System.in); 變數名=in.nextint(); 資料型別強制轉換: (資料型別名) 變數名 if  else: else語句總與最近的if匹配; math.random()   這個函式可以隨機產生一個【0,1)的數 可以通過*100  *1000  的方法改變隨機取值範圍; 要轉換成整數,可以*100後再強制轉換型別 對輸出結果進行位數控制:
system。out。printf(“%。2f”,i); 陣列定義: 資料型別【】  陣列名=new  int【陣列大小】 直接賦值與c相同。 防止陣列溢位的方法: 先讓使用者輸入個數,在定義陣列。 for。。。。。each迴圈: for(int  k:data)  //在這個for迴圈中,每一次使用陣列名為data的一個值k進行運算。 boolean   布林型別 \ 的型別: \r   回車; \"   雙引號 \'   單引號 \\   斜槓 \t   製表符 string   s為大寫; 一個字串型別的變數加上一個不是字串型別的值,自動轉換為字串。 in.next()  //讀入一個值
in.nextline()    //讀入一行 字串操作: 比較字串: .equals(比較值) length()  字串長度; charAt(index)   //獲取該字串的某一個字元。 s.substring(n)    //得到從n開始的到結尾的全部內容。 s.substring(b,e)     //得到從b開始的到e位之前的內容。 s.indx0f(c)     //從右邊開始找c所在的位置,-1表示不存在 s.index0f(c,n)    // 從n開始找c的位置。 s.replace(c,n)     //用c2的內容替換c1的內容 s.toLowerCase()    //   替換為小寫
s.toUpperCase()    //替換為大寫 數學函式操作; math.abs()    // 絕對值 math.pow()   //冪次 math.random()    // math.round()     // 傳值時,寬的值相容窄的值。 char--》int---》double 傳值與穿址: 陣列傳址; string傳值; super()   //
"super"。它和"this"類似,但是也有不同的地方。 
1。表示呼叫父類的建構函式。也是一個特殊語法,不是變數,沒有什麼型別。

2。可以在一個類的非static成員內部使用。比如super.method()。 
但是,注意,這個super.method()只是長得跟some_var.method()一樣,一個語法糖而已。實質上,"super"根本不是一個變數。

為什麼不是?因為如果是就壞了。java裡面有一個金科玉律:任何public非static函式的呼叫都是多型的。 
所以,如果super是個變數,也指向當前物件,那麼,不管super的靜態型別是什麼super.method()必然呼叫的是子類的那個版本,而不會是我們期望的,靜態地選擇父類的那個版本。

所以,你只要把super.xxx看成一個特殊的語法,比如理解為“super::xxx”就好了。

既然super不是一個變數,那麼不能把它象一個普通變數那樣"==",或者傳遞給某個函式就看起來很正常了,是麼?何況,你其實也用不著它,有this你這些要求就都可以辦到了。

3。super的另外一個作用是呼叫父類的protected函式。只有通過"super"這個魔咒,我們才能操作父類的protected成員,別無它法。
在定義類時候,內部的this表示該類例項。 封裝類的屬性的寫入與讀取: 繪圖類: 繪製多邊形: java架構: jvm:java虛擬機器
java環境配置 dos命令列: rd  刪除資料夾,必須保持資料夾保持空的狀態。 del  可以萬用字元刪除檔案 幫助:  help  內容 系統根目錄:即指系統盤的windows目錄 去某一個盤: 配置環境變數: 電腦--》屬性--》高階--》環境變數-》path   把要加路徑與其它路徑用“;”分割; 環境變數重新配置後,需要重啟命令列程式; 臨時配置java環境: 使用cmd命令列工具修改環境變數,只在本cmd下有效。 set path=........ 修改環境變數 set path=........%path%    //在原有環境變數基礎上新增新的值。 新紀錄:2015.11.17 變數型別: 變數命名規範: path:java所在的路徑 classpath:java型別的類檔案的路徑 java執行過程: javac   java檔案 java   class檔案(不用加class字尾) 資料型別: 布林型:boolean 字元型: 大寫a是65 小寫97 jav使用Unicode字符集 Unicode中一箇中文字元與一個英文字元佔用大小相同 浮點型: 整數型別:
邏輯運算子: if else if else if else switch: 迴圈: ctrl+c   強制停止 物件 物件:關於類的記憶體: 匿名物件: 建構函式: 不寫系統會為你自動新增 建構函式在new時觸發。 較多傳入值時,可通過過載建構函式。 this: 本類的欄位和方法使用this欄位。 呼叫方法和欄位的物件使用this代指。 靜態: 不可使用this; 使用類名,物件名皆可; 靜態函式中,不可引用非靜態的欄位或方法。 靜態屬性,欄位,所有該類物件公用,如上圖。 靜態程式碼塊: 裝載類時執行;無需呼叫。 繼承: 關鍵字:extends 如下圖: 注:即自動函式(如果父類沒有建構函式); 為什么呼叫父類建構函式?好處是什麼? 因為無法繼承建構函式。 如果想呼叫父類中的其他建構函式,在super()的括號中輸入引數即可; 函式複寫或重寫(override): 對父類的函式複寫: 函式的程式碼塊改變; 子類覆蓋父類; super的用法: super.函式      //呼叫父類的函式,有重寫時使用。  主函式入口: 物件轉型: 向上轉型: 向上轉型:把子類傳給父類; 如下圖: person類沒有address屬性,而student有該屬性; 向上引用只能使用子類和父類皆有的欄位名和函式名,且使用的是子類的欄位和函式內容(相當於複寫父類函式); 向下轉型: 如何應對「這種辦法不是多餘的麼」的說法? 舉例:超市裡的泡麵吃的時候不需要包裝,我們想買的只是麵餅,但廠家還對我們想要的東西進行了包裝。不瞭解就不應該想當然,多瞭解。 為什麼可以強制轉換? 因為p已經指向student,他是一個潛在的student物件,強制轉換隻不過是把他的偽裝撕破而已。 編譯所有java檔案:   javac   *.java 抽象類和抽象函式: abstract  void  fun(); //抽象函式沒有函式體 抽象類亦被稱為基類; 有抽象函式的類必須為抽象類,沒有抽象函式依然可以宣告抽象類; 抽象類不能生成物件; 抽象類天生是當爹的,只被繼承; 繼承抽象類的類需要複寫重寫抽象函式,避免無法生成的問題; 子類的生成時可以呼叫抽象類的建構函式;  關於抽象基類使用抽象函式的作用: 如果一個子類需要一個函式,而這個函式在父類中為抽象函式。如果忘記複寫函式,在執行的時候,會報錯。 包和訪問許可權: 包: 編譯時注意: 注: “-d”指的是目錄,“.”指的是當前目錄下; 即指在但前目錄生成包資料夾,並編譯檔案; 包名的命名規範: 注:類似於org.marsdroid的包名,會先生成一個org資料夾,在其下面生成marsdroid資料夾,class檔案會在其下;有點多一級; 訪問許可權: 如果想訪問方法和屬性,欄位,也應該使用public許可權。 private  通常情況下只修飾方法和屬性,欄位。 只能在宣告類中使用。 不聲明範圍預設default,許可權為包級別。 在不同包中宣告類時,要帶上包名。 技巧: 如果包名很長,宣告類時比較麻煩,可以事先宣告包.類(名稱空間),在下面宣告類時,不需要帶包名了。 ex: 另外: 如果需要使用一個包中的多個類還可以進一步簡便: ex: 包和繼承: protected許可權: 注:protected許可權允許跨包訪問屬性,函式許可權(限於子父類)。 許可權排名: public  protected default private
技巧: 批量編譯: javac  *.java 介面: interface 繼承介面使用implement關鍵字 稱為實現了介面 該類稱為實現類 多重實現: 介面繼承介面: 可以多繼承: 工廠方法模式: 在工廠模式中,在實現介面向上轉型中,要先宣告介面,不初始化(抽象類不能例項化); 詳見轉型部分 異常 異常是在執行時出現的錯誤,不是語法錯誤。 例如計算1/0。 關於try......catch: throw與throws: I/O(input與output): I/O核心類: 位元組流: 核心方法: read方法的返回值為該次讀取了多少個位元組; 如果read已經讀取完檔案,則返回-1; 簡寫: fis fos 注:b指下標開始,5即指從下標5那個開始;len指長度; 注意: 程式碼: 字元轉化為字串: 注:關於trim方法: