目錄

Java從入門到精通》學習記錄 3

基礎的基礎部分: 3

一、 常量與變量 3

1、 掌握: 3

1) 、常量與變量的聲明方式: 3

2) 、變量的命名規則: 3

3) 、變量的作用范圍: 3

A. 按作用范圍:成員變量:類中定義,作用整個類。 3

二、 數據類型 3

1、 掌握: 4

1) 、整數類型的分布: 4

2) 、浮點數據類型的分布: 4

3) 、字符型類數據: 4

4) 、布爾類型數據: 4

2、 熟悉: 4

1) 、基本數據類型默認值的意義和使用方法: 4

2) 、數據類型轉換:自動類型轉換和強制類型轉換。 4

三、 運算符、表達式和語句 4

1、 掌握: 5

1) 各種運算符的用法。 5

2) 各種表達式的用法。 5

3) 表達式與運算符的關系。 5

4) 表達式中數據類型的轉換技巧。 5

四、 程序控制 5

五、 數組 6

1、 一維數組: 6

2、 二維數組: 6

3、 與數組操作相關的API 6

1)數組拷貝: 7

2)數組排序: 7

基礎的核心部分: 7

六、類和對象---面向對象的設計 7

1、類和對象簡介 7

2、類 8

3、對象 8

4、 類的方法 8

七、類的封裝、繼承和多態 9

八、 抽象類和接口 13

(一)、抽象類 13

(二) 、接口 14

九、 類的專題研究 14

十、 java常用類庫(API) 17

十一、 包及訪問權限 19

1、 包的基本概念 20

2import的使用 20

3JDK中常見的包: 20

4、 類成員的訪問控制權限 20

5Java命名習慣 21

十二、 異常處理 21

 

Java從入門到精通》學習記錄

基礎的基礎部分:

一、常量與變量

1、掌握:

(1)、常量與變量的聲明方式:

A.語法:final 數據類型 常量名(=值)

B.規則:常量名通常全部大寫,且常量用于成員變量時必須賦初值。

(2)、變量的命名規則:

  1. 用相應的數據類型為變量命名后,內存會為其開辟相應大小的空間。
  2. 變量屬于標識符,命名規則同標識符。

(3)、變量的作用范圍:

  1. 按作用范圍:成員變量:類中定義,作用整個類。

局部變量:循環中定義,跳出循環不能再用。

二、數據類型

 

 

 

1、掌握:

(1)、整數類型的分布:

(2)、浮點數據類型的分布:

(3)、字符型類數據:

(4)、布爾類型數據:

2、熟悉:

(1)、基本數據類型默認值的意義和使用方法:

(2)、數據類型轉換:自動類型轉換和強制類型轉換。

 

三、運算符、表達式和語句

程序由語句構成,語句的基本單元就是表達式和運算符。

 

 

1、掌握:

(1)各種運算符的用法。

算術運算符

運算符分類: 關系運算符

邏輯運算符

位運算符

(2)各種表達式的用法。

(3)表達式與運算符的關系。

(4)表達式中數據類型的轉換技巧。

四、程序控制

1、順序結構、選擇結構、循環結構

2、Ififelse、?:、swichwhiledowhileforbreakcontinue

 

五、數組

1、一維數組:

語法:聲明數組和分配內存:

int score[];  //聲明數組,未分配內存。

score[]=new int[3]//分配內存,元素個數為3個整形量。

合為一句:

int score[]=new int[3]

直接分配數值的聲明:

int score[3]={3,4,5}

2、二維數組:

語法:

int score[][];  //聲明數組,未分配內存。

score[][]=new int[3][4]//分配內存,行數為3,列數為4

合為一句:

int score[][]=new int[3][4]

直接分配數值的聲明:

int score[3][2]={{1,2},{3,4},{5,6}}

值得一提的是,可以不限制每行數量都相同:

int score[][]={{0,1,2},{3,4,7,8,9},{5,6}}

score.length     //二維數組score的行數

score[0].length   //二維數組score的第一行的元素的個數

3、與數組操作相關的API

1)數組拷貝:

System.arraycopy(a[3],0,b[4],0,x)

a[3]0x的元素依次覆蓋b[4]0開始的元素。

2)數組排序:

Arrays.sort(a);

a數組的元素進行從小到大的排序,需提前調用java.util包。

基礎的核心部分:

六、類和對象---面向對象的設計

要求:

了解類和對象的概念;

掌握聲明及創建類和對象的方法;

掌握對象的比較方法;

掌握類的方法的使用及調用。

1、類和對象簡介

·萬物皆對象,一個對象由對象的屬性及對象的方法(對屬性的操作或其他操作)構成。

·具有相同屬性和行為的一組對象成為類,廣義上講,具有一系列特征和行為的對象的集合就是類。

·類被看成是一種抽象的數據類型,具有自己的成員變量和成員方法。

·類是一個抽象的概念,若想利用類解決問題,需要先實例化一個類的對象,讓對象去訪問類中的變量和方法從而實現程序功能

·面向對象的設計的三個主要特征:封裝、多態和繼承

2、類

·類是對象的模板,對象是類的實例,所以面向對象的設計思想的重點是的設計。

·類的命名首字母大寫,定義用class,創建類的實例用new

3、對象

·創建某類的對象:

可以先聲明,再實例化(這個過程是不是覺得有點眼熟)

類名 對象名;        //聲明一個對象

對象名=new 類名();  //new實例化剛剛聲明的類的對象

也可以兩步一起(是不是更眼熟了):

類名 對象名=new 類名()

·對象只有實例化之后才能使用,只有實例化了,對于程序而言這個對象才是真實存在的。

·對象的使用:

對象.屬性;    //訪問對象的屬性

對象.方法();   //調用對象的方法

·比較:“==”比較的是內存地址,“equals()”方法比較的是值。

4、類的方法

主要說下構造方法:

1)構造方法是特殊的方法,特征是方法名與類名相同。主要是用在實例化對象時自動調用的,且沒有返回值。沒有構造方法的話,系統會默認生成一個無參的構造方法。

2)構造方法的基本作用就是對類中的私有屬性初始化。

3)構造方法若只有有參,則必須在實例化對象時寫入相關參數。

5thisstatic關鍵字和主方法

This代表類的一個對象,this主要用來調用成員變量或者成員方法。

Static用來修飾共享的變量,該變量就是靜態變量。

Static:當不想或無法調用類中的對象,卻還想用類中方法時,就可以用靜態方法。例:類.靜態變量、類.靜態方法

主方法語法:

public static void main(String[] args){

//方法體

}

主方法是靜態方法,所以想在主方法中直接調用的方法也必須是靜態方法。

七、類的封裝、繼承和多態

類的封裝通過private等修飾符,把一些屬性或者方法放到外面看不到的“黑匣子”里,形成一個一個類似“功能塊”的東西,不僅可以保護相關信息,還有利于實際應用和測試的簡便性,使得軟件工程化的思想的到貫徹;同時封裝也可以通過訪問private屬性時設置一些過濾條件。

類的繼承可以在快速開發新類的同時,降低內存的占用,形成金字塔形的類結構,是程序代碼再利用的重要體現。

類的多態:封裝和繼承是多態的基礎。

多態存在的三個必要條件:
一、要有繼承;
二、要有重寫;
三、父類引用指向子類對象。

1、類的封裝就是相關屬性用private修飾,對象想取得屬性必須要用getXxxsetXxx方法。

2、class 子類名 extends 父類名  //類的繼承只能多層繼承和單繼承,不允許多繼承,即一個類只能繼承一個類,子類可以直接繼承父類的公有屬性和方法,隱含的繼承私有屬性和方法。

3、實例化子類的對象時,會先調用父類的構造方法,再調用子類的構造方法。

4、super用來在子類中調用父類的屬性和方法。同時可以再子類中用super調用被覆寫的父類方法。

5、final修飾的類、方法和變量不能被改變,類不能被繼承,方法不能被重寫,變量變為常量。

6、重寫(覆寫):一個子類繼承了一個父類,子類中有一個方法和父類中一個方法名稱、參數個數、類型完全相同,就稱這個子類的方法覆寫了父類的方法,同理,子類的屬性也可以覆寫父類的屬性。

7、重載:方法名稱相同,卻可以根據傳入參數不同得到不同的效果。

8、加深理解多態的一些例子:

    

 

打印的結果會是什么呢?請自己思考下,答案在下一頁。


答案是"son",結合前面的解釋,我們很容易判斷出來。子類的getName()方法重寫了父類中的方法,在main中,父類的引用father指向了子類的對象son,當我們調用fathergetName()方法時,實際上是動態綁定到了子類的getName()上,所以會打印出"son"

下一個例子如下圖:

從程序的運行結果中我們發現,a.fun1()首先是運行父類Wine中的fun1().然后再運行子類JNC中的fun2()

      分析:在這個程序中子類JNC重載了父類Wine的方法fun1(),重寫fun2(),而且重載后的fun1(String a)fun1()不是同一個方法,由于父類中沒有該方法,向上轉型后會丟失該方法,所以執行JNCWine類型引用是不能引用fun1(String a)方法。而子類JNC重寫了fun2() ,那么指向JNCWine引用會調用JNCfun2()方法。

總結:指向子類的父類引用由于向上轉型了,它只能訪問父類中擁有的方法和屬性,而對于子類中存在而父類中不存在的方法,該引用是不能使用的,盡管是重載該方法。若子類重寫了父類中的某些方法,在調用該些方法的時候,必定是使用子類中定義的這些方法(動態連接、動態調用)。

對于面向對象而已,多態分為編譯時多態和運行時多態。其中編輯時多態是靜態的,主要是指方法的重載,它是根據參數列表的不同來區分不同的函數,通過編輯之后會變成兩個不同的函數,在運行時談不上多態。而運行時多態是動態的,它是通過動態綁定來實現的,也就是我們所說的多態性。

 

 

 

 

Java實現多態有三個必要條件:繼承、重寫、向上轉型。

         繼承:在多態中必須存在有繼承關系的子類和父類。

         重寫(覆寫):子類對父類中某些方法進行重新定義,在調用這些方法時就會調用子類的方法。(重載不可以,因為參數改變了)

         向上轉型:在多態中需要將子類的引用賦給父類對象,只有這樣該引用才能夠具備技能調用父類的方法和子類的方法。

八、抽象類和接口

掌握抽象類的基本概念

掌握抽象類實例的應用

掌握接口的基本概念

熟悉借口實例的應用

了解抽象類的使用

(一)、抽象類

1、Java中有一種專門做父類的類,叫做抽象類,特殊之處在于其中含有抽象方法。抽象類必須用abstract class聲明

2、抽象方法就是只聲明未實現的方法,用abstract關鍵字聲明。

3、抽象類不能被實例化,也就是new關鍵字無法產生對象。

4、抽象類的子類必須覆寫所有的抽象方法后才能被實例化,否則這個子類依然是抽象類。

5、抽象類中聲明了構造方法的話,子類必須明確調用。

(二)、接口

1、接口定義:接口的成員必須初始化且均為常量,接口的方法必須全部是抽象方法。

2、使用接口打造類的過程,叫做接口的實現,一個類可以實現多個接口。class implements 接口A,接口B

3、一個接口可以繼承多個接口,這個和類不一樣。interface 子接口 extends 父接口1,父接口2,…

九、類的專題研究

掌握object類的基本概念

掌握方法的運用技巧

掌握關鍵字的作用與使用技巧

熟悉內部類的使用

了解匿名對象的使用

1object類是所有類的父類。Object類的方法是所有類共用的,其中有個toString方法,println默認會用。

2、在一個類內部可以再定義一個類,就叫內部類。內部類可以直接調用外部類的屬性而不用先創建對象,但是外部類不能直接訪問內部類屬性。

3、用static修飾的內部類的屬性可以被外部類訪問了,但是此時的內部類無法訪問非靜態的外部類的屬性。

 

 

4、類外部引用內部類,需內部類用public聲明,如上圖。

5、內部類也可以在外部類的方法中定義。

6、匿名內部類,匿名對象,主要是匿名的含義,沒有明確的聲明。

7、方法的重載:

 

 

8、java中用引用代替C++中的指針。聲明一個類P的對象p1并實例化,將p1的引用給一個只聲明卻未實例化的P的對象p2,則p2就擁有p1的實例化結果。

9、接口對象的實例化。

10、this關鍵字:this表示當前對象,所謂當前對象表示調用類中方法或者屬性的那個對象。

11、static可聲明靜態變量和靜態方法。靜態變量是所有對象共享的,修改一次永久生效。靜態方法內不能調用非靜態變量。

12、main方法是java虛擬機調用的主方法,所以必須是public屬性,還要static保證可以不用創建對象直接被調用。

13、一個類可以使用不含有任何方法體的靜態代碼塊static{},靜態代碼塊會在類執行時優先執行,且只執行一次。經常用來進行靜態屬性初始化。

14、final關鍵字:用final標記的類不能被繼承、方法不能被覆寫、變量變成常量且只能賦值一次。

15、instanceof可用來判斷:一個類是否實現了某個接口或一個實例對象是否屬于一個類。返回值是布爾值,語法如下:

instanceof 接口        對象 instanceof

十、
java常用類庫(API)

掌握java類庫的相關概念

熟悉System類和Runtime

熟悉Math類和Random

了解對象克隆的相關知識

  Java類庫就是javaAPI(應用程序接口),是系統提供的已實現的常用類的集合。

 

 

1、String類和StringBuffer類:String類一旦確定就無法更改,相比之下,StringBuffer類修改起來更方便,但是一旦確定就要用toString轉成String格式。

2、基本數據類型的包裝類:可以強制轉換類型。

3、“裝箱”和“拆箱”的概念

4、System類:

5、Runtime類:

 

 

6、DateCalendar類和DateFormat

都是與時間相關的類,目前Date比較少用,更多的是另外兩個。

 

 

7、Math類與Random類:

Math類里都是一些關于數學的靜態方法,看JDK文檔即可。

十一、包及訪問權限

掌握包的基本概念

掌握import語句的使用

熟悉類成員的訪問控制權限

了解JDK中常見的包、java的命名習慣、Jar命令的使用。

  在開發大型項目的時候,需要把類分門別類地存到文件里,這樣的程序代碼更容易維護和實現。將類分開后,也就涉及到了相應的訪問權限問題。

1、包的基本概念

package主要用來解決類的名稱重復等問題,把一個相關項目的類和接口放在一個包里。

語法:package package;

2、import的使用

若要訪問不同包內的某個public類中的屬性或者方法,則需要import來聲明,語法為:

import 包名稱.類名稱;

PS:由于在java中導入一個類和導入一個包里所有的類,在程序運轉中并無差異,所以一般我們會導入一個包內所有的類,這樣比較方便。語法:import 包名稱.*

3、JDK中常見的包:

 

 

4、類成員的訪問控制權限

簡述如下圖:

 

 

 

5、Java命名習慣

 

 

十二、異常處理

掌握異常的基本概念

掌握對異常的處理機制

熟悉如何在程序和方法中拋出異常

了解如何編寫自己的異常類

在程序設計時,必須要考慮到可能出現的異常,并做出相應的處理,才能最大限度的保證程序正常運行。

1、拋出(throw)一個異常:生成異常對象并把它交給運行時系統的過程。

2、捕獲(catch)一個異常:運行時系統從異常生成的地方開始追溯,直到找到包含相應異常處理的辦法為止的過程。

3、異常的處理:

 

 

其中final塊可省略,那程序就從catch后開始繼續執行。

通過異常機制,如果能catch準異常類型,就可以讓程序運行到最后。

4、異常可分為兩大類:ErrorException

5、程序拋出異常用throw,方法拋出異常用throws

6、如果類的方法中用throws拋出了一個異常,那么在調用這個方法的時候,一定要用trycatch捕捉。

 

十三、類集框架

掌握類集接口的概念

掌握List接口、集合接口和SortedSet接口

熟悉Collection接口中的ArrayList類、HashSet類和TreeSet類的方法

了解通過迭代方法訪問類集

首先,什么是集合,集合通俗的說就是某一類數據放在一起形成一個集合,所以這一章會有各種組合的大大小小的集合,比方說List集合就包括了List接口和實現List接口的所有實現類。

數組與集合的區別是,數組長度固定,集合則可變;數組可存放對象和基本數據,但是集合只能存放對象。

這章主要講了3個重要集合,List集合(包含List接口和各種實現類)、Set集合(同List)和Map集合(同List)。其中List接口和Set接口都是繼承的Collection接口。如下所示:

 

                                                                              Collection接口

                                                                         

       Map接口           Set接口           List接口

 

HashMap     TreeMap       HashSet         TreeSet        ArrayList               LinkedList

                   常用實現類們                          

 

1、Collection接口:是構造類集框架的基礎,它聲明所有集合類都將擁有的核心方法,即所有集合類都實現了此接口。

常用方法:addremoveisEmptyiteratorsize

2、List接口:除了繼承Collection的方法外,還有兩個重要的方法:getint index)獲得指定索引位置上的元素、setint indexObject obj)將集合中指定索引為止的對象修改為指定的對象。

3、List接口的實現類ArrayList:以數組形式保存集合中的元素,可以隨機且快速地訪問集合中的元素。

4、List接口的實現類LinkedList:以鏈表形式保存集合中的元素,隨機訪問性能較差,但是插入元素和刪除元素性能出色。

以上兩種類都可以實例化List接口。

5、Set接口的實現類HashSet:使用散列進行儲存元素,不允許有重復元素。

6、Set接口的實現類TreeSet:同時實現SortedSet接口,在遍歷使用TreeSet類實現的Set集合中的元素,會默認將元素按照升序排列。

7、Map集合:用來存儲有映射關系的集合。實現類為HashMapTreeMap

8、注意:

List集合關注的是索引,元素有序存放,可重復

Set集合關注唯一性,值不許重復。

Map集合關注唯一的標識符(key),具有映射關系。

9、泛型:即“參數化類型”。一提到參數,最熟悉的就是定義方法時有形參,然后調用此方法時傳遞實參。那么參數化類型怎么理解呢?顧名思義就是將類型由原來的具體的類型參數化,類似于方法中的變量參數,此時類型也定義成參數形式(可以稱之為類型形參),然后在使用/調用時傳入具體的類型(類型實參)

泛型的本質是為了參數化類型(在不創建新的類型的情況下,通過泛型指定的不同類型來控制形參具體限制的類型)。也就是說在泛型使用過程中,操作的數據類型被指定為一個參數,這種參數類型可以用在類、接口和方法中,分別被稱為泛型類、泛型接口、泛型方法。

 

十四、
枚舉功能

掌握枚舉的概念

掌握enum關鍵字

掌握枚舉的定義方法

熟悉枚舉的作用、接口及其中構造方法

了解類集對枚舉的支持

 

枚舉理解起來像是一種簡化,同屬一種屬性的元素,比如周一到周日都屬于星期幾的范疇,那么建立一個枚舉星期,那么某個元素如果是枚舉中的一個,那么此元素必為枚舉元素中的一個。

1、枚舉類型的語法:

enum 枚舉名{枚舉值表}

 

 

十五、多線程

掌握實現多線程的方法

熟悉線程的狀態

熟悉線程同步和操作的方法

熟悉線程間通信的方法

了解進城和線程

 

1、進程的特征:一個程序的執行過程就是進程,都有自己獨立的內存空間和系統資源。

2、線程的特征:程序是按照流程來執行的,單個的流控制就是線程。

一個進程可以包含多個線程,且同時運行多個線程,這樣系統負擔必單獨再開一個進程要少的多。

3、實現多線程需要繼承Tread類或者實現Runnable接口。

 

 

 

Maven介紹:

 

Maven的核心功能便是合理敘述項目間的依賴關系,通俗點講,就是通過pom.xml文件的配置獲取jar包,而不用手動去添加jar包,而這里pom.xml文件對于學了一點maven的人來說,就有些熟悉了,怎么通過pom.xml的配置就可以獲取到jar包呢?pom.xml配置文件從何而來?等等類似問題我們需要搞清楚,如果需要使用pom.xml來獲取jar包,那么首先該項目就必須為maven項目,maven項目可以這樣去想,就是在java項目和web項目的上面包裹了一層maven,本質上java項目還是java項目,web項目還是web項目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通過pom.xml添加jar)

 

 

 

    所以,根據上一段的描述,我們最終的目的就是學會如何在pom.xml中配置獲取到我們想要的jar包,在此之前我們就必須了解如何創建maven項目,maven項目的結構是怎樣,與普通java,web項目的區別在哪里,還有如何配置pom.xml獲取到對應的jar包等等,這里提前了解一下我們如何通過pom.xml文件獲取到想要的jar的,具體后面會詳細講解該配置文件。