前言
很多Java編程初學(xué)者在剛接觸Java語(yǔ)言程序的時(shí)候爆捞,不知道該學(xué)習(xí)掌握哪些必要的基礎(chǔ)知識(shí)。本文小編總結(jié)了零基礎(chǔ)學(xué)習(xí)Java編程語(yǔ)言的幾個(gè)基礎(chǔ)知識(shí)要點(diǎn)盗温。希望能夠?qū)側(cè)腴T的Java新手有幫助成肘。
先了解什么是Java的四個(gè)方面
初學(xué)者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的砚偶,重在理解,理解它們之間的區(qū)別與聯(lián)系染坯,分別有哪些應(yīng)用单鹿。想想這些代碼中用到了哪些知識(shí)點(diǎn)。不要一味地照著書本敲代碼仲锄。而不去理解儒喊。
1.Java編程語(yǔ)言,即語(yǔ)法侨颈。
2.Java文件格式肛搬,即各種文件夾、文件的后綴温赔。
3.Java虛擬機(jī)(JVM)陶贼,即處理 * .class文件的解釋器待秃。
4.Java應(yīng)用程序接口(Java API)。
掌握靜態(tài)方法和屬性
靜態(tài)方法和屬性用于描述某一類對(duì)象群體的特征枉氮,而不是單個(gè)對(duì)象的特征暖庄。Java中大量應(yīng)用了靜態(tài)方法和屬性眶拉,這是一個(gè)通常的技巧责鳍。但是這種技巧在很多語(yǔ)言中不被頻繁地使用。
理解靜態(tài)方法和屬性對(duì)于理解類與對(duì)象的關(guān)系是十分有幫助的呛每,在大量的Java規(guī)范中惫东,靜態(tài)方法和屬性被頻繁使用。因此學(xué)習(xí)者應(yīng)該理解靜態(tài)方法和屬性。Java在方法和屬性的調(diào)用上是一致的徐矩,區(qū)別只表現(xiàn)在聲明的時(shí)候滤灯,這和c++是不同的。
JAVA的三個(gè)技術(shù)平臺(tái)的關(guān)系
Java分為三個(gè)體系窒百,分別為Java SE(J2SE篙梢,Java2 Platform Standard Edition,標(biāo)準(zhǔn)版)渤滞。JavaEE(J2EE妄呕,Java 2 Platform, Enterprise Edition嗽测,企業(yè)版)。Java ME(J2ME疏魏,Java 2 Platform Micro Edition蠢护,微型版)。
要知道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í)所需的類庫(kù),并對(duì)class文件進(jìn)行執(zhí)行.一個(gè)文件要被執(zhí)行,必須要有一個(gè)執(zhí)行的起始點(diǎn),這個(gè)起始點(diǎn)就是main函數(shù)少辣。
掌握J(rèn)AVA代碼的基本格式
1漓帅、Java注釋盡可能全面
對(duì)于方法的注釋應(yīng)該包含詳細(xì)的入?yún)⒑徒Y(jié)果說(shuō)明林说,有異常拋出的情況也要詳細(xì)敘述:類的注釋應(yīng)該包含類的功能說(shuō)明腿箩、作者和修改者珠移。
2、多次使用的相同變量最好歸納成常量
多處使用的相同值的變量應(yīng)該盡量歸納為一個(gè)常量暇韧,方便日后的維護(hù)懈玻。
3乾颁、盡量少的在循環(huán)中執(zhí)行方法調(diào)用
盡量在循環(huán)中少做一些可避免的方法調(diào)用,這樣可以節(jié)省方法棧的創(chuàng)建湿右。例如:
for(int i=0;i<list.size();i++){< span="">
System.out.println(i)毅人;
}
可以修改為:
for(int i=0,size=list.size()丈莺;i<size;i++){< span="">
System.out.println(i)分衫;
}
4蚪战、常量的定義可以放到接口中
在Java中铐懊,接口里只允許存在常量科乎,因此把常量放到接口中聲明就可以省去public static final這幾個(gè)關(guān)鍵詞茅茂。
5、ArrayList和LinkedList的選擇
這個(gè)問(wèn)題比較常見令杈。通常程序員最好能夠?qū)ist的使用場(chǎng)景做出評(píng)估逗噩,然后根據(jù)特性作出選擇异雁。ArrayList底層是使用數(shù)組實(shí)現(xiàn)的纲刀,因此隨機(jī)讀取數(shù)據(jù)會(huì)比LinkedList快很多示绊,而LinkedList是使用鏈表實(shí)現(xiàn)的锭部,新增和刪除數(shù)據(jù)的速度比ArrayList快不少空免。
6蹋砚、String,StringBuffer和StringBuilder
這個(gè)問(wèn)題也比較常見摄杂。在進(jìn)行字符串拼接處理的時(shí)候析恢,String通常會(huì)產(chǎn)生多個(gè)對(duì)象映挂,而且將多個(gè)值緩存到常量池中柑船。例如:
String a=“a”;
String b=“b”;
a=a+b;
這種情況下jvm會(huì)產(chǎn)生“a”,“b”,“ab”三個(gè)對(duì)象。而且字符串拼接的性能也很低鞍时。因此通常需要做字符串處理的時(shí)候盡量采用StringBuffer和StringBuilder來(lái)亏拉。
7、包裝類和基本類型的選擇
在代碼中逆巍,如果可以使用基本數(shù)據(jù)類型來(lái)做局部變量類型的話盡量使用基本數(shù)據(jù)類型及塘,因?yàn)榛绢愋偷淖兞渴谴娣旁跅V械模b類的變量是在堆中锐极,棧的操作速度比堆快很多笙僚。
8、盡早的將不再使用的變量引用賦給null
這樣做可以幫助jvm更快的進(jìn)行內(nèi)存回收溪烤。當(dāng)然很多人其實(shí)對(duì)這種做法并不感冒味咳。
9、在finally塊中對(duì)資源進(jìn)行釋放
典型的場(chǎng)景是使用io流的時(shí)候檬嘀,不論是否出現(xiàn)異常最后都應(yīng)該在finally中對(duì)流進(jìn)行關(guān)閉槽驶。
10鸳兽、在HashMap中使用一個(gè)Object作為key時(shí)要注意如何區(qū)分Object是否相同
在jdk的HashMap實(shí)現(xiàn)中爆班,判斷兩個(gè)Object類型的key是否相同的標(biāo)準(zhǔn)是hashcode是否相同和equals方法的返回值。如果業(yè)務(wù)上需要對(duì)兩個(gè)數(shù)據(jù)相同的內(nèi)存對(duì)象當(dāng)作不同的key存儲(chǔ)到hashmap中就要對(duì)hashcode和equals方法進(jìn)行覆蓋枢舶。
Java描述復(fù)雜數(shù)據(jù)結(jié)構(gòu)的主要方式是集合框架后众。Java沒有指針蒂誉,而是通過(guò)強(qiáng)大的集合框架描述數(shù)組锥债、對(duì)象數(shù)組等復(fù)雜的數(shù)據(jù)結(jié)構(gòu)广匙。
學(xué)好這些數(shù)據(jù)結(jié)構(gòu)的描述方法對(duì)于應(yīng)用程序編寫潮剪,特別是涉及到服務(wù)器方绽乔、3層結(jié)構(gòu)編程至關(guān)重要沙峻。程序員在這個(gè)時(shí)候不能再用諸如數(shù)據(jù)庫(kù)結(jié)果集之類的結(jié)構(gòu)描述數(shù)據(jù)了。
由于很多語(yǔ)言沒有這么強(qiáng)大的集合框架體系,很多初學(xué)者不知所措,更不知道拿來(lái)做什么用蒋纬,因此應(yīng)該引起足夠的重視。
現(xiàn)在開放資源免費(fèi)領(lǐng)取碾阁,送給需要高清架構(gòu)圖,架構(gòu)視頻資料、架構(gòu)電子書和Java面試文件,以及想要提升技術(shù)的朋友。
小編耗時(shí)數(shù)周佑吝,為大家準(zhǔn)備了Java資料q鵝群:103663-3591(群內(nèi)提供的Java技術(shù)+面試題目等500+資料集合,將是你不錯(cuò)的學(xué)習(xí)庫(kù)。)當(dāng)然也可加小編個(gè)人q:761825-680
相信大家,在學(xué)習(xí)的路上也遇到了不少的坑抖所,有人放棄傻粘,有人堅(jiān)持,但是我相信作為程序員的你不會(huì)想終其一生也只是一個(gè)開發(fā)