目錄
《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
2、 import的使用 20
3、 JDK中常見的包: 20
4、 類成員的訪問控制權限 20
5、 Java命名習慣 21
十二、 異常處理 21
《Java從入門到精通》學習記錄
基礎的基礎部分:
一、常量與變量
1、掌握:
(1)、常量與變量的聲明方式:
A.語法:final 數據類型 常量名(=值)
B.規則:常量名通常全部大寫,且常量用于成員變量時必須賦初值。
(2)、變量的命名規則:
- 用相應的數據類型為變量命名后,內存會為其開辟相應大小的空間。
- 變量屬于標識符,命名規則同標識符。
(3)、變量的作用范圍:
- 按作用范圍:成員變量:類中定義,作用整個類。
局部變量:循環中定義,跳出循環不能再用。
二、數據類型


1、掌握:
(1)、整數類型的分布:
(2)、浮點數據類型的分布:
(3)、字符型類數據:
(4)、布爾類型數據:
2、熟悉:
(1)、基本數據類型默認值的意義和使用方法:
(2)、數據類型轉換:自動類型轉換和強制類型轉換。
三、運算符、表達式和語句
程序由語句構成,語句的基本單元就是表達式和運算符。

1、掌握:
(1)各種運算符的用法。
算術運算符
運算符分類: 關系運算符
邏輯運算符
位運算符
(2)各種表達式的用法。
(3)表達式與運算符的關系。
(4)表達式中數據類型的轉換技巧。
四、程序控制
1、順序結構、選擇結構、循環結構
2、If、if…else、?:、swich、while、do…while、for、break、continue。
五、數組
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]的0到x的元素依次覆蓋b[4]從0開始的元素。
(2)數組排序:
Arrays.sort(a);
對a數組的元素進行從小到大的排序,需提前調用java.util包。
基礎的核心部分:
六、類和對象---面向對象的設計
要求:
了解類和對象的概念;
掌握聲明及創建類和對象的方法;
掌握對象的比較方法;
掌握類的方法的使用及調用。
1、類和對象簡介
·萬物皆對象,一個對象由對象的屬性及對象的方法(對屬性的操作或其他操作)構成。
·具有相同屬性和行為的一組對象成為類,廣義上講,具有一系列特征和行為的對象的集合就是類。
·類被看成是一種抽象的數據類型,具有自己的成員變量和成員方法。
·類是一個抽象的概念,若想利用類解決問題,需要先實例化一個類的對象,讓對象去訪問類中的變量和方法從而實現程序功能
·面向對象的設計的三個主要特征:封裝、多態和繼承。
2、類
·類是對象的模板,對象是類的實例,所以面向對象的設計思想的重點是類的設計。
·類的命名首字母大寫,定義用class,創建類的實例用new。
3、對象
·創建某類的對象:
可以先聲明,再實例化(這個過程是不是覺得有點眼熟)
類名 對象名; //聲明一個對象
對象名=new 類名(); //用new實例化剛剛聲明的類的對象
也可以兩步一起(是不是更眼熟了):
類名 對象名=new 類名();
·對象只有實例化之后才能使用,只有實例化了,對于程序而言這個對象才是真實存在的。
·對象的使用:
對象.屬性; //訪問對象的屬性
對象.方法(); //調用對象的方法
·比較:“==”比較的是內存地址,“equals()”方法比較的是值。
4、類的方法
主要說下構造方法:
(1)構造方法是特殊的方法,特征是方法名與類名相同。主要是用在實例化對象時自動調用的,且沒有返回值。沒有構造方法的話,系統會默認生成一個無參的構造方法。
(2)構造方法的基本作用就是對類中的私有屬性初始化。
(3)構造方法若只有有參,則必須在實例化對象時寫入相關參數。
5、this、static關鍵字和主方法
This代表類的一個對象,this主要用來調用成員變量或者成員方法。
Static用來修飾共享的變量,該變量就是靜態變量。
Static:當不想或無法調用類中的對象,卻還想用類中方法時,就可以用靜態方法。例:類.靜態變量、類.靜態方法
主方法語法:
public static void main(String[] args){
//方法體
}
主方法是靜態方法,所以想在主方法中直接調用的方法也必須是靜態方法。
七、類的封裝、繼承和多態
類的封裝通過private等修飾符,把一些屬性或者方法放到外面看不到的“黑匣子”里,形成一個一個類似“功能塊”的東西,不僅可以保護相關信息,還有利于實際應用和測試的簡便性,使得軟件工程化的思想的到貫徹;同時封裝也可以通過訪問private屬性時設置一些過濾條件。
類的繼承可以在快速開發新類的同時,降低內存的占用,形成金字塔形的類結構,是程序代碼再利用的重要體現。
類的多態:封裝和繼承是多態的基礎。
多態存在的三個必要條件:
一、要有繼承;
二、要有重寫;
三、父類引用指向子類對象。
1、類的封裝就是相關屬性用private修飾,對象想取得屬性必須要用getXxx和setXxx方法。
2、class 子類名 extends 父類名 //類的繼承只能多層繼承和單繼承,不允許多繼承,即一個類只能繼承一個類,子類可以直接繼承父類的公有屬性和方法,隱含的繼承私有屬性和方法。
3、實例化子類的對象時,會先調用父類的構造方法,再調用子類的構造方法。
4、super用來在子類中調用父類的屬性和方法。同時可以再子類中用super調用被覆寫的父類方法。
5、被final修飾的類、方法和變量不能被改變,類不能被繼承,方法不能被重寫,變量變為常量。
6、重寫(覆寫):一個子類繼承了一個父類,子類中有一個方法和父類中一個方法名稱、參數個數、類型完全相同,就稱這個子類的方法覆寫了父類的方法,同理,子類的屬性也可以覆寫父類的屬性。
7、重載:方法名稱相同,卻可以根據傳入參數不同得到不同的效果。
8、加深理解多態的一些例子:

打印的結果會是什么呢?請自己思考下,答案在下一頁。
答案是"son",結合前面的解釋,我們很容易判斷出來。子類的getName()方法重寫了父類中的方法,在main中,父類的引用father指向了子類的對象son,當我們調用father的getName()方法時,實際上是動態綁定到了子類的getName()上,所以會打印出"son"。
下一個例子如下圖:
從程序的運行結果中我們發現,a.fun1()首先是運行父類Wine中的fun1().然后再運行子類JNC中的fun2()。
分析:在這個程序中子類JNC重載了父類Wine的方法fun1(),重寫fun2(),而且重載后的fun1(String a)與 fun1()不是同一個方法,由于父類中沒有該方法,向上轉型后會丟失該方法,所以執行JNC的Wine類型引用是不能引用fun1(String a)方法。而子類JNC重寫了fun2() ,那么指向JNC的Wine引用會調用JNC中fun2()方法。
總結:指向子類的父類引用由于向上轉型了,它只能訪問父類中擁有的方法和屬性,而對于子類中存在而父類中不存在的方法,該引用是不能使用的,盡管是重載該方法。若子類重寫了父類中的某些方法,在調用該些方法的時候,必定是使用子類中定義的這些方法(動態連接、動態調用)。
對于面向對象而已,多態分為編譯時多態和運行時多態。其中編輯時多態是靜態的,主要是指方法的重載,它是根據參數列表的不同來區分不同的函數,通過編輯之后會變成兩個不同的函數,在運行時談不上多態。而運行時多態是動態的,它是通過動態綁定來實現的,也就是我們所說的多態性。

Java實現多態有三個必要條件:繼承、重寫、向上轉型。
繼承:在多態中必須存在有繼承關系的子類和父類。
重寫(覆寫):子類對父類中某些方法進行重新定義,在調用這些方法時就會調用子類的方法。(重載不可以,因為參數改變了)
向上轉型:在多態中需要將子類的引用賦給父類對象,只有這樣該引用才能夠具備技能調用父類的方法和子類的方法。
八、抽象類和接口
掌握抽象類的基本概念
掌握抽象類實例的應用
掌握接口的基本概念
熟悉借口實例的應用
了解抽象類的使用
(一)、抽象類
1、Java中有一種專門做父類的類,叫做抽象類,特殊之處在于其中含有抽象方法。抽象類必須用abstract class聲明
2、抽象方法就是只聲明未實現的方法,用abstract關鍵字聲明。
3、抽象類不能被實例化,也就是new關鍵字無法產生對象。
4、抽象類的子類必須覆寫所有的抽象方法后才能被實例化,否則這個子類依然是抽象類。
5、抽象類中聲明了構造方法的話,子類必須明確調用。
(二)、接口
1、接口定義:接口的成員必須初始化且均為常量,接口的方法必須全部是抽象方法。
2、使用接口打造類的過程,叫做接口的實現,一個類可以實現多個接口。class 類 implements 接口A,接口B。
3、一個接口可以繼承多個接口,這個和類不一樣。interface 子接口 extends 父接口1,父接口2,…
九、類的專題研究
掌握object類的基本概念
掌握方法的運用技巧
掌握關鍵字的作用與使用技巧
熟悉內部類的使用
了解匿名對象的使用
1、object類是所有類的父類。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、Date與Calendar類和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、異常可分為兩大類:Error和Exception。
5、程序拋出異常用throw,方法拋出異常用throws。
6、如果類的方法中用throws拋出了一個異常,那么在調用這個方法的時候,一定要用try…catch捕捉。
十三、類集框架
掌握類集接口的概念
掌握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接口:是構造類集框架的基礎,它聲明所有集合類都將擁有的核心方法,即所有集合類都實現了此接口。
常用方法:add、remove、isEmpty、iterator、size。
2、List接口:除了繼承Collection的方法外,還有兩個重要的方法:get(int index)獲得指定索引位置上的元素、set(int index,Object obj)將集合中指定索引為止的對象修改為指定的對象。
3、List接口的實現類ArrayList:以數組形式保存集合中的元素,可以隨機且快速地訪問集合中的元素。
4、List接口的實現類LinkedList:以鏈表形式保存集合中的元素,隨機訪問性能較差,但是插入元素和刪除元素性能出色。
以上兩種類都可以實例化List接口。
5、Set接口的實現類HashSet:使用散列進行儲存元素,不允許有重復元素。
6、Set接口的實現類TreeSet:同時實現SortedSet接口,在遍歷使用TreeSet類實現的Set集合中的元素,會默認將元素按照升序排列。
7、Map集合:用來存儲有映射關系的集合。實現類為HashMap和TreeMap。
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的,具體后面會詳細講解該配置文件。
浙公網安備 33010602011771號