基礎(chǔ)學(xué)習(xí)
一、基本了解:
1、JVM、JRE和JDK的區(qū)別:
?? ?JVM(Java Virtual Machine):java虛擬機(jī),用于保證java的跨平臺(tái)的特性。
?? ??? ??? ??? ? ?java語(yǔ)言是跨平臺(tái),jvm不是跨平臺(tái)的。
?? ?JRE(Java Runtime Environment):java的運(yùn)行環(huán)境,包括jvm+java的核心類(lèi)庫(kù)。?? ?
?? ?JDK(Java Development Kit):java的開(kāi)發(fā)工具,包括jre+開(kāi)發(fā)工具
2、環(huán)境變量path和classpath的作用是什么?
?? ?(1)path是配置Windows可執(zhí)行文件的搜索路徑,即擴(kuò)展名為.exe的程序文件所在的目錄,
?? ? ? 用于指定DOS窗口命令的路徑。
?? ?(2)Classpath是配置class文件所在的目錄,用于指定類(lèi)搜索路徑,JVM就是通過(guò)它來(lái)尋找該類(lèi)的class類(lèi)文件的。?? ?
?? ?
3、變量有什么用?為什么要定義變量?
? ? 首先變量的作用:用來(lái)存儲(chǔ)數(shù)據(jù)。那為什么要定義變量:用來(lái)不斷的存放同一類(lèi)型的常量,并可以重復(fù)使用
4、&和&&的區(qū)別?
? ? ? ? ? (1)&&會(huì)出現(xiàn)短路,如果可以通過(guò)第一個(gè)表達(dá)式判斷出整個(gè)表達(dá)式的結(jié)果,則不繼續(xù)后面表達(dá)式的運(yùn)算;
?? ??? ? 只能操作boolean類(lèi)型數(shù)據(jù);
?? ? ? ?(2)&不會(huì)出現(xiàn)短路,將整個(gè)表達(dá)式都運(yùn)算。既可以操作boolean數(shù)據(jù)還可以操作數(shù)。
5、標(biāo)示符命名規(guī)則:
?? ?由數(shù)字(0-9),大小寫(xiě)英文字母,以及_和$組成。
?? ?不能以數(shù)字開(kāi)頭。
?? ?不能使用關(guān)鍵字來(lái)自定義命名。
6、數(shù)據(jù)類(lèi)型:
?? ?(1)基本數(shù)據(jù)類(lèi)型(4類(lèi)8種):
?? ??? ?整數(shù)類(lèi)型:byte、short、int、long
?? ??? ?浮點(diǎn)數(shù)類(lèi)型:float、double
?? ??? ?字符類(lèi)型:char
?? ??? ?布爾類(lèi)型:boolean(ture false)
?? ?(2)引用數(shù)據(jù)類(lèi)型:
?? ??? ?類(lèi)
?? ??? ?接口
?? ??? ?數(shù)組
7、類(lèi)型轉(zhuǎn)換
?? ?精度從高到低 ?double ?float ?long ?int ?short(char) ?byte?
?? ?(1)自動(dòng)類(lèi)型轉(zhuǎn)換 ?將一個(gè)低精度---?高精度?
?? ?(2)強(qiáng)制類(lèi)型轉(zhuǎn)換 ?將一個(gè)高精度---?低精度(精度會(huì)下降)
8、java語(yǔ)言的三種技術(shù)架構(gòu)
?? ?J2EE:企業(yè)版
?? ?是為開(kāi)發(fā)企業(yè)環(huán)境下的應(yīng)用程序提供的一套解決方案。
?? ?該技術(shù)體系中包含的技術(shù)如 Servlet、Jsp等,主要針對(duì)于Web應(yīng)用程序開(kāi)發(fā)。
?? ?J2SE:標(biāo)準(zhǔn)版
?? ?是為開(kāi)發(fā)普通桌面和商務(wù)應(yīng)用程序提供的解決方案。
?? ?該技術(shù)體系是其他兩者的基礎(chǔ),可以完成一些桌面應(yīng)用程序的開(kāi)發(fā)。。
?? ?J2ME:小型版
?? ?是為開(kāi)發(fā)電子消費(fèi)產(chǎn)品和嵌入式設(shè)備提供的解決方案。
?? ?該技術(shù)體系主要應(yīng)用于小型電子消費(fèi)類(lèi)產(chǎn)品,如手機(jī)中的應(yīng)用程序等。
9、java的跨平臺(tái)性:
?? ?通過(guò)Java語(yǔ)言編寫(xiě)的應(yīng)用程序在不同的系統(tǒng)平臺(tái)上都可以運(yùn)行。
?? ?跨平臺(tái)的原因:
?? ?只要在需要運(yùn)行java應(yīng)用程序的操作系統(tǒng)上,先安裝一個(gè)Java虛擬機(jī)(JVM Java Virtual Machine)即可。
?? ?由JVM來(lái)負(fù)責(zé)Java程序在該系統(tǒng)中的運(yùn)行。
10、有符號(hào)數(shù)據(jù)的表示法(次重點(diǎn))
?? ?原碼,反碼(原碼取反),補(bǔ)碼(反碼+1)。
11、函數(shù)
?? ?定義:函數(shù)就是定義在類(lèi)中的具有特定功能的一段獨(dú)立小程序。?? ??? ?
?? ?特點(diǎn):
?? ??? ?定義函數(shù)可以將功能代碼進(jìn)行封裝
?? ??? ?便于對(duì)該功能進(jìn)行復(fù)用
?? ??? ?函數(shù)只有被調(diào)用才會(huì)被執(zhí)行
?? ??? ?函數(shù)的出現(xiàn)提高了代碼的復(fù)用性
?? ??? ?對(duì)于函數(shù)沒(méi)有具體返回值的情況,返回值類(lèi)型用關(guān)鍵字void表示,
?? ??? ?那么該函數(shù)中的return語(yǔ)句如果在最后一行可以省略不寫(xiě)。
?? ?函數(shù)的應(yīng)用兩個(gè)明確:
?? ??? ?明確要定義的功能最后的結(jié)果是什么?
?? ??? ?明確在定義該功能的過(guò)程中,是否需要未知內(nèi)容參與運(yùn)算
12、重載:
?? ?概念:在同一個(gè)類(lèi)中,允許存在一個(gè)以上的同名函數(shù),只要它們的參數(shù)個(gè)數(shù)或者參數(shù)類(lèi)型不同即可。?? ?
?? ?特點(diǎn):與返回值類(lèi)型無(wú)關(guān),只看參數(shù)列表(參數(shù)類(lèi)型以及參數(shù)個(gè)數(shù))。?? ?
?? ?好處:方便于閱讀,優(yōu)化了程序設(shè)計(jì)。?? ?
?? ?
13、數(shù)組:
?? ?概念:同一種數(shù)據(jù)類(lèi)型的集合。?? ?
?? ?好處:可以自動(dòng)給數(shù)組中的元素從0開(kāi)始編號(hào),方便操作這些元素。
14、內(nèi)存結(jié)構(gòu):
?? ?棧內(nèi)存:用于存儲(chǔ)局部變量,當(dāng)數(shù)據(jù)使用完,所占空間會(huì)自動(dòng)釋放。
?? ?堆內(nèi)存:數(shù)組和對(duì)象,通過(guò)new建立的實(shí)例都存放在堆內(nèi)存中。
?? ?方法區(qū):靜態(tài)成員、構(gòu)造函數(shù)、常量池、線程池
?? ?本地方法區(qū):window系統(tǒng)占用
?? ?寄存器:
二、面向?qū)ο?br> 1、面向?qū)ο笏枷耄?br> ?? ?(1)概述:面向?qū)ο笫窍鄬?duì)于面向過(guò)程而言的,面向過(guò)程強(qiáng)調(diào)的是功能,面向?qū)ο髲?qiáng)調(diào)的是將功能封裝進(jìn)對(duì)象,
?? ??? ? 強(qiáng)調(diào)具備功能的對(duì)象;
?? ?(2)思想特點(diǎn):
?? ??? ? 是符合人們思考習(xí)慣的一種思想;
?? ??? ? 將復(fù)雜的事情簡(jiǎn)單化了;
?? ??? ? 將程序員從執(zhí)行者變成了指揮者;
?? ??? ? 比如我要達(dá)到某種結(jié)果,我就尋找能幫我達(dá)到該結(jié)果的功能的對(duì)象,如我要洗衣服我就買(mǎi)洗衣機(jī),
?? ??? ? 至于怎么洗我不管。
?? ?(3)特征:
?? ??? ?封裝:隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪問(wèn)方式
?? ??? ?繼承: 多個(gè)類(lèi)中存在相同屬性和行為時(shí),將這些內(nèi)容抽取到單獨(dú)一個(gè)類(lèi)中,那么多個(gè)類(lèi)無(wú)需再定義
?? ??? ? ? ? ?這些屬性和行為,只要繼承那個(gè)類(lèi)即可。
?? ??? ?多態(tài): 一個(gè)對(duì)象在程序不同運(yùn)行時(shí)刻代表的多種狀態(tài),父類(lèi)或者接口的引用指向子類(lèi)對(duì)象
2、類(lèi)和對(duì)象:
?? ?類(lèi):對(duì)現(xiàn)實(shí)世界中某類(lèi)事物的描述,是抽象的,概念上的定義。
?? ?對(duì)象:事物具體存在的個(gè)體。
3:成員變量和局部變量的區(qū)別(重點(diǎn))
?? ?(1)作用域
?? ??? ?成員變量:針對(duì)整個(gè)類(lèi)有效。
?? ??? ?局部變量:只在某個(gè)范圍內(nèi)有效。(一般指的就是方法,語(yǔ)句體內(nèi))
?? ?(2)存儲(chǔ)位置
?? ??? ?成員變量:隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失,存儲(chǔ)在堆內(nèi)存中。
?? ??? ?局部變量:在方法被調(diào)用,或者語(yǔ)句被執(zhí)行的時(shí)候存在,存儲(chǔ)在棧內(nèi)存中。
?? ??? ??? ? ?當(dāng)方法調(diào)用完,或者語(yǔ)句結(jié)束后,就自動(dòng)釋放。
?? ?(3)初始值
?? ??? ?成員變量:有默認(rèn)初始值。
?? ??? ?局部變量:沒(méi)有默認(rèn)初始值,使用前必須賦值。
4、匿名對(duì)象
?? ?(1)匿名對(duì)象就是沒(méi)有名字的對(duì)象。是對(duì)象的一種簡(jiǎn)寫(xiě)形式。
?? ?(2)應(yīng)用場(chǎng)景
?? ??? ?只調(diào)用一次類(lèi)中的方法。
?? ??? ?可以作為實(shí)際參數(shù)在方法傳遞中使用
5、封裝:
?? ?指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪問(wèn)方式;比如電腦機(jī)箱、筆記本等
?? ?好處:
?? ??? ?將變化隔離;
?? ??? ?方便使用;
?? ??? ?提高復(fù)用性;
?? ??? ?提高安全性
6、關(guān)鍵字private:封裝在代碼中的體現(xiàn)
?? ?(1)私有的意思,權(quán)限修飾符
?? ?(2)用來(lái)修飾成員變量和成員函數(shù)
?? ?(3)用private修飾的成員只在本類(lèi)中有效
?? ?(4)私有是封裝的一種體現(xiàn)
7、構(gòu)造方法:
?? ?(1)特點(diǎn):
?? ??? ?方法名與類(lèi)名相同
?? ??? ?沒(méi)有返回類(lèi)型
?? ??? ?沒(méi)有返回值
?? ?(2)作用:構(gòu)造函數(shù)是用于創(chuàng)建對(duì)象,并對(duì)其進(jìn)行初始化賦值,對(duì)象一建立就自動(dòng)調(diào)用相對(duì)應(yīng)的構(gòu)造函數(shù),
?? ?(3)構(gòu)造方法的注意事項(xiàng):
?? ??? ?如果一個(gè)自定義類(lèi)沒(méi)有構(gòu)造方法,系統(tǒng)會(huì)默認(rèn)給出一個(gè)無(wú)參構(gòu)造方法。
?? ??? ?如果一個(gè)自定義類(lèi)提供了構(gòu)造方法,那么,系統(tǒng)將不再給出無(wú)參構(gòu)造方法。
?? ??? ? ?這個(gè)時(shí)候,你可以不使用無(wú)參構(gòu)造方法。
?? ??? ? ?如果你想使用,那么,就必須手動(dòng)給出無(wú)參構(gòu)造方法。
?? ??? ?建議:一般情況下,我們的自定義類(lèi)都要手動(dòng)給出無(wú)參構(gòu)造方法。
?? ?(4)構(gòu)造方法和成員方法的區(qū)別
?? ??? ?格式區(qū)別
?? ??? ??? ?構(gòu)造方法和類(lèi)名相同,并且沒(méi)有返回類(lèi)型,也沒(méi)有返回值。
?? ??? ??? ?普通成員方法可以任意起名,必須有返回類(lèi)型,可以沒(méi)有返回值。
?? ??? ?作用區(qū)別
?? ??? ??? ?構(gòu)造方法用于創(chuàng)建對(duì)象,并進(jìn)行初始化值。
?? ??? ??? ?普通成員方法是用于完成特定功能的。
?? ??? ?調(diào)用區(qū)別
?? ??? ??? ?構(gòu)造方法是在創(chuàng)建對(duì)象時(shí)被調(diào)用的,一個(gè)對(duì)象建立,只調(diào)用一次相應(yīng)構(gòu)造函數(shù)
?? ??? ??? ?普通成員方法是由創(chuàng)建好的對(duì)象調(diào)用,可以調(diào)用多次
8、構(gòu)造代碼塊:
?? ?(1)作用:給對(duì)象進(jìn)行初始化,對(duì)象一建立就執(zhí)行,而且優(yōu)先于構(gòu)造函數(shù)執(zhí)行
?? ?(2)構(gòu)造代碼塊和構(gòu)造函數(shù)的區(qū)別:
?? ??? ?構(gòu)造代碼塊是給所有不同對(duì)象的共性進(jìn)行統(tǒng)一初始化
?? ??? ?構(gòu)造函數(shù)是給對(duì)應(yīng)的對(duì)象進(jìn)行初始化
9、this關(guān)鍵字
?? ?(1)this關(guān)鍵字代表本類(lèi)對(duì)象的一個(gè)引用,誰(shuí)調(diào)用this所在的方法,this就代表誰(shuí) ?
?? ?(2)this的使用場(chǎng)景
?? ??? ?用于區(qū)分同名成員變量和局部變量;
?? ??? ?在定義函數(shù)時(shí),該函數(shù)內(nèi)部要用到調(diào)用該函數(shù)的對(duì)象時(shí),因?yàn)榇藭r(shí)對(duì)象還沒(méi)建立,故this代表此對(duì)象
?? ??? ?構(gòu)造函數(shù)間調(diào)用
?? ??? ??? 這個(gè)時(shí)候,this(參數(shù))必須作為第一條語(yǔ)句存在。
10、Person p = new Person();在內(nèi)存中做了哪些事情。
?? ?(1)將Person.class文件加載進(jìn)內(nèi)存中。
?? ?(2)如果p定義在主方法中,那么,就會(huì)在棧空間開(kāi)辟一個(gè)變量空間p。
?? ?(3)在堆內(nèi)存給對(duì)象分配空間。
?? ?(4)對(duì)對(duì)象中的成員進(jìn)行默認(rèn)初始化。
?? ?(5)對(duì)對(duì)象中的成員進(jìn)行顯示初始化。
?? ?(6)調(diào)用構(gòu)造代碼塊對(duì)對(duì)象進(jìn)行初始化。(如果沒(méi)有就不執(zhí)行)
?? ?(7)調(diào)用構(gòu)造方法對(duì)對(duì)象進(jìn)行初始化。對(duì)象初始化完畢。
?? ?(8)將對(duì)象的內(nèi)存地址賦值給p變量,讓p變量指向該對(duì)象。
11、static關(guān)鍵字:
?? ?(1)靜態(tài)的意思,用來(lái)修飾成員變量和成員函數(shù)
?? ?(2)靜態(tài)的特點(diǎn):
?? ??? ?隨著類(lèi)的加載而加載
?? ??? ?優(yōu)先于對(duì)象存在
?? ??? ?對(duì)所有對(duì)象共享
?? ??? ?可以被類(lèi)名直接調(diào)用
?? ?(3)靜態(tài)的注意事項(xiàng)
? ? ? ? 靜態(tài)方法只能訪問(wèn)靜態(tài)成員
? ? ? ? 靜態(tài)的內(nèi)容是隨著類(lèi)的加載而加載,它是先進(jìn)內(nèi)存的。
? ? ? ? 靜態(tài)方法中不能使用this,super關(guān)鍵字
? ? ? ? 主方法是靜態(tài)的
?? ??? ??? ?public static void main(String[] args)
?? ??? ??? ?public:公共的意思,是最大權(quán)限修飾符。
?? ??? ??? ?static:由于jvm調(diào)用main方法的時(shí)候,沒(méi)有創(chuàng)建對(duì)象。
?? ??? ??? ? ? ? ? 只能通過(guò)類(lèi)名調(diào)用。所以,main必須用static修飾。
?? ??? ??? ?void:由于main方法是被jvm調(diào)用,不需要返回值。用void修飾。
?? ??? ??? ?main:main是主要的意思,所以jvm采用了這個(gè)名字。是程序的入口。
?? ??? ??? ?String[]:字符串?dāng)?shù)組
?? ??? ??? ?args:數(shù)組名
?? ??? ??? ?在運(yùn)行的時(shí)候,通過(guò)java命令給args數(shù)組賦值。
?? ??? ??? ?格式:java MainTest hello world itcast
?? ?(4)靜態(tài)變量和成員變量的區(qū)別
?? ??? ?調(diào)用方式
?? ??? ??? ?靜態(tài)變量也稱(chēng)為類(lèi)變量,可以直接通過(guò)類(lèi)名調(diào)用。也可以通過(guò)對(duì)象名調(diào)用。
?? ??? ??? ?這個(gè)變量屬于類(lèi)。
?? ??? ??? ?成員變量也稱(chēng)為實(shí)例變量,只能通過(guò)對(duì)象名調(diào)用。這個(gè)變量屬于對(duì)象。
?? ??? ?存儲(chǔ)位置
?? ??? ??? ?靜態(tài)變量存儲(chǔ)在方法區(qū)長(zhǎng)中的靜態(tài)區(qū)。
?? ??? ??? ?成員變量存儲(chǔ)在堆內(nèi)存。
? ? ? ?生命周期
?? ??? ??? ?靜態(tài)變量隨著類(lèi)的加載而存在,隨著類(lèi)的消失而消失。生命周期長(zhǎng)。
?? ??? ??? ?成員變量隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失。
? ? ? ? 與對(duì)象的相關(guān)性
?? ??? ??? ?靜態(tài)變量是所有對(duì)象共享的數(shù)據(jù)。
?? ??? ??? ?成員變量是每個(gè)對(duì)象所特有的數(shù)據(jù)。
?? ?(5)靜態(tài)的優(yōu)點(diǎn)和弊端
?? ??? ?優(yōu)點(diǎn):
?? ??? ?對(duì)對(duì)象的共享數(shù)據(jù)進(jìn)行單獨(dú)空間的存儲(chǔ),節(jié)省內(nèi)存,沒(méi)有必要每個(gè)對(duì)象都存儲(chǔ)一份
?? ??? ?可直接被類(lèi)名調(diào)用
?? ??? ?弊端:
?? ??? ?生命周期過(guò)長(zhǎng),隨著類(lèi)的消失而消失
?? ??? ?訪問(wèn)出現(xiàn)權(quán)限,即靜態(tài)雖好但只能訪問(wèn)靜態(tài)
?? ?(6)什么使用使用靜態(tài)呢?
?? ??? ?當(dāng)所有對(duì)象共享某個(gè)數(shù)據(jù)的時(shí)候,就把這個(gè)成員變量定義為靜態(tài)修飾的。
?? ??? ?當(dāng)某個(gè)方法沒(méi)有訪問(wèn)該類(lèi)中的非靜態(tài)成員,就可以把這個(gè)方法定義為靜態(tài)修飾。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-664206.html
? ? ? ? ?靜態(tài)的生命周期比較長(zhǎng),所以一般不推薦使用。
?? ?(7)靜態(tài)代碼塊
?? ??? ?它只執(zhí)行一次,它比main還先執(zhí)行。
?? ??? ?執(zhí)行順序 :靜態(tài)代碼塊--構(gòu)造代碼塊--構(gòu)造方法文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-664206.html
到了這里,關(guān)于Java基礎(chǔ)學(xué)習(xí)大全(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!