版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- CRT護(hù)理中的跨學(xué)科合作與整合
- 2025年福建省體育局直屬事業(yè)單位面向退役運(yùn)動(dòng)員公開招聘工作人員13人備考題庫及一套參考答案詳解
- 2026年醫(yī)療器械注冊(cè)代理服務(wù)合同
- 2025年蒼南縣馬站鎮(zhèn)人民政府面向社會(huì)公開招聘工作人員備考題庫及完整答案詳解一套
- 2025年阿勒泰地區(qū)吉木乃縣應(yīng)急管理局面向社會(huì)公開招聘政府專職消防員6人備考題庫及參考答案詳解
- 2026屆重慶市涪陵區(qū)涪陵高中高二數(shù)學(xué)第一學(xué)期期末經(jīng)典試題含解析
- 公安面試通關(guān)技巧
- 名企面試28個(gè)通關(guān)技巧
- 防疫人員面試方法與技巧
- 搬磚托管合同范本
- 2025年度河北省機(jī)關(guān)事業(yè)單位技術(shù)工人晉升高級(jí)工考試練習(xí)題附正確答案
- 交通運(yùn)輸布局及其對(duì)區(qū)域發(fā)展的影響課時(shí)教案
- 2025年中醫(yī)院護(hù)理核心制度理論知識(shí)考核試題及答案
- GB/T 17981-2025空氣調(diào)節(jié)系統(tǒng)經(jīng)濟(jì)運(yùn)行
- 比亞迪儲(chǔ)能項(xiàng)目介紹
- 2025年9月廣東深圳市福田區(qū)事業(yè)單位選聘博士11人備考題庫附答案
- 學(xué)堂在線 大數(shù)據(jù)與城市規(guī)劃 期末考試答案
- MOOC 跨文化交際通識(shí)通論-揚(yáng)州大學(xué) 中國大學(xué)慕課答案
- GB/T 1048-2019管道元件公稱壓力的定義和選用
- 凱石量化對(duì)沖2號(hào)基金合同
- 電力現(xiàn)貨市場基本原理課件
評(píng)論
0/150
提交評(píng)論