Java知識(shí)點(diǎn)總結(jié)九篇_第1頁
Java知識(shí)點(diǎn)總結(jié)九篇_第2頁
Java知識(shí)點(diǎn)總結(jié)九篇_第3頁
Java知識(shí)點(diǎn)總結(jié)九篇_第4頁
Java知識(shí)點(diǎn)總結(jié)九篇_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java知識(shí)點(diǎn)總結(jié)(2)

Java知識(shí)點(diǎn)總結(jié)(2)「篇一」

4.1定義一個(gè)類

*使用class關(guān)鍵字定義類,注意類名大寫

*成員屬性:成員屬性不賦值會(huì)有默認(rèn)值(默認(rèn)值規(guī)則參考PPT)

*成員方法

*構(gòu)造方法:沒有任何返回值,名字與類名一樣,構(gòu)造方法的本意是用來初始

化對(duì)象(初始化對(duì)象的屬性值)

4.2實(shí)例化對(duì)象:Students=newStudent

*使用new+構(gòu)造方法實(shí)例化對(duì)象

*new在堆中開辟了對(duì)象的空間,并且給屬性賦上默認(rèn)值

*接下來調(diào)用構(gòu)造方法,執(zhí)行構(gòu)造方法中的代碼

*最后返回對(duì)象的引用

4.3區(qū)分引用類型與基本數(shù)據(jù)類型

*引用類型的變量在內(nèi)存中有兩塊區(qū)域,一塊是引用本身.另一塊是引用所指

向的對(duì)象

*基本數(shù)據(jù)類型在內(nèi)存中只有一塊空間:里面存著值

4.4如何操作對(duì)象:使用.操作符

*使用對(duì)象名.屬性操作對(duì)象的屬性(如:slu.age=18;)

*使用對(duì)象名.方法調(diào)用對(duì)象的方法(如:stu.study);

*this:每個(gè)對(duì)象都有this,this是指向本身的引用,代表本身

4.5.必須能夠獨(dú)立寫出Point3D的代碼(題目在PPT±)

5.訪問控制,方法定義與調(diào)用,重載,方法篁?qū)??1訪問控制5.L1

package包的使用

*使用package定義包:package只能放在代碼的第一行

"import:導(dǎo)包,可以到入包下所有importjava.io.*;可以導(dǎo)入具體的一個(gè)

類importjava.io.Reader;

*包的作用:1,分類:2,隱藏(封裝的作用),3,便于管理

*java本身提供了一些包:java,lang(核心類,此包如需要引

入),java.util(集合框架以及其他常用類),java,io(輸入輸

出),java,awt,javax.swing(圖形)

5.1.2繼承(簡單概念):使用extends關(guān)鍵字表示繼承

*子類繼承父類的所有屬性

*子類繼承父類除private(非同包的時(shí)候也除默認(rèn)的方法)外的所有方法

*子類對(duì)象擁有super引用,表示父類的引用,可以使用super明確的調(diào)用父類

的方法或?qū)傩?/p>

5.1.3四個(gè)訪問級(jí)別,從大到?。簆ublic,protected,默認(rèn),private

*注意訪問級(jí)別是針對(duì)類來講的,不是針對(duì)對(duì)象!

*注意類的訪問修飾符只能使用public或默認(rèn)

*學(xué)了訪問控制后:類的屬性都寫private,通過set/get方法對(duì)屬性進(jìn)行賦

值,取值

5.2重載與重寫

1.判斷是否是重載,或者是否是重寫,如果不是重寫或者重載,就不受重寫重

載規(guī)則的約束

5.2.1重載;一個(gè)類當(dāng)中,有方法名相同,參數(shù)不同的方法,稱為重載

*不能只改返回值:不能根據(jù)方法的返回進(jìn)行重載

5.2.2重寫:在繼承當(dāng)中,子類將父類的方法重新寫了一遍:重寫的方法與被

重寫的方法擁有相同的方法簽名(返回值類型,方法名,參數(shù)列數(shù))

禮重寫的方法能夠改變被重寫的方法的訪問級(jí)別,注意只能是相等或者擴(kuò)大

禮重寫的方法不能拋出比被重寫方法更多的異常,注意只能縮小異常的范圍

禮如果被重寫的方法是具體的,重寫之后不能改為abstract

5.3類與對(duì)象的生命周期

5.3.1類與對(duì)象的初始化過程:

*靜態(tài)屬性先初始化,而且僅僅初始化?次

*首先給靜態(tài)屬性進(jìn)行聲明,并賦默認(rèn)值,然后代碼從上往下執(zhí)行靜態(tài)代碼塊

或靜態(tài)賦值

*每創(chuàng)建一個(gè)對(duì)象,就先實(shí)例化成員屬性:首先給成員屬性聲明,賦默認(rèn)值,

然后.執(zhí)行賦值語句

*成員屬性初始化后再調(diào)用構(gòu)造方法

5.3.2垃圾回收機(jī)制

*java虛擬使用垃圾回收機(jī)制進(jìn)行垃圾回收

*垃圾回收本身是一個(gè)線程(當(dāng)內(nèi)存不夠用的時(shí)候,一般會(huì)進(jìn)行垃圾回收)

*垃圾回收不能通過程序來調(diào)用,僅僅能夠通過System,gc建議虛擬機(jī)進(jìn)行垃

圾回收

*當(dāng)進(jìn)行垃圾回收時(shí),會(huì)調(diào)用對(duì)象的finalize方法

5.4單例模式:一個(gè)類僅僅能有一個(gè)實(shí)例(設(shè)計(jì)模式的一種)

*構(gòu)造方法必須為私有的

*提供靜態(tài)的方法來獲得對(duì)象

*提供靜態(tài)的屬性,該屬性是該類的一個(gè)對(duì)象

6.繼承,抽象類,接口

6.1繼承:

6.1.1繼承的語法:使用extends關(guān)鍵字表示繼承

*子類繼承父類所有的屬性

*私有方法不能被繼承

*super關(guān)鍵字表示父類的引用,可以用super來調(diào)用父類的方法或?qū)傩?/p>

6.2.2繼承中的構(gòu)造方法:了解下面的知識(shí)點(diǎn)以及實(shí)例化對(duì)象時(shí)代碼的執(zhí)行過

*了?類的構(gòu)造過程必須調(diào)用其基類的構(gòu)造方法

*子類可以在自己的構(gòu)造過程中使用super(arg」ist)來調(diào)用基類的構(gòu)造方法

*如果調(diào)用super,必須寫在子類構(gòu)造方法的第一行

*可以使用this(argument」ist)調(diào)用本類的另外的構(gòu)造方法

*如果子類的構(gòu)造方法中沒有顯示的調(diào)用基類的構(gòu)造方法,系統(tǒng)默認(rèn)調(diào)用基類

無參數(shù)的構(gòu)造方法

*如果子類構(gòu)造方法中既沒有顯式的調(diào)用基類構(gòu)造方法,基類中又沒有無參數(shù)

的構(gòu)造方法,編譯出錯(cuò)

6.3.3對(duì)象的轉(zhuǎn)型

*一個(gè)基類的引用類型變量可以指向其子類的對(duì)象

*一個(gè)基類的引用不可以訪問其子類對(duì)象新增的成員

本可以使用instanceof關(guān)鍵字來判斷一個(gè)引用類型變量所指向的對(duì)象是否是

制定的類型

*子類的對(duì)象可以當(dāng)作基類的對(duì)象來使用稱作向上轉(zhuǎn)型,反之稱為向下轉(zhuǎn)型

*子類可以當(dāng)成父類來使用,無需顯示轉(zhuǎn)換

*父類引用轉(zhuǎn)換為子類引用要進(jìn)行強(qiáng)制轉(zhuǎn)換

*注意:不兼容的類型之間不能進(jìn)行相互轉(zhuǎn)換(只有具有直接或間接父子關(guān)系的

類才是兼容的類型),否則編譯時(shí)會(huì)報(bào)錯(cuò)

*注意:兼容類型之間的轉(zhuǎn)換要看對(duì)象的實(shí)際類型,因此向卜轉(zhuǎn)化時(shí)最好先用

instanceof來判斷是否是某個(gè)類型,在轉(zhuǎn)換,以免報(bào)報(bào)錯(cuò)

6.4.4多態(tài):也稱運(yùn)行時(shí)綁定:一般是指父類的引用指向子類對(duì)象,通過父類

的引用調(diào)用被子類重寫的方法,這個(gè)時(shí)候執(zhí)行的是子類的方法

*一句話總結(jié)多態(tài):對(duì)象實(shí)際是什么類型就調(diào)用什么類型的方法

*多態(tài)成立的條件:1,要有繼承。2,要有重寫。3,必須有父類引用指向子類

對(duì)象。

6.2抽象類:用abstract修飾的類稱為抽象類(抽象的本意是不具體)

1.抽象方法不能有方法體

2.抽象類不能被實(shí)例化。

3.含有抽象方法的類必須被聲明為抽象類。

4.子類繼承抽象類,必須被重寫父類的抽象方法,否則本身也必須被聲明為抽

象類

5.抽象類中的方法和屬性沒有其他規(guī)則來約束,抽象類中沒有抽象的方法是可

以的,抽象類中可以有非抽象的方法和屬性

6.3static:靜態(tài)關(guān)鍵字

6.3.Istalic屬性:在類中,用sialic申明的成員變量叫靜態(tài)變量,他為該

類的公用變量,在第一使用時(shí)被初始化,對(duì)于該類的所有對(duì)象來說,static成員

變量只有一份

6.3.2sialic方法:用static聲明的方法為靜態(tài)方法,在調(diào)用該方法時(shí),不

會(huì)將對(duì)象的引用傳遞給它,所以static方法中不可以訪問非static的成員。

*靜態(tài)方法中不能訪問非靜態(tài)成員

*靜態(tài)成員方法沒有this引用

*可以通過類名(不需要實(shí)例化)或?qū)ο笠脕碓L問靜態(tài)成員

6.4final關(guān)鍵字:

final表示最終的意思

*final的變量的值不能夠被改變

"final的成員變量

"final的局部變量(形參)

*final的方法不能夠被重寫

*final的類不能夠被繼承

6.5接口:interface

1.使用interface定義一個(gè)接口,使用implements實(shí)現(xiàn)一個(gè)接口

2.接口中的屬性只能為publicstaticfinal類型(靜態(tài)常量)

3.接口中的方法只能為publicabslracl類型

4.一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)類

5.接口也可以繼承接口

7.異常處理

java的異常處理機(jī)制

異常的關(guān)鍵字Exception

try,catch,finally,throw,throws關(guān)鍵字

7.1什么是異常,為什么要引入異常

*java程序運(yùn)行時(shí)已錯(cuò),java就拋出異常,程序立即終止(也可以說程序崩潰)

*java將錯(cuò)誤信息封裝在異常對(duì)象里拋出

*學(xué)會(huì)查看異常的信息:異常的名字,異常的信息、,程序拋異常的位置

*java引入異常處理機(jī)制,是防止程序出錯(cuò)崩潰

7.2java的異常的分類

*java的拋出的錯(cuò)誤用異常類來表示,java擁有一個(gè)異常體系(有許多異常類,

并旦相互之間具有關(guān)系;

*java里面的所有異常都是Throwable的了?類

*java虛擬機(jī)的異常是Error的子類,一般不需進(jìn)行處理(因?yàn)闆]法進(jìn)行史理)

*除Error之外還有Exception,Exception分為兩類:RuntimeException(運(yùn)

行時(shí)異常),被檢查異常(除了RuntimeException都是被檢查異常)

"RuntimeException(運(yùn)行時(shí)異常,可以不捕獲或聲明拋出,編譯不會(huì)報(bào)錯(cuò),一

般是控制不當(dāng)造成的),可檢查異常(必須捕獲或聲明拋出,這類異常通常需要檢測

并處理,一般使用資源時(shí)造成的)

*幾個(gè)常見的異常:NulIPointerException(空指

針),IndcxOutOfBoundsExccption(索引越界),SQLExccption(數(shù)據(jù)庫異

常),lOException(文件異常)

7.3異常的處理方式

*使用try,catch,finally進(jìn)行處理

*不處理,使用throws,throw交給別人來處理

7.4try,catch,finally中程序的運(yùn)行過程

*嘗試執(zhí)行try里面的語句

*一次運(yùn)行當(dāng)中最多執(zhí)行一個(gè)catch塊,如果沒有拋出異常,catch塊不執(zhí)行

/finally總會(huì)執(zhí)行,不管有沒有拋出異常

*如果try塊里面有return語句,finally也會(huì)執(zhí)行

7.5區(qū)分RuntimeException與被檢查異常

*F^untimcException不需要捕獲或聲明拋出(但是如果你捕獲或聲明拋出也不

會(huì)有錯(cuò))

*被檢查異常必須要捕獲或者聲明拋出

Java知識(shí)點(diǎn)總結(jié)(2)「篇二」

1對(duì)象的初始化

(1)非靜態(tài)對(duì)象的初始化在創(chuàng)建對(duì)象時(shí),對(duì)象所在類的所有數(shù)據(jù)成員會(huì)首先進(jìn)

行初始化?;绢愋停海簄t型,初始化為0。如果為對(duì)象:這些對(duì)象會(huì)按順序初始

化。※在所有類成員初始化完成之后,才調(diào)用本類的構(gòu)造方法創(chuàng)建對(duì)象。構(gòu)造方法

的作用就是初始化。(2;靜態(tài)對(duì)象的初始化程序中主類的靜態(tài)變量會(huì)在main方法

執(zhí)行前初始化。不僅第一次創(chuàng)建對(duì)象時(shí),類中的所有靜態(tài)變量都初始化,并且第一

次訪問某類(注意此時(shí)未創(chuàng)建此類對(duì)象)的靜態(tài)對(duì)象時(shí),所有的靜態(tài)變量也要按它們

在類中的順序初始化。

2繼承時(shí),對(duì)象的初始化過程

(1)主類的超類由高到低按順序初始化靜態(tài)成員,無論靜態(tài)成員是否為

privateo(2)主類靜態(tài)成員的初始化。(3)主類的超類由高到低進(jìn)行默認(rèn)構(gòu)造方

法的調(diào)用。注意,在調(diào)用每一個(gè)超類的默認(rèn)構(gòu)造方法前,先進(jìn)行對(duì)此超類進(jìn)行非靜

態(tài)對(duì)象的初始化。(4)主類非靜態(tài)成員的'初始化。(5)調(diào)用主類的構(gòu)造方法。

3關(guān)于構(gòu)造方法

(1)類可以沒有構(gòu)造方法,但如果有多個(gè)構(gòu)造方法,就應(yīng)該要有默認(rèn)的構(gòu)造方

法,否則在繼承此類時(shí),需要在子類中顯式調(diào)用父類的某一個(gè)非默認(rèn)的構(gòu)造方法

了。(2)在一個(gè)構(gòu)造方法中,只能調(diào)用一次其他的構(gòu)造方法,并且調(diào)用構(gòu)造方法的

語句必須是第一條語句。

4有關(guān)public>private和protected

(1)無public修飾的類,可以被其他類訪問的條件是:a.兩個(gè)類在同一文件

中,b.兩個(gè)類在同一文件夾中,c.兩個(gè)類在同一軟件包中。(2)protected:繼承

類和同一軟件包的類可訪問。(3)如果構(gòu)造方法為private,那么在其他類中不能

創(chuàng)建該類的對(duì)象。

5抽象類

(1)抽象類不能創(chuàng)建對(duì)象。(2)如果一個(gè)類中一個(gè)方法為抽象方法,則這個(gè)類

必須為abstract抽象類。(3)繼承抽象類的類在類中必須實(shí)現(xiàn)抽象類中的抽象方

法。(4)抽象類中可以有抽象方法,也可有非抽象方法。抽象方法不能為

privatco(5)間接繼承抽象類的類可以不給出抽象方法的定義。

6final關(guān)鍵字

(1)一個(gè)對(duì)象是常量,不代表不能轉(zhuǎn)變對(duì)象的成員,仍可以其成員進(jìn)行操作。

(2)常量在使用前必須賦值,但除了在聲明的同時(shí)初始化外,就只能在構(gòu)造方法中

初始化。(3)final修飾的方法不能被重置(在子類中不能出現(xiàn)同名方法)。

(4)如果聲明一個(gè)類為final,則所有的方法均為final,無論其是否被

final修飾,但數(shù)據(jù)成員可為final也可不是。

7接口interface(用implements來實(shí)現(xiàn)接口)

(1)接口中的所有數(shù)據(jù)均為static和final即靜態(tài)常量。盡管可以不用這兩

個(gè)關(guān)鍵字修飾,但必須給常量賦初值。(2)接口中的方法均為public,在實(shí)現(xiàn)接

口類中,實(shí)現(xiàn)方法必須可public關(guān)鍵字。(3)如果使用public來修飾接口,則接

口必須與文件名相同。

8多重繼承

(1)一個(gè)類繼承了一個(gè)類和接口,那么必須將類寫在前面,接口寫在后面,接

口之間用逗號(hào)分隔。(2:接口之間可多重繼承,注意使用關(guān)鍵字extends。(3)一

個(gè)類雖只實(shí)現(xiàn)了一個(gè)接口,但不僅要實(shí)現(xiàn)這個(gè)接口的所有方法,還要實(shí)現(xiàn)這個(gè)接口

繼承的接口的方法,接口中的所有方法均須在類中實(shí)現(xiàn)。

9接口的嵌入

(1)接口嵌入類中,可以使用private修飾。此時(shí),接口只能在所在的類中實(shí)

現(xiàn),其他類不能訪問。12)嵌入接口中的接口一定要為public。

10類的嵌入

(1)類可以嵌入另一個(gè)類中,但不能嵌入接口中。(2)在靜態(tài)方法或其他方法

中,不能直接創(chuàng)建內(nèi)部類對(duì)象,需通過手段來取得。手段有兩種:classA{class

B{}BgetB(Bb=newBreturnb;}}staticvoidm{Aa=new

AA.Bab=a.getB//或者是A.Bab=a.newB}(3)一個(gè)類繼承了另一個(gè)類的內(nèi)

部類,因?yàn)槌愂莾?nèi)部類,而內(nèi)部類的構(gòu)造方法不能自動(dòng)被調(diào)用,這樣就需要在子

類的構(gòu)造方法中明確的調(diào)用超類的構(gòu)造方法。接上例:classCextends

A.B{C{newAsuper//這一句就實(shí)現(xiàn)了對(duì)內(nèi)部類構(gòu)造方法的調(diào)

用。}}構(gòu)造方法也可這樣寫:C(Aa){a.super}〃使用這個(gè)構(gòu)

造方法創(chuàng)建對(duì)象,要寫成Cc=newC(a);a是A的對(duì)象。

11異常類

JAVA中除了RunTincException類,其他異常均須捕獲或拋出。

Java知識(shí)點(diǎn)總結(jié)(2)「篇三」

java概述:

1991年Sun公司的JamesGosling(詹姆斯?高斯林)等人開始開發(fā)名稱為

Oak的語言,希望用于控制嵌入在有線電視交換盒、PDA等的微處理器;

1994年將Oak語言更名為Java;

Java的三種技術(shù)架構(gòu):

JAVAEE:JavaPlatformEnterpriseEdition,開發(fā)企業(yè)環(huán)境卜的應(yīng)用程序,

主要針對(duì)web程序開發(fā);

JAVASE:JavaPlatformStandardEdition,完成桌面應(yīng)用程序的開發(fā),是其

它兩者的基礎(chǔ):

JAVAME:JavaPlatformMicroEdition,開發(fā)電子消費(fèi)產(chǎn)品和嵌入式設(shè)備,

如手機(jī)中的程序;

RJDK:JavaDevelopmentKit,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)工具

和jre<>

2>JRE:JavaRuntimeEnvironment,java程序的運(yùn)行環(huán)境,java運(yùn)行的所

需的類庫+JVM(java虛擬機(jī))0

3、配置環(huán)境變量:讓javaJdkin目錄下的工具,可以在任意目錄下運(yùn)行,原

因是,將該工具所在目錄告訴了系統(tǒng),當(dāng)使用該工具時(shí),由系統(tǒng)幫我們?nèi)フ抑付ǖ?/p>

目錄。

環(huán)境變量的配置:

1):永久配置方式:JAVA_HOME=%安裝路徑%Javajdk

path=%JAVAJIOME%m

2):臨時(shí)配置方式:setpath=%path%;C:ProgramFilesjavajdkin

特點(diǎn):系統(tǒng)默認(rèn)先去當(dāng)前路徑下找要執(zhí)行的程序,如果沒有,再去path中設(shè)

置的路徑下找。

classpath的配置:

1):永久配置方式:classpath=;c;e:

2):臨時(shí)配置方式:setclasspath=;c;e:

注意:在定義classpath環(huán)境變量時(shí),需要注意的情況

如果沒有定義環(huán)境變量classpath,java啟動(dòng)jvm后,會(huì)在當(dāng)前目錄下查找要

運(yùn)行的類文件;

如果指定了classpath,那么會(huì)在指定的目錄下查找要運(yùn)行的類文件。

還會(huì)在當(dāng)前目錄找嗎?兩種情況:

1):如果classpath的值結(jié)尾處有分號(hào),在具體路徑中沒有找到運(yùn)行的類,

會(huì)默認(rèn)在當(dāng)前目錄再找一次。

2):如果classpath的值結(jié)果出沒有分號(hào),在具體的路徑中沒有找到運(yùn)行的

類,不會(huì)再當(dāng)前目錄找。

一般不指定分號(hào),如果沒有在指定目錄下找到要運(yùn)行的類文件,就報(bào)錯(cuò),這樣

可以調(diào)試程序。

4、javac命令和java命令做什么事情呢?

要知道java是分兩部分的:一個(gè)是編譯,一個(gè)是運(yùn)行。

javac:負(fù)責(zé)的是編譯的部分,當(dāng)執(zhí)行javac時(shí),會(huì)啟動(dòng)java的編譯器程序。

對(duì)指定擴(kuò)展名的.java文件進(jìn)行編譯。生成了jvm可以識(shí)別的字節(jié)碼文件。也就

是class文件,也就是java的運(yùn)行程序。

java:負(fù)責(zé)運(yùn)行的部分.會(huì)啟動(dòng)jvm.加載運(yùn)行時(shí)所需的類庫,并對(duì)class文件

進(jìn)行執(zhí)行。

一個(gè)文件要被執(zhí)行,必須要有一個(gè)執(zhí)行的起始點(diǎn),這個(gè)起始點(diǎn)就是main函數(shù)。

java語法基礎(chǔ):

1、關(guān)鍵字:其實(shí)就是某種語言賦予了特殊含義的單詞。

保留字:其實(shí)就是還沒有賦予特殊含義,但是準(zhǔn)備日后要使用過的單詞。

2、標(biāo)示符:其實(shí)就是在程序中自定義的名詞。比如類名,變量名,函數(shù)名。

包含0-9、a-z、$、—;

注意:

1),數(shù)字不可以開頭。

2),不可以使用關(guān)鍵字。

3、常量:是在程序中的不會(huì)變化的數(shù)據(jù)。

4、變量:其實(shí)就是內(nèi)存中的一個(gè)存儲(chǔ)空間,用于存儲(chǔ)常量數(shù)據(jù)。

作用:方便于運(yùn)算。因?yàn)橛行?shù)據(jù)不確定。所以確定該數(shù)據(jù)的名詞和存儲(chǔ)空

問。

特點(diǎn):變量空間可以重復(fù)使用。

什么時(shí)候定義變量?只要是數(shù)據(jù)不確定的時(shí)候,就定義變量。

變量空間的開辟需要什么要素呢?

1、這個(gè)空間要存儲(chǔ)什么數(shù)據(jù)?數(shù)據(jù)類型。

2、這個(gè)空間叫什么名字啊?變量名稱。

3、這個(gè)空間的第一次的數(shù)據(jù)是什么?變量的初始化值。

變量的作用域和生存期:

變量的作用域:

作用域從變量定義的位置開始,到該變量所在的那對(duì)大括號(hào)結(jié)束:

生命周期:

變量從定義的位置開始就在內(nèi)存中活了;

變量到達(dá)它所在的作用域的時(shí)候就在內(nèi)存中消失了;

數(shù)據(jù)類型:

1):基本數(shù)據(jù)類型:byte、shortsini、long、float、double>char、

boolean

2):引用數(shù)據(jù)類型:數(shù)組、類、接口。

級(jí)別從低到高為:byte,char,short(這三個(gè)平級(jí))-->int-->float-->long--

>double

自動(dòng)類型轉(zhuǎn)換:從低級(jí)別到高級(jí)別,系統(tǒng)自動(dòng)轉(zhuǎn)的;

強(qiáng)制類型轉(zhuǎn)換:什么情況下使用?把一個(gè)高級(jí)別的數(shù)賦給一個(gè)別該數(shù)的級(jí)別低

的變量;

運(yùn)算符號(hào):

1)、算術(shù)運(yùn)算符。

+-*/%機(jī)任何整數(shù)模2不是。就是1,所以只要改變被模數(shù)就可以實(shí)現(xiàn)開

關(guān)運(yùn)算。

+:連接符。

++,一

2)、賦值運(yùn)算符。

=+=-=*=/=%=

3)、比較運(yùn)算符。

特點(diǎn):該運(yùn)算符的特點(diǎn)是:運(yùn)算完的結(jié)果,要么是true,要么是false。

4)、邏輯運(yùn)算符。

&|!&&|

邏輯運(yùn)算符除了!外都是用于連接兩個(gè)boolean類型表達(dá)式。

&:只有兩邊都為true結(jié)果是true。否則就是false。

I:只要兩邊都為false結(jié)果是false,否則就是true

八:異或:和或有點(diǎn)不一樣。

兩邊結(jié)果一樣,就為false。

兩邊結(jié)果不一樣,就為true。

&和&&區(qū)別:&:無論左邊結(jié)果是什么,右邊都參與運(yùn)算。

&&:短路與,如果左邊為false,那么右邊不參數(shù)與運(yùn)算。

I和II區(qū)別:I:兩邊都運(yùn)算。

II:短路或,如果左邊為true,那么右邊不參與運(yùn)算。

5)、位運(yùn)算符:用于操作二進(jìn)制位的運(yùn)算符。

&r

??>〉>(無符號(hào)右移)

練習(xí):對(duì)兩個(gè)變量的數(shù)據(jù)進(jìn)行互換。不需要第三方變量。

inta=3,b=5;—>b=3,a=5;

a=a+b;a=8:

b=a-b;b=3:

a=a-b;a=5:

a=a八b;//

b=a-b;//b=a八b-b=a

a=a"b;//a=a"b"a=b;

練習(xí):高效的算出2*8=2?3;

5、語句。

Ifswitchdowhiewhilefor

這些語句什么時(shí)候用?

1)>當(dāng)判斷固定個(gè)數(shù)的值的時(shí)候,可以使用if,也可以使用switch。

但是建議使用switch,效率相對(duì)較高。

switch(變量){

case值:要執(zhí)行的語句;break;

default:要執(zhí)行的語句;

)

工作原理:用小括號(hào)中的變量的值依次和case后面的值進(jìn)行對(duì)比,和哪個(gè)

case后面的值相同了

就執(zhí)行哪個(gè)case后面的語句,如果沒有相同的則執(zhí)行default后面的語句;

細(xì)節(jié):1):break是可以省略的,如果省略了就一直執(zhí)行到遇到break為

止;

2):switch后面的小括號(hào)中的變量應(yīng)該是byte,char,short,int四種類型中

的一種;

3):default可以寫在switch結(jié)構(gòu)中的任意位置;如果將default語句放在

了第一行,則不管expression與case中的value是否匹配,程序會(huì)從default開

始執(zhí)行直到第一個(gè)break出現(xiàn)。

2)、當(dāng)判斷數(shù)據(jù)范圍,獲取判斷運(yùn)算結(jié)果boolean類型時(shí),需要使用if,

3)、當(dāng)某些語句需要執(zhí)行很多次時(shí),就用循環(huán)結(jié)構(gòu)。

while和for可以進(jìn)行互換。

區(qū)別在于:如果需要定義變量控制循環(huán)次數(shù)。建議使用for。因?yàn)閒or循環(huán)完

畢,變量在內(nèi)存中釋放。

break:作用于switch,和循環(huán)語句,用于跳出,或者稱為結(jié)束。

break語句單獨(dú)存在時(shí),下面不要定義其他語句,因?yàn)閳?zhí)行不到,編譯會(huì)失

敗。當(dāng)循環(huán)嵌套時(shí),break只跳出當(dāng)前所在循環(huán)。要跳出嵌套中的外部循環(huán),只要

給循環(huán)起名字即可,這個(gè)名字稱之為標(biāo)號(hào)。

continue:只作用于循環(huán)結(jié)構(gòu),繼續(xù)循環(huán)用的。

作用:結(jié)束本次循環(huán),繼續(xù)下次循環(huán)。該語句單獨(dú)存在時(shí),下面不可以定義語

句,執(zhí)行不到。

6、函數(shù):為了提高代碼的復(fù)用性,可以將其定義成一個(gè)單獨(dú)的功能,該功能

的體現(xiàn)就是java中的函數(shù)。函數(shù)就是體現(xiàn)之」

java中的函數(shù)的定義格式:

修飾符返回值類型函數(shù)名(參數(shù)類型形式參數(shù)1,參數(shù)類型形式參數(shù)1,)(

執(zhí)行語句;

return返回值;

當(dāng)函數(shù)沒有具體的.返回值時(shí),返回的返回值類型用void關(guān)鍵字表示。

如果函數(shù)的返回值類型是void時(shí);return語句可以省略不寫的,系統(tǒng)會(huì)幫你

自動(dòng)加上。

return的作用:結(jié)束函數(shù)。結(jié)束功能。

如何定義一個(gè)函數(shù)?

函數(shù)其實(shí)就是一個(gè)功能,定義函數(shù)就是實(shí)現(xiàn)功能,通過兩個(gè)明確來完成:

1)、明確該功能的運(yùn)算完的結(jié)果,其實(shí)是在明確這個(gè)函數(shù)的返回值類型。

2)、在實(shí)現(xiàn)該功能的過程中是否有未知內(nèi)容參與了運(yùn)算,其實(shí)就是在明確這

個(gè)函數(shù)的參數(shù)列表(參數(shù)類型&參數(shù)個(gè)數(shù))。

函數(shù)的作用:

1)、用于定義功能。

2)、用于封裝代碼提高代碼的復(fù)用性。

注意:函數(shù)中只能調(diào)用函數(shù),不能定義函數(shù)。

主函數(shù):

1)、保證該類的獨(dú)立運(yùn)行。

2)、因?yàn)樗浅绦虻娜肟凇?/p>

3)、因?yàn)樗诒籮vm調(diào)用。

函數(shù)定義名稱是為葉么呢?

答:1)、為了對(duì)該功能進(jìn)行標(biāo)示,方便于調(diào)用。

2)、為了通過名稱就可以明確函數(shù)的功能,為了增加代碼的閱讀性。

重載的定義是:在一個(gè)類中,如果出現(xiàn)了兩個(gè)或者兩個(gè)以上的同名函數(shù),只要

它們的參數(shù)的個(gè)數(shù),或者參數(shù)的類型不同,即可稱之為該函數(shù)重載了。

如何區(qū)分重載:當(dāng)函數(shù)同名時(shí),只看參數(shù)列表。和返回值類型沒關(guān)系。

7、數(shù)組:用于存儲(chǔ)同一類型數(shù)據(jù)的一個(gè)容器。好處:可以對(duì)該容器中的數(shù)據(jù)

進(jìn)行編號(hào),從0開始。數(shù)組用于封裝數(shù)據(jù),就是一個(gè)具體的實(shí)體。

如何在java中表現(xiàn)一個(gè)數(shù)組呢?兩種表現(xiàn)形式。

1)、元素類型口變量名二new元素類型[元素的個(gè)數(shù)];

2)、元素類型口變量名={元素1,元素2.};

元素類型口變量名二new元素類型□{元素1,元素2.};

Java知識(shí)點(diǎn)總結(jié)(2)「篇四」

1.Java中的原始數(shù)據(jù)類型都有哪些,它們的大小及對(duì)應(yīng)的封裝類是什么?

bvte---1byte----Bvte

short---2bytes---Short

int---4bytes----Integer

long-----8bytes-----Long

float-----4bytes-----Float

double-----8bytes-----Doub1e

char-----2bytes-----Character

boolean

boolean數(shù)據(jù)類型非true即false。

這個(gè)數(shù)據(jù)類型表示1bit,但是它的大小并沒芍精確定義。

《Java虛擬機(jī)規(guī)范》中如是說:“雖然定義了boolean這種數(shù)據(jù)類型,但是

只對(duì)它提供了非常有限的支持。在Java虛擬機(jī)中沒有任何供boolean值專用的字

節(jié)碼指令,Java語言表達(dá)式所操作的boolean值,在編譯之后都使用Java虛擬機(jī)

中的int數(shù)據(jù)類型來代替,而boolean數(shù)組將會(huì)被編碼成Java虛擬機(jī)的byte數(shù)

組,每個(gè)元素boolean元素占8位”。這樣我們可以得出boolean類型單獨(dú)使用是

4個(gè)字節(jié),在數(shù)組中又是1個(gè)字節(jié)。

那虛擬機(jī)為什么要用int來代替boolean呢?為什么不用byte或short,這

樣不是更節(jié)省內(nèi)存空間嗎?

實(shí)際上,使用int的原因是,對(duì)于當(dāng)下32位的CPU來說,一次進(jìn)行32位的數(shù)

據(jù)交換更加高效。

綜上,我們可以知道:官方文檔對(duì)boolean類型沒有給出精確的定義,《Java

虛擬機(jī)規(guī)范》給出了“單獨(dú)時(shí)使用4個(gè)字節(jié),boolean數(shù)組時(shí)1個(gè)字節(jié)”的定義,

具體還要看虛擬機(jī)實(shí)現(xiàn)是否按照規(guī)范來,所以1個(gè)字節(jié)、4個(gè)字節(jié)都是有可能的。

這其實(shí)是一種時(shí)空權(quán)衡。boolean類型的封裝類是Boolean。

2.談一談”="與"equals〃的區(qū)別。

《ThinkinJava))中說:“關(guān)系操作符生成的是一個(gè)boolean結(jié)果,它們計(jì)

算的是操作數(shù)的值之間的關(guān)系”?!ǘㄅ袛嗟氖莾蓚€(gè)對(duì)象的內(nèi)存地址是否一樣,

適用于原始數(shù)據(jù)類型和枚舉類型(它們的變量存儲(chǔ)的是值本身,而引用類型變量存

儲(chǔ)的是引用);equals是Object類的方法,Object對(duì)它的實(shí)現(xiàn)是比較內(nèi)存地址,

我們可以重寫這個(gè)方法來自定義“相等”這個(gè)概念。比如類庫中的String、Date

等類就對(duì)這個(gè)方法進(jìn)行了重寫。綜上,對(duì)于枚舉類型和原始數(shù)據(jù)類型的相等性比

較,應(yīng)該使用〃==〃:對(duì)于引用類型的相等性比較,應(yīng)該使用equals方法。

3.Java中的四種引用及其應(yīng)用場景是什么?

強(qiáng)引用:通常我們使用new操作符創(chuàng)建一個(gè)對(duì)象時(shí)所返回的引用即為強(qiáng)引用

軟引用:若一個(gè)對(duì)象只能通過軟引用到達(dá),那么這個(gè)對(duì)象在內(nèi)存不足時(shí)會(huì)被回

收,可用于圖片緩存中,內(nèi)存不足時(shí)系統(tǒng)會(huì)自動(dòng)回收不再使用的Bitmap

弱引用:若一個(gè)對(duì)象只能通過弱引用到達(dá),那么它就會(huì)被回收(即使內(nèi)存充

足),同樣可用于圖片緩存中,這時(shí)候只要Bitmap不再使用就會(huì)被回收

虛引用:虛引用是Java中最“弱”的引用,通過它甚至無法獲取被引用的對(duì)

象,它存在的唯一作用就是當(dāng)它指向的對(duì)象回收時(shí),它本身會(huì)被加入到引用隊(duì)列

中,這樣我們可以知道它指向的對(duì)象何時(shí)被銷毀。

4.object中定義了哪些方法?

cloncequalshashCodctoStringnotifynotifyAllwaitfinalizcgctClass

5.hashCode的作用是什么?

請(qǐng)參見散列表的基本原理與實(shí)現(xiàn)

6.ArrayList,LinkedList,Vector的區(qū)別是什么?

ArrayList:內(nèi)部采用數(shù)組存儲(chǔ)元素,支持高效隨機(jī)訪問,支持動(dòng)態(tài)調(diào)整大小

LinkedList:內(nèi)部采用鏈表來存儲(chǔ)元素,支持快速插入/刪除元素,但不支持

高效地隨機(jī)訪問

Vector:可以看作線程安全版的ArrayList

7.String,StringBuilder,StringBuffer的區(qū)別是什么?

String:不可變的字符序列,若要向其中添加新字符需要?jiǎng)?chuàng)建一個(gè)新的

String對(duì)象

StringBuilder:可變字符序列,支持向其中添加新字符(無需創(chuàng)建新對(duì)象)

StringBuffer:可以看作線程安全版的StringBuilder

8.Map,Set,List,Queue>Stack的特點(diǎn)及用法。

Map:Java中存儲(chǔ)鍵值對(duì)的數(shù)據(jù)類型都實(shí)現(xiàn)了這個(gè)接口,表示“映射表”,支

持的兩個(gè)核心操作是get(Objectkey)以及pul(Kkey,Vvalue),分別用來獲取

鍵對(duì)應(yīng)的值以及向映射表中插入鍵值對(duì)。

Set:實(shí)現(xiàn)了這個(gè)接口的集合類型中不允許存在重復(fù)的元素,代表數(shù)學(xué)意義上

的“集合”。它所支持的核心操作有add(Ee),remove(Objecto),

contains(Object。),分別用于添加元素,刪除元素以及判斷給定元素是否存在于

集中。

List:Java中集合框架中的列表類型都實(shí)現(xiàn)了這個(gè)接口,表示一種有序序

列。支持get(intindex),add(Ee)等操作。

Queue:Java集合框架中的隊(duì)列接口,代表了“先進(jìn)先出”隊(duì)列。支持add(E

element),remove等操作。

Stack:Java集合框架中表示堆棧的數(shù)據(jù)類型,堆棧是一種“后進(jìn)先出”的數(shù)

據(jù)結(jié)構(gòu)。支持push(Eitem),pop等操作。

更詳細(xì)的說明請(qǐng)參考官方文檔,對(duì)相關(guān)數(shù)據(jù)結(jié)構(gòu)不太熟悉的同學(xué)可以參考《算

法導(dǎo)論》或其他相關(guān)書籍。

9.HashMap和HashTable的區(qū)別

HashTable是線程安全的,而HashMap不是

HashMap中允許存在null鍵和null值,而HashTable中不允許

10.HashMap的實(shí)現(xiàn)原理

簡單的說,HashMap的底層實(shí)現(xiàn)是“基于拉鏈法的散列表”。

詳細(xì)分析請(qǐng)參考深入解析HashMap>HashTable

11.ConcurrentHashMap的實(shí)現(xiàn)原理

ConcurrentHashMap是支持并發(fā)讀寫的HashMap,它的特點(diǎn)是讀取數(shù)據(jù)時(shí)無需

加鎖,寫數(shù)據(jù)時(shí)可以保證加鎖粒度盡可能的小。由于其內(nèi)部采用“分段存儲(chǔ)”,只

需對(duì)要進(jìn)行寫操作的數(shù)據(jù)所在的“段”進(jìn)行加鎖。關(guān)于ConcurrentHashMap底層實(shí)

現(xiàn)的詳細(xì)分析請(qǐng)參考Java并發(fā)編程:并發(fā)容器之ConcurentHashMap

12.TreeMap,LinkedHashMap,HashMap的區(qū)別是什么?

HashMap的底層實(shí)現(xiàn)是散列表,因此它內(nèi)部存儲(chǔ)的元素是無序的;

TreeMap的底層實(shí)現(xiàn)是紅黑樹,所以它內(nèi)部的元素的有序的。排序的依據(jù)是自

然序或者是創(chuàng)建TreeMap時(shí)所提供的比較器(Comparator)對(duì)象。

LinkedHashMap可以看作能夠記住插入元素的順序的HashMapo

13.Collection與Collections的'區(qū)別是什么?

Collection是Java集合框架中的基本接口;

Collections是Java集合框架提供的一個(gè)工具類,其中包含了大量用于操作

或返回集合的靜態(tài)方法。

14.對(duì)于i(try-catch-finallyw,若try語句塊中包含“return”語句,

finally語句塊會(huì)執(zhí)行嗎?

會(huì)執(zhí)行。只有兩種情況finally塊中的語句不會(huì)被執(zhí)行:

調(diào)用了System.exit方法;

JVM“崩潰”了。

15.Java中的異常層次結(jié)構(gòu)

Java中的異常層次結(jié)構(gòu)如下圖所示:

我們可以看到Throwable類是異常層級(jí)中的基類。

Error類表示內(nèi)部錯(cuò)誤,這類錯(cuò)誤使我們無法控制的;Exception表示異常,

RuntimeException及其子類屬于未檢查異常,這類異常包括

ArrayTndexOutOfBoundsExceptionsNulIPointerException等,我們應(yīng)該通過條

件判斷等方式語句避免未檢查異常的發(fā)生。lOExccption及其子類屬于已檢查異

常,編譯器會(huì)檢查我們是否為所有可能拋出的已檢查異常提供了異常處理器,若沒

有則會(huì)報(bào)錯(cuò)。對(duì)于未檢查異常,我們無需捕獲(當(dāng)然Java也允許我們捕獲,但我

們應(yīng)該做的事避免未檢查異常的發(fā)生)。

16.Java面向?qū)ο蟮娜齻€(gè)特征與含義

三大特征:封裝、繼承、多態(tài)。詳細(xì)介紹請(qǐng)戳Java面向?qū)ο笕筇匦?/p>

17.Override,Overload的含義與區(qū)別

Override表示“重寫”,是子類對(duì)父類中同一方法的重新定義

Overload表示“重載”,也就是定義一個(gè)與己定義方法名稱相同但簽名不同

的新方法

18.接口與抽象類的區(qū)別

接口是一種約定,實(shí)現(xiàn)接口的類要遵循這個(gè)約定;

抽象類本質(zhì)上是一個(gè)類,使用抽象類的代價(jià)要比接口大。

接口與抽象類的對(duì)比如下:

抽象類中可以包含屬性,方法(包含抽象方法與有著具體實(shí)現(xiàn)的方法),常

量;接口只能包含常量和方法聲明。

抽象類中的方法和成員變量可以定義可見性(比如public、private等);而

接口中的方法只能為public(缺省為public)。

一個(gè)子類只能有一個(gè)父類(具體類或抽象類);而一個(gè)接口可以繼承一個(gè)多個(gè)

接口,一個(gè)類也可以實(shí)現(xiàn)多個(gè)接口。

子類中實(shí)現(xiàn)父類中的抽象方法時(shí),可見性可以大于等于父類中的;而接口實(shí)現(xiàn)

類中的接口方法的可見性只能與接口中相同(public)0

19.靜態(tài)內(nèi)部類與非靜態(tài)內(nèi)部類的區(qū)別

靜態(tài)內(nèi)部類不會(huì)持有外圍類的引用,而非靜態(tài)內(nèi)部類會(huì)隱式持有外圍類的一個(gè)

引用。

20.Java中多態(tài)的實(shí)現(xiàn)原理

所謂多態(tài),指的就是父類引用指向子類對(duì)象,調(diào)用方法時(shí)會(huì)調(diào)用子類的實(shí)現(xiàn)而

不是父類的實(shí)現(xiàn)。多態(tài)的實(shí)現(xiàn)的關(guān)鍵在于“動(dòng)態(tài)綁定”。詳細(xì)介紹請(qǐng)戳Java動(dòng)態(tài)

綁定的內(nèi)部實(shí)現(xiàn)機(jī)制

21.簡述Java中創(chuàng)建新線程的兩種方法

繼承Thread類(假設(shè)子類為MyThread),并重寫run方法,然后new一個(gè)

MyThread對(duì)象并對(duì)其調(diào)用start即可啟動(dòng)新線程。

實(shí)現(xiàn)Runnable接口(假設(shè)實(shí)現(xiàn)類為MyRurmable),而后將MyRunnable對(duì)象

作為參數(shù)傳入Thread構(gòu)造器,在得到的Thread對(duì)象上調(diào)用start方法即可。

22.簡述Java中進(jìn)行線程同步的方法

volatile:JavaMemoryModel保證了對(duì)同一個(gè)volatile變量的寫happens

before對(duì)它的讀;

synchronized:可以來對(duì)一個(gè)代碼塊或是對(duì)一個(gè)方法上鎖,被“鎖住”的地方

稱為臨界區(qū),進(jìn)入臨界區(qū)的線程會(huì)獲取對(duì)象的monitor,這樣其他嘗試進(jìn)入臨界區(qū)

的線程會(huì)因無法獲取monitor而被阻塞。由于等待另一個(gè)線程釋放monitor而被阻

塞的線程無法被中斷。

ReentrantLock:嘗試獲取鎖的線程可以被中斷并可以設(shè)置超時(shí)參數(shù)。

Java知識(shí)點(diǎn)總結(jié)(2)「篇五」

1)、保證該類的獨(dú)立運(yùn)行。

2)、因?yàn)樗浅绦虻娜肟凇?/p>

3)、因?yàn)樗诒籮vm調(diào)用。

函數(shù)定義名稱是為葉么呢?

答:1)、為了對(duì)該功能進(jìn)行標(biāo)示,方便于調(diào)用。

2)、為了通過名稱就可以明確函數(shù)的功能,為了增加代碼的閱讀性。

重我的定義是:在一個(gè)類中,如果出現(xiàn)了兩個(gè)或者兩個(gè)以上的同名函數(shù),只要

它們的參數(shù)的個(gè)數(shù),或者參數(shù)的類型不同,即可稱之為該函數(shù)重載了。

如何區(qū)分重載:當(dāng)函數(shù)同名時(shí),只看參數(shù)列表。和返回值類型沒關(guān)系。

7、數(shù)組;用于存儲(chǔ)同一類型數(shù)據(jù)的一個(gè)容器。好處;可以對(duì)該容器中的數(shù)據(jù)

進(jìn)行編號(hào),從0開始。數(shù)組用于封裝數(shù)據(jù),就是一個(gè)具體的實(shí)體。

如何在java中表現(xiàn)?個(gè)數(shù)組呢?兩種表現(xiàn)形式。

1)、元素類型口變量名=new元素類型[元素的個(gè)數(shù)];

2)、元素類型口變量名=(元素1,元素2.);

元素類型口變量名=new元素類型口{元素1,元素2.};

〃二分查找法。必須有前提:數(shù)組中的元素要有序。

publicstaticinthalfSeach_2(int[]arr,intkey){

intmin,max,mid;

min=0;

max=arr.length-1;

mid=(max+min)?1;//(max+min)/2;

while(arr[mid]!=key){

if(key>arr[mid])(

min=mid+1;

)

elseif(key

max=mid-1;

if(max

return-1;

mid=(max+min)?1;

)

returnmid;

}

java分了5片內(nèi)存。

1:寄存器。2:本地方法區(qū)。3:方法區(qū)。4:棧。5:堆。

棧:存儲(chǔ)的都是局部變量(函數(shù)中定義的變量,函數(shù)上的參數(shù),語句中的變

量);

只要數(shù)據(jù)運(yùn)算完成所在的區(qū)域結(jié)束,該數(shù)據(jù)就會(huì)被擇放。

堆:用于存儲(chǔ)數(shù)組和對(duì)象,也就是實(shí)體。啥是實(shí)體啊?就是用于封裝多個(gè)數(shù)據(jù)

的。

1:每一個(gè)實(shí)體都有內(nèi)存首地址值。

2:堆內(nèi)存中的變量都有默認(rèn)初始化值。因?yàn)閿?shù)據(jù)類型不同,值也不一樣。

3:垃圾回收機(jī)制。

三:面向?qū)ο螅骸铩铩铩铩?/p>

特點(diǎn):1:將復(fù)雜的事情簡單化。

2:面向?qū)ο髮⒁郧暗倪^程中的執(zhí)行者,變成了指揮者。

3:面向?qū)ο筮@種思想是符合現(xiàn)在人們思考習(xí)慣的一種思想。

過程和對(duì)象在我們的程序中是如何體現(xiàn)的呢?過程其實(shí)就是函數(shù);對(duì)象是將函數(shù)

等一些內(nèi)容進(jìn)行了封裝。

匿名對(duì)象使用場景:

1:當(dāng)對(duì)方法只進(jìn)行一次調(diào)用的時(shí)候,可以使用匿名對(duì)象。

2:當(dāng)對(duì)象對(duì)成員進(jìn)行多次調(diào)用時(shí);不能使用匿名對(duì)象。必須給對(duì)象起名字。

在類中定義其實(shí)都彌之為成員。成員有兩種:

1:成員變量:其實(shí)對(duì)應(yīng)的就是事物的屬性。

2:成員函數(shù):其實(shí)對(duì)應(yīng)的就是事物的行為。

所以,其實(shí)定義類,就是在定義成員變量和成員函數(shù)。但是在定義前,必須先

要對(duì)事物進(jìn)行屬性和行為的分析,才可以用代碼來體現(xiàn)。

privateintage;//私有的訪問權(quán)限最低,只有在本類中的訪問有效。

注意:私有僅僅是封裝的一種體現(xiàn)形式而己。

私有的成員:其他類不能直接創(chuàng)建對(duì)象訪問,所以只有通過本類對(duì)外提供具體

的訪問方式來完成對(duì)私有的訪問,可以通過對(duì)外提供函數(shù)的形式對(duì)其進(jìn)行訪問。

好處:可以在函數(shù)中加入邏輯判斷等操作,對(duì)數(shù)據(jù)進(jìn)行判斷等操作。

總結(jié):開發(fā)時(shí),記住,屬性是用于存儲(chǔ)數(shù)據(jù)的,直接被訪問,容易出現(xiàn)安全隱

患,所以,類中的屬性通常被私有化,并對(duì)外提供公共的訪問方法。

這個(gè)方法一般有兩個(gè),規(guī)范寫法:對(duì)于屬性xxx,可以使用setXXXgelXXX對(duì)

其進(jìn)行操作。

類中怎么沒有定義主函數(shù)呢?

注意:主函數(shù)的存在,僅為該類是否需要獨(dú)立運(yùn)行,如果不需要,主函數(shù)是不

用定義的。

主函數(shù)的解釋:保證所在類的獨(dú)立運(yùn)行,是程序的入口,被jvm調(diào)用。

成員變量和局部變量的區(qū)別:

1:成員變量直接定義在類中。

局部變量定義在方法中,參數(shù)上,語句中。

2:成員變量在這個(gè)類中有效。

局部變量只在自己所屬的大括號(hào)內(nèi)有效,大括號(hào)結(jié)束,局部變量失去作用域。

3:成員變量存在于堆內(nèi)存中,隨著對(duì)象的產(chǎn)生而存在,消失而消失。

局部變量存在于棧內(nèi)存中,隨著所屬區(qū)域的運(yùn)行而存在,結(jié)束而釋放。

構(gòu)造函數(shù):用于給對(duì)象進(jìn)行初始化,是給與之對(duì)應(yīng)的對(duì)象進(jìn)行初始化,它具有

針對(duì)性,函數(shù)中的一種。

特點(diǎn):

1:該函數(shù)的名稱和所在類的名稱相同。

2:不需要定義返回值類型。

3:該函數(shù)沒有具體的返回值。

記住:所有對(duì)象創(chuàng)建時(shí),都需要初始化才可以使用。

注意事項(xiàng):一個(gè)類在定義時(shí),如果沒有定義過構(gòu)造函數(shù),那么該類中會(huì)自動(dòng)生

成一個(gè)空參數(shù)的構(gòu)造函數(shù),為了方便該類創(chuàng)建對(duì)象,完成初始化。如果在類中自定

義了構(gòu)造函數(shù),那么默認(rèn)的構(gòu)造函數(shù)就沒有了。

一個(gè)類中,可以有多個(gè)構(gòu)造函數(shù),因?yàn)樗鼈兊暮瘮?shù)名稱都相同,所以只能通過

參數(shù)列表來區(qū)分。所以,一個(gè)類中如果出現(xiàn)多個(gè)構(gòu)造函數(shù)。它們的存在是以重載體

現(xiàn)的。

構(gòu)造函數(shù)和一般函數(shù)有什么區(qū)別呢?

1:兩個(gè)函數(shù)定義格式不同。

2:構(gòu)造函數(shù)是在對(duì)象創(chuàng)建時(shí),就被調(diào)用,用于初始化,而且初始化動(dòng)作只執(zhí)

行一次。

一般函數(shù),是對(duì)象創(chuàng)建后,需要調(diào)用才執(zhí)行,可以被調(diào)用多次。

什么時(shí)候使用構(gòu)造函數(shù)呢?

分析事物時(shí),發(fā)現(xiàn)具體事物一出現(xiàn),就具備了一些特征,那就將這些特征定義

到構(gòu)造函數(shù)內(nèi)。

構(gòu)造代碼塊和構(gòu)造函數(shù)有什么區(qū)別?

構(gòu)造代碼塊:是給所有的對(duì)象進(jìn)行初始化,也就是說,所有的對(duì)象都會(huì)調(diào)用一

個(gè)代碼塊,只要對(duì)象一建立,就會(huì)調(diào)用這個(gè)代碼塊。

構(gòu)造函數(shù):是給與之對(duì)應(yīng)的對(duì)象進(jìn)行初始化,它具有針對(duì)性。

aPersonp=newPersonn

創(chuàng)建一個(gè)對(duì)象都在內(nèi)存中做了什么事情?

1:先將硬盤上指定位置的Person,class文件加載進(jìn)內(nèi)存。

2:執(zhí)行main方法時(shí),在棧內(nèi)存中開辟了main方法的空間(壓棧-進(jìn)棧),然后

在main方法的棧區(qū)分配了一個(gè)變量p。

3:在堆內(nèi)存中開辟一個(gè)實(shí)體空間,分配了一個(gè)內(nèi)存首地址值。new

4:在該實(shí)體空間中進(jìn)行屬性的空間分配,并進(jìn)行了默認(rèn)初始化。

5:對(duì)空間中的屬性進(jìn)行顯示初始化。

6:進(jìn)行實(shí)體的構(gòu)造代碼塊初始化。

7:調(diào)用該實(shí)體對(duì)應(yīng)的構(gòu)造函數(shù),進(jìn)行構(gòu)造函數(shù)初始化。

8:將首地址賦值給p,p變量就引用了該實(shí)體。(指向了該對(duì)象)

封裝(面向?qū)ο筇卣髦唬菏侵鸽[藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公

共訪問方式。

好處:將變化隔離:便于使用;提高重用性;安全性。

封裝原則:將不需要對(duì)外提供的內(nèi)容都隱藏起來,把屬性都隱藏,提供公共方

法對(duì)其訪問。

This:代表對(duì)象,就是所在函數(shù)所屬對(duì)象的引用。

this到底代表什么呢?哪個(gè)對(duì)象調(diào)用了this所在的函數(shù),ihis就代表哪個(gè)對(duì)

象,就是哪個(gè)對(duì)象的引用。

開發(fā)時(shí),什么時(shí)候使用this呢?

在定義功能時(shí),如果該功能內(nèi)部使用到了調(diào)用該功能的對(duì)象,這時(shí)就用this

來表示這個(gè)對(duì)象。

this還可以用于構(gòu)造函數(shù)間的調(diào)用。

調(diào)用格式:this(實(shí)際參數(shù));

this對(duì)象后面跟上.調(diào)用的是成員屬性和成員方法(一般方法);

this對(duì)象后面跟上調(diào)用的是本類中的對(duì)應(yīng)參數(shù)的構(gòu)造函數(shù)。

注意:用this調(diào)用構(gòu)造函數(shù),必須定義在構(gòu)造函數(shù)的第一行。因?yàn)闃?gòu)造函數(shù)

是用于初始化的,所以初始化動(dòng)作一定要執(zhí)行。否則編譯失敗。

static:★★★關(guān)鍵字,是一個(gè)修飾符,用于修飾成員(成員變量和成員函

數(shù))。

特點(diǎn);

1、想要實(shí)現(xiàn)對(duì)象中的共性數(shù)據(jù)的對(duì)象共享,可以將這個(gè)數(shù)據(jù)進(jìn)行靜態(tài)修飾。

2、被靜態(tài)修飾的成員,可以直接被類名所調(diào)用。也就是說,靜態(tài)的成員多了

一種調(diào)用方式。類名.靜態(tài)方式。

3、靜態(tài)隨著類的加載而加載,而且優(yōu)先于對(duì)象存在。

弊端:

1、有些數(shù)據(jù)是對(duì)象特有的數(shù)據(jù),是不可以被靜態(tài)修飾的。因?yàn)槟菢拥脑?,?/p>

有數(shù)據(jù)會(huì)變成對(duì)象的共享數(shù)據(jù)。這樣對(duì)事物的描述就出了問題。所以,在定義靜態(tài)

時(shí),必須要明確,這個(gè)數(shù)據(jù)是否是被對(duì)象所共享的。

2、靜態(tài)方法只能訪問靜態(tài)成員,不可以訪問非靜態(tài)成員。

因?yàn)殪o態(tài)方法加載時(shí),優(yōu)先于對(duì)象存在,所以沒有辦法訪問對(duì)象中的成員。

3、靜態(tài)方法中不能使用this,super關(guān)鍵字。

因?yàn)镮his代表對(duì)象,而靜態(tài)在時(shí),有可能沒有對(duì)象,所以this無法使用。

4、主函數(shù)是靜態(tài)的。

什么時(shí)候定義靜態(tài)成員呢?或者說:定義成員時(shí),到底需不需要被靜態(tài)修飾呢?

成員分兩種:

1、成員變量。(數(shù)據(jù)共享時(shí)靜態(tài)化)

該成員變量的數(shù)據(jù)是否是所有對(duì)象都一樣:

如果是,那么該變量需要被靜態(tài)修飾,因?yàn)槭枪蚕淼臄?shù)據(jù)。

如果不是,那么就說這是對(duì)象的特有數(shù)據(jù),要存儲(chǔ)到對(duì)象中。

2、成員函數(shù)。(方法中沒有調(diào)用特有數(shù)據(jù)時(shí)就定義成靜態(tài))

如果判斷成員函數(shù)是否需要被靜態(tài)修飾呢?

只要參考,該函數(shù)內(nèi)是否訪問了對(duì)象中的特有數(shù)據(jù):

如果有訪問特有數(shù)據(jù),那方法不能被靜態(tài)修飾。

如果沒有訪問過特有數(shù)據(jù),那么這個(gè)方法需要被靜態(tài)修飾。

成員變量和靜態(tài)變量的區(qū)別:

1、成員變量所屬于對(duì)象,所以也稱為實(shí)例變量。

靜態(tài)變量所屬于類,所以也稱為類變量。

2、成員變量存在于堆內(nèi)存中。

靜態(tài)變量存在于方法區(qū)中。

3、成員變量隨著對(duì)象創(chuàng)建而存在,隨著對(duì)象被回收而消失。

靜態(tài)變量隨著類的加載而存在,隨著類的消失而消失。

4、成員變量只能被對(duì)象所調(diào)用。

靜態(tài)變量可以被對(duì)象調(diào)用,也可以被類名調(diào)用。

所以,成員變量可以稱為對(duì)象的特有數(shù)據(jù),靜態(tài)變量稱為對(duì)象的共享數(shù)據(jù)。

靜態(tài)的注意:靜態(tài)的生命周期很長。

靜態(tài)代碼塊:就是一個(gè)有靜態(tài)關(guān)鍵字標(biāo)示的一個(gè)代碼塊區(qū)域,定義在類中。

作用:可以完成類的初始化,靜態(tài)代碼塊隨著類的加載而執(zhí)行,而且只執(zhí)行一

次(new多個(gè)對(duì)象就只執(zhí)行一次)。如果和主函數(shù)在同一類中,優(yōu)先于主函數(shù)執(zhí)行。

Public:訪問權(quán)限最大。

static:不需要對(duì)象,直接類名即可。

void:主函數(shù)沒有返回值。

Main:主函數(shù)特定的名稱。

(String[]args):主函數(shù)的參數(shù),是一個(gè)字符串?dāng)?shù)組類型的參數(shù),jvm調(diào)用

main方法時(shí),傳遞的實(shí)際參數(shù)是newString[。]。

jvm默認(rèn)傳遞的是長度為0的字符串?dāng)?shù)組,我們?cè)谶\(yùn)行該類時(shí),也可以指定具

體的參數(shù)進(jìn)行傳遞??梢栽诳刂婆_(tái),運(yùn)行該類時(shí),在后面加入?yún)?shù)。參數(shù)之間通過

空格隔開。jvm會(huì)自動(dòng)將這些字符串參數(shù)作為args數(shù)組中的元素,進(jìn)行存儲(chǔ)。

靜態(tài)代碼塊、構(gòu)造弋碼塊、構(gòu)造函數(shù)同時(shí)存在時(shí)的執(zhí)行順序:靜態(tài)代碼塊d

構(gòu)造代碼塊a構(gòu)造函數(shù);

生成Java幫助文檔:命令格式:javadoc-d文件夾名-auther-version

*.java

〃/格式

*類描述

*@author作者名

*@version版本號(hào)

*/

/

*方法描述

*@param參數(shù)描述

*@return返回值描述

*/

設(shè)計(jì)模式:解決問題最行之有效的思想。是一套被反復(fù)使用、多數(shù)人知曉的、

經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼

更容易被他人理解、保證代碼可靠性。

Java知識(shí)點(diǎn)總結(jié)(2)「篇六」

java基本知識(shí)點(diǎn)總結(jié)

Java編程語言是面向?qū)ο蟮?,處理的最小的完整單元為?duì)象。而現(xiàn)實(shí)生活中

具有共同特性的對(duì)象的油象就稱之為類。以下是java基本知識(shí)點(diǎn)總結(jié),歡迎閱

讀。

1.Java是什么?java的運(yùn)行機(jī)制

Java是由SunMicrosystems公司于1995年5月推出的高級(jí)程序設(shè)計(jì)語言。

是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以

理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個(gè)特征。

Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚摚试S

程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。

Java具有簡單性、面向?qū)ο蟆⒎植际?、健壯性、安全性、平臺(tái)的獨(dú)立與可移

植性、多線程、動(dòng)態(tài)性等特點(diǎn)。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分

布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。

關(guān)于java名字的由來還有一個(gè)小趣聞,java創(chuàng)建之初的一天,幾位Java成

員組的會(huì)員正在討論給這個(gè)新的語言取什么名字,當(dāng)時(shí)他們正在咖啡館喝著

Java(爪哇)咖啡,有一個(gè)人靈機(jī)一動(dòng)說就叫Java怎樣,這個(gè)提議得到了其他人的

贊同,于是,Java這個(gè)名字就這樣傳開了。原來看SUN的JAVA標(biāo)識(shí)沒去多想,現(xiàn)

在看看,這不就是一杯正冒著熱氣的咖啡嗎?

JVM作為Java運(yùn)行的基礎(chǔ),很難相信對(duì)于JVM一點(diǎn)都不了解的人可以把Java

語言吃得很透。對(duì)于剛剛接觸Java的人來說,JVM相關(guān)的知識(shí)不一定需要理解很

深,對(duì)此里面的概念有一些簡單的了解即可。不過對(duì)于一個(gè)有著3年以上Java經(jīng)

驗(yàn)的資深開發(fā)者來說,不會(huì)JVM幾乎是不可接受的。

在JVM這個(gè)大類中,我認(rèn)為需要掌握的知識(shí)有:

1.JVM內(nèi)存模型和結(jié)構(gòu)

2.GC原理,性能調(diào)優(yōu)

3.調(diào)優(yōu):ThreadDump,分析內(nèi)存結(jié)構(gòu)

4.class二進(jìn)制字節(jié)碼結(jié)構(gòu),classloader體系,class加載過程,實(shí)

例創(chuàng)建過程

5.方法執(zhí)行過程

6.Java各個(gè)大版本更新提供的新特性(需要簡單了解)

2.java變量

在Java語言中,所有的變量在使用前必須聲明。聲明變量的基本格式如下:

Java語言支持的變量類型有:

類變量:獨(dú)立于方法之外的變量,用static修飾。

實(shí)例變量:獨(dú)立于方法之外的變量,不過沒有static修飾。

局部變量:類的方法中的變量。

3.數(shù)據(jù)類型

這條沒有什么好多說的,無非就是Java中的基本類型和對(duì)象類型的掌握???/p>

以再了解一些JDK如何自動(dòng)轉(zhuǎn)換方面的知識(shí),包括裝箱拆箱等,還要注意避免裝箱

之后的類型相等的判斷

主要知識(shí)點(diǎn):

基本類型:int,long,float,double,boolean

對(duì)應(yīng)的對(duì)象類型:Integer等類型到基本類型的轉(zhuǎn)換,裝箱和拆箱

Object類型;equals,hashcode

String類型的特點(diǎn)

4.運(yùn)算符

Java的運(yùn)算符,分為四類:

算數(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符。

算數(shù)運(yùn)算符(9):+-*/%++—

關(guān)系運(yùn)算符(6):==!=>>=<<=

邏輯運(yùn)算符(6):&&||!'&|

位運(yùn)算符(7):&|~->><<>?

邏輯運(yùn)算符除了!外都是用于連接兩個(gè)boolean類型表達(dá)式。

5.數(shù)據(jù)類型轉(zhuǎn)換

在實(shí)際的使用中,經(jīng)常需要在不同類型的值之間進(jìn)行操作,這就需要一種新的

語法來適應(yīng)這種需要,這個(gè)語法就是數(shù)據(jù)類型轉(zhuǎn)換。

Java語言中的數(shù)據(jù)類型轉(zhuǎn)換有兩種:

自動(dòng)類型轉(zhuǎn)換:編譯器自動(dòng)完成類型轉(zhuǎn)換,不需要在程序中編寫代碼。

強(qiáng)制類型轉(zhuǎn)換:強(qiáng)制編譯器進(jìn)行類型轉(zhuǎn)換,必須在程序中編寫代碼。

由于基本數(shù)據(jù)類型中boolean類型不是數(shù)字型,所以基本數(shù)據(jù)類型的轉(zhuǎn)換是

出了boolean類型以外的其它7種類型之間的轉(zhuǎn)換。下面來具體介紹兩種類型轉(zhuǎn)

換的規(guī)則、適用場合以及使用時(shí)需要注意的問題。

自動(dòng)類型轉(zhuǎn)換

自動(dòng)類型轉(zhuǎn)換,也稱為隱式類型轉(zhuǎn)換,是指不需要書寫代碼,由系統(tǒng)自動(dòng)完成

的類型轉(zhuǎn)換,由于實(shí)際開發(fā)中這種類型轉(zhuǎn)換很多,所以java語言在設(shè)計(jì)時(shí),沒有

為該操作設(shè)計(jì)語法,而是由JVV自動(dòng)完成。

轉(zhuǎn)換規(guī)則:從存儲(chǔ)范圍小的類型到存儲(chǔ)范圍大的類型。

具體規(guī)則為:byte->short(char)fini->longffloal-double

也就是說byte類型的變量可以自動(dòng)轉(zhuǎn)換為short類型,示例代碼:

shortsh=b;這里在賦值時(shí),JVM首先將b的值轉(zhuǎn)換為short類型,然后

再賦值給sho

在類型轉(zhuǎn)換時(shí)可以跳躍。示例代碼:

注意問題:在整數(shù)之間進(jìn)行類型轉(zhuǎn)換時(shí),數(shù)值不發(fā)生改變,而將整數(shù)類型,特

別是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論