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操作符實例化。

方法

無限制

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

繼承和實現

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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章