1. 程式人生 > >Java語言程式設計(基礎篇)知識總結

Java語言程式設計(基礎篇)知識總結

1. Java

  java的特點:簡單的、面向物件的、分散式的、解釋型的、健壯的、安全的、可移植的、高效能的、多執行緒的和動態的。

  軟體的生命週期:需求、設計、編碼、測試、實施、運維(執行和維護)

  Java語言命名規則:

    必須是由字母、數字、下劃線、或美元符號構成的字元序列

    必須是由字元、下劃線或美元符號開頭,不能以數字開頭

    不能是關鍵字

    不能是truefalse

    可以任意長度

  Java命名規則

    類名:每個單詞的首字母大寫

    變數名:第一個單詞的首字母大寫,後面的單詞的首字母大寫

    方法名:和變數名一樣

  常量名:每個字母都大寫

2. 為什麼說java語言被稱為跨平臺語言

   根據java的工作原理,因為我們的.java原始檔通過編譯器編譯成以後綴名為.class的可執行檔案,然後將.class檔案和java庫檔案一起從JVM中執行,這樣就可以得到執行結果,又因為java程式可以在任意一個裝有java虛擬機器的計算機上執行,這樣就實現了java語言跨平臺執行

  Java語言的工作環境

  一般的家用pc機是不可以直接編輯java程式的。需要先配置java的環境變數才可以

  配置java開發環境變數的步驟:

1. 下載和安裝JDKJREJDKJRE一般不安裝到同一個資料夾下

2. 配置環境變數

  Path   jdk的安裝路徑

\bin;jre的安裝路徑\bin;

  Class_Path   jdk的安裝路徑\lib;jdk安裝路徑\lib\dt.jar;jdk安裝路徑\lib\tools.jar;

檢測環境變數配置是否成功進入DOS介面,輸入命令JavaJavacJava -version

   看執行是否有錯。如果成功,則表示java環境變數配置成功。

3. java語言規範

  JDKjava開發工具包

  作用:編寫和測試java程式

  JREjava開發環境

  作用:執行java程式

  Jdkjre的區別:jdk包含了jre

  API:應用程式介面。

  API文件:裡面包含了java

已經定義好的類的屬性和方法

  IDE:整合開發環境

  JavaSEjava標準版 可以用來開發客戶端的應用程式

  JavaEEjava企業版 可以用來開發伺服器端的應用程式

  javaMEjava微型版 可以用來開發移動裝置的應用程式

4. 基本資料型別

              儲存範圍          取值範圍           相應的包裝類

  byte           8位            +-27次方            Byte

  short          16位           +-215次方           Short

  int            32位           +-231次方           Integer

  long           64位            +-263次方          Long

  float                                                  Float

  double                                              Double

  char                                              Character

  boolean                                            Boolean

  Char型變數中能不能存貯一箇中文漢字?

    可以,因為因為它用的是unicode編碼。

  Double為什麼叫做雙精度浮點數?

     因為double的儲存範圍是float的兩倍。

5. 包裝類

  4.1.什麼是包裝類?

     對基本資料型別提供相應的類,這個類就是包裝類

  4.2.包裝類的作用?

     在資料型別之間的強制轉換中不會出錯

4.3.為什麼要使用包裝類?

   由於在強制型別的轉換中可能會出現錯誤,比如intString,為了避免錯誤所以引用包裝類

4.4.什麼是自動裝箱?

   將基本資料型別自動的轉換為包裝類的物件,這就是自動裝箱

4.5什麼是自動拆箱?

   將包裝類的物件自動的轉換為基本資料型別,這就是自動拆箱

6. 條件控制語句

  5.1.ifswitch語句的區別、轉換

     If語句不一定可以轉換為switch語句

     Switch語句一定可以轉換為一個多項if語句

  5.2.for迴圈控制語句

語法:for(初始化;迴圈控制條件;迴圈迭代操作){迴圈體}

  5.3.如何使用迴圈

     1.完成一次迭代的程式碼

     2.確定迴圈體,查查一次迭代的程式碼中哪些需要迴圈,哪些不需要迴圈。

     3.確定迴圈條件,判斷迴圈什麼時候迴圈,什麼時候不迴圈

     4.選擇迴圈語句,根據迴圈條件來選擇迴圈語句。

     5.將迴圈條件和迴圈體,代入迴圈語句的語法結構中。

     6.查詢迴圈是否可以停止。一般情況下,我們的迴圈都是必須可以停止的。

  5.4.continuebreak的區別

     Continue是跳出了一次迭代迴圈,而break是跳出了整個迴圈

7. 一維陣列

  7.1.陣列的定義

     資料型別[] 陣列名= new 資料型別[長度];

     ArrayList<包裝類>陣列名 = new ArrayList<包裝類>();

  7.2.什麼是變數的作用域?

      我們的變數在特定的範圍內才可以使用,這個範圍就叫做該變數的作用域

  7.3.程式的設計方式

      一個是從上到下的設計   從問題的開始  逐步分解成一個小分體最後得到結果

      一個是從下到上的設計   從需求的結果開始,一步一步推倒,直到得到已知條件

8. 二維陣列

  8.1.陣列的定義

     資料型別[][] 陣列名 = new 資料型別[行的長度][列的長度];

9. 類和物件

  9.1類和物件的概念

     物件:在現實生活中客觀存在的任何事物都可以看作是一個物件

     類:一系列具有相似特徵的抽象集合

  9.2.類和物件的關係

     類是物件的抽象集合

物件是類的一個個具體的例項化

9.3.怎樣設計類

  類中只包含兩個部分:

     屬性,物件擁有靜態特徵

     方法,物件執行的動作

9.4.This關鍵字

 This是指向呼叫物件本身的引用名

  9.5.構造方法

    什麼是構造方法?

     構造方法的方法名必須和所在類的類名相同

     構造方法沒有返回值型別

什麼時候呼叫構造方法?

 當使用new,建立一個類的物件的時候,呼叫構造方法。

可不可以不通過構造方法建立物件?

可以,呼叫物件的Clone的方法

注意:構造方法可以被過載,但不能被重寫

9.6.staitc的含義

  如果用static修飾屬性或方法,表示該屬性或方法是靜態的屬性,該屬性或方法是屬於該類的屬性,而不是該類的物件的屬性,呼叫的時候使用類名( . )屬性名呼叫

9.7 StringStringBufferStringBuilder的區別

  String的值是不可以改變的,StringBufferStringBuilder的值是可以改變的

 StringBuffer是多執行緒(新版本)  StringBuilder是單執行緒(舊版本)

9.8.什麼是變數的作用域?

   我們的變數在特定的範圍內才可以使用,這個範圍就叫做該變數的作用域

10. 面向物件程式設計

  10.1.面向物件的特徵有哪些方面?

       封裝:是面向物件方法的重要原則,就是把物件的屬性和方法結合為一個獨立的整體,並儘可能隱藏物件的內部實現細節。

繼承:在java設計中,使用類來對同一型別的物件進行抽象建立模型,其中不同的類也可能有公共的特徵和行為,將這些公共的特徵和行為放在一個類中,被其他類共享,這種建立模型的方式就叫做是繼承

多型:多型就是同一個行為具有多個不同的表現形式或形態的能力

抽象:是將一類物件的共同特徵總結出來構造類的過程,包括資料抽象和行為抽象兩個方面。抽象只關注物件有哪些屬性和行為,並不關注這些行為的細節是什麼

  10.2.類的抽象和封裝

     什麼是抽象類?

       不能被例項化的類就是抽象類

     什麼是封裝?

        封裝分為兩種,一種是屬性封裝,一種是方法的封裝

        屬性封裝,是將屬性前加private,提供getset方法

        方法封裝,不需要知道過程,只需要知道引數和結果

      封裝的優點:提高了程式碼的安全性和易修改性

   10.3.闡述靜態變數和例項變數的區別

      靜態變數也叫類變數,這種變數前加了static修飾符。可以直接用類名呼叫,也可以用物件呼叫

例項變數也叫物件變數,這種變數沒有加static修飾符。只能通過物件呼叫

11. 資料庫

11.1.什麼是DB

   儲存資料的倉庫

11.2.DB資料庫的簡寫

    DBS 資料庫系統            儲存資料

    DBA資料庫管理員          管理資料庫的人員

  DBMS資料庫管理系統       方便對資料庫中的資料進行操作

    RDBMS關係型資料庫管理系統

11.3.DB分為

    關係型資料庫和非關係型資料庫

    關係型資料庫:MySQLOracle

    非關係型資料庫:noSQL

關係型資料庫和非關係型資料庫的區別:關係型資料庫不能獨立存在,而非關係型資料庫可以

11.4.什麼是關係型資料庫?

    因為該資料庫中的每一張表都不能獨立存在,必須要有關係存在。

11.5.完整性約束有哪些?

    域約束、主鍵約束、外來鍵約束

    域約束:取值範圍在特定的範圍之中

    主鍵約束:非空唯一

    外來鍵約束:取值必須要在外來鍵表中存在

11.6.約束條件有哪些?

    域約束、主鍵約束、外來鍵約束、非空約束、唯一約束

11.7.什麼是主鍵、候選鍵、超鍵、外來鍵?

    主鍵:非空唯一

    候選鍵:每一個鍵都可以稱為候選鍵

        超鍵:是一個屬性或一組屬性,他唯一的標識了一個關係

        外來鍵:定義了關係之間的關係

11.8.DDL語言

     DDL      DB定義語言

     DML      DB操作語言

     DDL       對錶進行操作

     DML      對錶中的資料進行操作

DDL語言

CREATE DATABASE    建立資料庫

CREATE TABLE        建立資料庫表格

ALTER TABLE         修改資料庫表格

DROP TABLE         刪除資料庫表格

TRUNCATE TABLE     刪除資料庫表格內容

DML語言

INSERT into 表名 values (1,值2......);    增加

delete from 表名 where刪除條件;           刪除

Update 表名 set列名 =新值 where更新條件;修改

Select 列名 from  where查詢條件           查詢

11.9.資料庫的三大正規化

    第一正規化是原子性

    第二正規化是完全依賴,沒有部分依賴

    第三正規化是沒有傳遞依賴

11.10.什麼是JDBC

    JDBC    java資料庫連線

    作用:使用java語言來連線資料庫中的資料

11.11.怎樣使用JDBC

     1.載入驅動  class.forName(”com.mysql.jdbc.Driver”);

     2.建立連線  Connection con = DriverManager.getConnection(url,userName,PW);

         3.執行語句  

               有變數:PrepareStatement ps = con.getprepareStatement(“?變數”);

               無變數:Statement ps = com.preparedStatement(“具體的SQL語句”);

11.12.truncate delete的區別

     Truncate   1.刪除表中的所有資料

               2.DDL語言

               3.刪除表中的結構

     Delete   1.刪除指定的資料

             2.DML語言

             3.不刪除表的結構

11.13.儲存過程

      什麼是儲存過程?

       儲存過程,為了減少開發人員編寫SQL語句的重複性

語法:

CREATE PROCEDURE proc_test(

          引數

    )

   BEGIN

         方法體

   END;

11.14.檢視

     什麼是檢視?

         檢視是原始資料庫資料的一種變換,是查看錶中資料的另外一種方式。

     為什麼要使用檢視?

         讓不同的人員關注不同的資料

     怎樣使用檢視?

         CREATE view 檢視名 as select語句

drop view 檢視名

select * from 檢視名

 11.15.索引

          什麼是索引?

               索引是對資料庫表中一列或多列的值進行排序的一種結構

          索引的作用?

                使用索引可快速訪問資料庫表中的特定的資訊

     11.16.事務

          什麼是事務?

              事務是作為單個邏輯單元執行的一系列操作

              單個邏輯單元:通俗的理解為一次操作

           事務的特徵?

               原子性、穩定性、隔離性、可靠性

           為什麼需要事務?

               因為在實際情況中,我們的業務可能是有幾個步驟共同完成的,如果其中一個步驟出現錯誤,那麼我們的業務的結果可能就不正確。

語法:

              開始事務  BEGIN   

              提交事務  COMMIT  

              回滾事務  ROLLBACK

12. 繼承

     12.1.什麼是繼承?

          java設計中,使用類來對同一型別的物件進行抽象建立模型,其中不同的類也可能有公共的特徵和行為,將這些公共的特徵和行為放在一個類中,被其他類共享,這種建立模型的方式就叫做是繼承

     12.2.繼承的作用?

          提高了程式碼的維護性、整潔性、複用性

     12.3.怎樣實現繼承?

         子類中包含父類的特性,子類包含父類的所有屬性和方法。子類中的屬性和方法,父類是不包含的

      12.4.什麼時候使用繼承?

          兩個類之間必須是is-a的關係

          這兩個類中有相同的屬性和方法

      12.5.繼承的關鍵字extends是寫在子類中的

      12.6.super關鍵字

          Super代指父類

      12.7.方法的過載?

          方法的過載就是在同一個類中,兩個方法可以方法名相同,返回值型別相同,引數不同。

      12.8.方法的重寫?

          方法的重寫是指子類中的方法可以和父類中的方法的方法名相同,返回值型別相同,引數也相同。

      12.9.方法的重寫和過載的關係和區別?

          方法重寫發生在通過繼承而相關的不同的類中,而方法過載可以發生在同一個類中,也可以發生在由於繼承而相關的方法名但是引數列表不同的類中

          方法重寫具有相同的方法名,返回值型別和引數列表,而方法的過載具有相同的方法名和返回值型別,但是引數列表不同

      12.10.為什麼不能根據返回值型別來區分過載?

           因為JVM是通過路徑、方法名、引數、過載在同一類下,當路徑、方法名、引數相同,無法區分哪個方法

13. 多型

13.1.什麼是多型?

    多型是同一個行為具有多個不同的表現形式或形態的能力

13.2.多型的使用條件?

    使用多型必須要有繼承關係

    使用多型的類中,必須重寫父類中的方法

    父類引用指向子類物件

13.3.什麼是動態繫結、靜態繫結?

    在程式碼的執行期間是會判斷引用物件的實際型別,根據實際型別呼叫相應的方法,這種呼叫方法的行為叫做動態繫結。

    靜態繫結:java程式的編譯過程中,方法的呼叫和程式碼的執行過程叫做靜態繫結

動態繫結和靜態繫結的區別

    動態繫結是在執行過程中,靜態繫結是在編譯過程中。

13.4.多型的原理?

    我們是通過動態繫結來實現多型的

13.5.instanceof的含義 怎樣使用

    是用來執行時指出物件是否是特點類的一個例項

13.6.多型的使用、作用、 優點

    使用多型是在初始化類的物件的時候使用。

    多型最大的作用和優勢是用來開發框架結構,而不是針對具體的方法的實現

   優點:提高了程式碼的替換性、擴充性、介面性、靈活性、簡化性

13.7.什麼是向上轉型?

    父類引用指向子類物件

13.8.什麼是向下轉型?

    把子類的實際型別轉換成父類

14. 異常

14.1.什麼是異常?

   異常是一種物件,表示阻止正常執行程式執行的錯誤或者情況。

14.2.異常的分類?

    異常分為:

    系統錯誤(Error):是由java虛擬機器丟擲的,用Error表示。

    異常(Exception):是用Exception類表示,它描述的是由程式

和外部環境所引起的錯誤。

    執行時異常(RuntimeException):使用RuntimeException類表

示,它描述的是程式設計錯誤。

14.3.ErrorException的區別:

    Error   錯誤

    Exception  異常

14.5.怎樣使用異常

    在主方法處理異常

  try{

    可能產生異常的語句

}catch(異常的型別){

  異常後執行的語句

}

14.6.throwthrows的區別:

    throw寫在方法體,後面跟異常型別的物件

    throws寫在方法頭,後面跟異常的型別

14.7.finally的子句 含義

    不論是否出現或者是否被捕獲,都可執行某些程式碼

14.8.finalfinally的區別:

    final修飾的變數是一個常量

    final修飾的方法不能被重寫和過載

    final修飾的類不能被繼承

    finally是寫在try-catch語句之後,不論是否出現異常都一定

執行的語句

14.9.try{}裡有一個return語句,那麼緊跟在這個try後的finally{}裡的程式碼會不會被執行,什麼時候被執行,在return前還是後?

會執行

之前

14.10.Java語言如何進行異常處理,關鍵字:throws、throw、try、catch、finally分別如何使用?

throws是獲取異常throw是丟擲異常try是將會發生異常的語句括起來,從而進行異常的處理,catch是如果有異常就會執行他裡面的語句,finally不論是否有異常都會進行執行的語句。

14.11.出一些你常見的執行時異常?

空指標異常、陣列下標溢位、算數異常、非法引數異常。

  14.12.怎樣自定義異常?

       自定義類,類名最後以Exception為結束,表示定義的是

一個異常類

          自定義的異常類,必須是繼承於Exception類或其子類

        自定義的異常類,一般是沒有屬性的

        自定義的異常類,一般要新增無引數的構造方法

        自定義的異常類,一般沒有自定義的方法,需要的方法

一般是重寫父類中的方法

15. 文字IO

什麼是流?

流是抽象的概念,是對輸入輸出裝置的抽象,java程式中,對於資料的輸入/輸出操作都是以“流”的方式進行。裝置可以是檔案,網路,記憶體等。

流的分類:

處理的資料單位不同,可分為:字元流,位元組流

資料流方向不同,可分為:輸入流,輸出流

功能不同,可分為:節點流,處理流

     15.1.什麼是文字IO,為什麼要使用文字IO

         文字IO  I = input輸入  O = output輸出

         輸入和輸出,是可以在計算機本地的檔案中的。

         為了使得Java程式有更加廣泛的用途

     15.2.什麼是絕對檔名?

          絕對檔名是由檔名和它的完整路徑以及驅動器字母組成。

     15.3.File類的作用

          建立、刪除檔案或目錄,重新命名檔案     

15.4.怎樣使用File類,來重新命名檔案

    File file = new File(“D:\\abc.java”);

    If(file.exists()){file.renameTo(new FIle(“d:\\123.txt”));}

15.5.怎樣使用FIle類,來刪除檔案

       File  file = new File(“正確的檔名”);

       file.delete();

15.6.怎樣使用File類,來建立目錄或檔案

     建立File檔案物件

 File  file = new File(“需要建立的目錄或檔名(絕對檔名)”);

15.7.建立該檔案或目錄

     file.mkdir();  建立目錄  ——  建立一個

     file.msdirs();  建立目錄  —— 一次建立多個

15.8.怎樣使用Scanner類,讀取檔案

     步驟:建立File類檔案

               FIle file = new File(“檔案的絕對檔名”);

建立輸入流

                     Scanner input = new Scanner(file);

                  讀取檔案

                     while(input.next()){}  ——  資料庫

                 While(input.hasNext()){String str = input.nextLine();}

       15.9.怎樣使用PrintWriter類,來修改檔案

            步驟:建立File

                    File file = new File(“檔案的絕對檔名”);

                  建立PrintWriter

PrintWriter pw = new PrintWriter(file);

寫入:

pw.println();  pw.print();  pw.printf();

和控制檯輸出是一樣的。System.out.println();

關閉 pw.close();

        15.10.怎樣自動關閉檔案資源

             使用try(){}來自動關閉,需要和try-catch語句區分開來

             try(PrintWriter pw = new PrintWriter(f1)){

pw.println();  pw.print();  pw.printf();

                //和控制檯輸出是一樣的。System.out.println();

}

         15.11.Scanner類的工作原理

               Scanner類中的方法都佳作是標記方法

               這些方法讀取資料的時候會根據標記來讀取

         15.12.怎樣從web上讀取資料

         首先使用java.net.URL類的這個構造方法,為該類檔案建立一個URL物件。

建立一個URL物件後,可以使用URL類中定義的opeanStream()方法來開啟輸入流和用書如流

建立  Scanner input = new Scanner(url.opeanStream());

然後就可以從輸入流中讀取資料了

16. 抽象和介面

16.1.是抽象類

    16.1.1.什麼是抽象類?

          不能例項化的類就是抽象類

    16.1.2.抽象類的特點是什麼?

          不能被例項化

    16.1.3.抽象類的用途是什麼?

          作為父類被子類繼承

    16.1.4.定義抽象類的語法?

          在方法頭中使用abstract

    16.1.5.抽象類的構造方法、屬性、普通方法怎樣定義?

          構造方法:Protected 類名(屬性){}

          屬性:和普通類一樣

      普通方法:和普通類一樣——可以包含抽象方法,        

也可以包含普通方法。

       16.1.6四種訪問修飾符

      訪問許可權      本類      本包      子類       其他包

       Public         yes        yes        yes         yes

       Protect        yes        yes        yes

    Default        yes        yes        

          Private        yes      

          16.1.7.為什麼要用抽象方法?

                提高了程式碼的重用性和易維護性

          16.1.8.抽象類的注意點

             1. 抽象方法不能包含在非抽象類中

             2. 抽象類是不能使用new操作符來初始化的

             3. 包含抽象方法的類必須是抽象類的

             4. 子類可以覆蓋父類的方法並將它定義為abstract

             5. 即使子類的父類是具體的,這個子類也可以是抽

象的

6. 不能使用new操作符從一個抽象類建立一個例項

但是抽象類可以用作是一種資料類

       16.2.介面

           16.2.1.什麼是介面?

              介面是一種與類相似的結構,只包含常量和抽象方法。

           (注意:介面和類是同等級的,他們只可以同時存在一種)

16.2.2.介面的用處是什麼?

    1)通過介面可以實現不相關類的相同行為,而不需要了解物件所對應的類。

    2)通過介面可以指明多個類需要實現的方法。

    3)通過介面可以瞭解物件的互動介面,而不需瞭解物件所對應的類。

16.2.3.什麼是介面繼承?

      就是類實現了介面,就叫做是介面繼承

      public class 類名{}

      public interface 介面名{

           靜態常量;

           抽象方法;

}

             16.2.4.什麼是泛型介面

                   泛型:什麼型別都可以

                   泛型介面:適用於任何資料型別的介面。

                   //定義泛型介面

                   public interface 介面名<E>{

                        靜態常量;

                        抽象方法;

}

//如果類要實現該介面的時候

public class 類名 implements介面名{}

//如果類實現的介面是泛型介面

public class 類名 implements介面名<具體的資料型別>{}

             16.2.5.Comparable介面的作用和用法

 java已經定義好的一個介面,提供了一個抽象方法,用於比較

public interface Comparable<型別>{

                      public int compareTo(型別 物件名)

}

              16.2.6.Coneable介面的作用和用法

                    可以克隆一個物件,表示該類可以被複制

              16.2.7.怎樣自定義一個介面

[修飾符] interface介面名 [extends父介面名列表]{

[public] [static] [final] 常量;

[public] [abstract] 方法;

}

16.2.8.介面和抽象類的區別?

抽象類

介面

變數

無限制

所有的變數必須是靜態常量

構造方法

子類通過構造方法鏈來呼叫構造方法,抽象類不能用new操作符例項化。

介面沒有構造方法,也不能用new操作符例項化。

方法

無限制

所有的方法必須是公共的抽象的方法

繼承和實現

使用繼承,並且只可以繼承於一個類

使用實現,允許實現多個類