第一篇:黑馬程序員視頻總結(jié)
面向?qū)ο螅好嫦驅(qū)ο笫窍鄬τ诿嫦蜻^程而言的。面向過程強調(diào)的是功能,面向?qū)ο髮⒐δ芊庋b進對象,強調(diào)的是具有功能的對象。
類是對現(xiàn)實生活的描述。對象是一類事物實實在在存在的個體。
堆內(nèi)存和棧內(nèi)存:基本類型的變量和對象的引用存儲在棧內(nèi)存;用new創(chuàng)建的對象和數(shù)組存儲在堆內(nèi)存。
封裝:隱藏對象的屬性和實現(xiàn)細節(jié),僅對外提供公共訪問方法。原則:將不需要對外提供的內(nèi)容都隱藏起來,將屬性都隱藏,提供公共方法對其訪問。好處:提高安全性,便于使用,提高重用性。
什么時候使用靜態(tài)?成員變量:當對象中有共享數(shù)據(jù)時。成員函數(shù):函數(shù)內(nèi)部沒有訪問到非靜態(tài)數(shù)據(jù)(對象的特有數(shù)據(jù))。
幫助文檔制作:/***/@author作者;@version 版本;@param 參數(shù);@return 返回結(jié)果 命令:javadoc-d 文件夾-author-version xxx.java。將生成一系列網(wǎng)頁。
靜態(tài)代碼塊:static{}。用于給類進行初始化,只執(zhí)行一次,優(yōu)先于主函數(shù)。
Person p=new Person():
1、找到Person.class加載到內(nèi)存。
2、執(zhí)行static代碼塊。
3、在棧內(nèi)存中開辟main()方法空間,并分配一個 變量p。
4、在堆內(nèi)存中開辟實體空間。
5、進行屬性的空間分配,并進行默認初始化。
6、對空間屬性進行顯示初始化。
7、實體的構(gòu)造代碼初始化。
8、調(diào)用對應的構(gòu)造函數(shù),進行構(gòu)造函數(shù)初始化。
9、將實體空間首地址賦給p。單例:
class Single{
private Single(){} //私有化構(gòu)造函數(shù)。
private static Single s = new Single();//靜態(tài)方法要訪問它,所以也要靜態(tài)化。靜態(tài)方法不能訪問非靜態(tài)的方法和屬性。創(chuàng)建私有并靜態(tài)的本類對象。
public static Single getInstance(){ //無法通過對象調(diào)用,只能是靜態(tài)。定義公有并靜態(tài)的方法,返回該對象。
return s;
}
}
//懶漢式:延遲加載方式。
class Single2{
private Single2(){}
private static Single2 s = null;
public static synchronized Single2 getInstance(){
if(s==null)
s = new Single2();
return s;
}
}
繼承:提高代碼復用性,并為多態(tài)打下基礎。Java只支持單繼承。多繼承隱患:多個父類定義相同功能時,子類對象不確定要運行哪一個。重載:方法名相同,但參數(shù)不同的多個同名函數(shù);
覆蓋:子類重寫父類的方法,要求方法名和參數(shù)類型完全一樣(參數(shù)不能是子類),返回值和異常比父類小或者相同(即為父類的子類),訪問修飾符比父類大或者相同
隱藏:父類和子類擁有相同名字的屬性或者方法時,父類的同名的屬性或者方法形式上不見了,實際是還是存在的。
多態(tài):同一操作作用于不同的對象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。
內(nèi)部類:內(nèi)部類可以直接訪問外部類的成員,包括私有。外部類必須建立內(nèi)部類對象才能訪問內(nèi)部類成員。
異常體系:error和exception
==和equals()的區(qū)別:“==”和“!=”比較的是“棧”中的內(nèi)容(對象的地址),而equals()比較的是“堆”中的內(nèi)容(對象的內(nèi)容)。
多線程:建立線程兩種方法:
1、繼承Thread類;
2、實現(xiàn)Runnable接口。繼承接口避免了單繼承的局限性。
線程對象.setDaemon(true)設置守護線程。線程啟動前調(diào)用,當正在運行的線程只有守護線程時,java虛擬機退出。
當a線程執(zhí)行b線程的.join()方法時,a會等待b線程執(zhí)行完才會執(zhí)行。
線程對象.setPriority()設置線程優(yōu)先級。
StringBuilder不是線程安全的,速度快;StringBuffer線程安全,慢。
泛型是一個類型安全機制,用于解決安全問題。
集合:
為方便存儲和操作對象,出現(xiàn)集合類。數(shù)組可以存儲對象,但長度固定,集合長度可變;數(shù)組可以存儲基本數(shù)據(jù)類型,集合只能存儲對象。
Collection:List和Set
List:有序,元素可以重復,有索引。
ArrayList,底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組。查找速度快。刪除元素用equals()判斷
LinkList,鏈表,增刪速度快。
Vector。線程同步,數(shù)組,查找速度快。
Set:無序。元素唯一。
HashSet:底層數(shù)據(jù)結(jié)構(gòu)式哈希表。通過hashCode()和equals()方法保持唯一性。如果元素hashCode值相同才會判斷equals是否為true;
TreeSet:底層是二叉樹。可以對元素進行排序。按自然順序就是compareTo()。
實現(xiàn)排序的兩種方法:
1、實現(xiàn)Comparable接口,覆蓋comapreTo(Object obj)方法。
2、實現(xiàn)Comparator接口,覆蓋compare(Object,Object)方法。
Map:
Hashtable,底層哈希表,不可以存儲null值或鍵。線程同步。效率低。
HashMap,哈希表,允許使用null值或鍵。不同步,效率高。
TreeMap。底層是二叉樹,線程不同步。可以給鍵進行排序。
獲取Map元素的兩種方法:
1、Set
2、Set
Collections:java集合的工具類,用于操作集合類。
Arrays集合:用于操作數(shù)組的工具類。
1.5新特性:可變參數(shù),int...arr
靜態(tài)導入:import static java.lang.System.*;用于導入靜態(tài)方法;import java.lang.*;用于導入類文件。
System類:getProperties()方法獲得返回系統(tǒng)屬性Properties(Map集合子類)對象。Runtime類:運行時操作類。單例設計模式。
Calendar類:抽象類,用getInstance()獲得對象。
Math類。
IO流:
常用基類:派生子類用父類名做后綴
字節(jié)流:InputStream,OutputStream
字符流:Reader,Writer
字符流:FileWriter,FileReader,需要flush();
字符流緩沖區(qū):BufferedReader,BufferedWriter;要結(jié)合流才能使用。需要flush(),關閉緩沖區(qū)就是關閉緩沖區(qū)的流對象。
LineNumberReader(FileReader)類,getLineNumber()方法可以獲得行號
字節(jié)流:FileOutputStream,F(xiàn)ileInputStream。操作多媒體文件。
轉(zhuǎn)換流:InputStreamReader,OutputStreamWriter。屬于字符流的子類。In(System.in),out返回字節(jié)流。
System.setIn(InputStream),System.setOut(PrintStream);改變標準輸入輸出。
File類:
合并流:SequenceInnputStream。用vector的elements()得到Enumeration。
切割文件:循環(huán)里邊創(chuàng)建流、關閉流。講一個文件分部分存儲在幾個文件中。
java.Awt:需要調(diào)用本地系統(tǒng)方法實現(xiàn)功能。
javax.Swing:完全由java實現(xiàn),增強移植性。
Component:
1、Container:Window,Panel
布局管理器:
1、FlowLayout,Panel默認布局;
2、BorderLayout,F(xiàn)ram默認。
TCP和UDP:TCP要經(jīng)過三次握手建立連接,傳輸大量數(shù)據(jù),可靠協(xié)議,效率低。UDP不需要建立連接,不可靠協(xié)議,速度快。
Socket:網(wǎng)絡服務的一種機制,網(wǎng)絡通信就是Socket間的通信,數(shù)據(jù)在兩個Socket間通信。TCP:Socket,ServerSocket
UDP:DatagramSocket,DatagramPacket
加強:
overload:重載,存在于父類和子類、同類中。只能通過不同參數(shù)樣式重載。
override:重寫,存在于父類和子類之間。方法名、參數(shù)、返回值相同。子類方法不能縮小父類方法訪問權(quán)限。不能拋出更多異常。
可變參數(shù):int...arr
For循環(huán)增強:for(int i:int[])
枚舉:讓某個變量的取值只能為若干個固定值中的一個。
反射:在運行狀態(tài)能夠知道類的所有屬性和方法,并調(diào)用對象的任意一個方法。獲取類信息以及調(diào)用對象的方法。
類加載器:負責加載java類的字節(jié)碼到虛擬機中。每個類加載器加載類時先委托給其上級加載器,當所有祖宗類加載器都沒有加載到類,回到發(fā)起者類加載器時,還沒加載到類,拋出ClassNotFoundException異常。
JavaBean:有set和get方法獲得類屬性的特殊java類。用于傳遞數(shù)據(jù)信息。
內(nèi)省:IntroSpector,java語言對Javabean屬性、事件的一些缺省處理方法。
Beanutils工具包
注解:@Override表示當前方法是覆蓋父類的方法。
@Deprecated表示當前元素是不贊成使用的。
@SuppressWarnings 表示關閉一些不當?shù)木幾g器警告信息。
Java系統(tǒng)默認三個類加載器:BootStrap,ExtClassLoader,AppClassLoader
創(chuàng)建動態(tài)類的實例對象:
1、通過實現(xiàn)的接口告訴要實現(xiàn)的動態(tài)類要實現(xiàn)哪些方法。
2、產(chǎn)生的類的字節(jié)碼要有一個關聯(lián)的類加載器對象。
3、執(zhí)行代碼的對象InvocationHandler。
代理:用Proxy類的getProxyClass(classLoader,interface)獲得動態(tài)類的字節(jié)碼文件。用反射獲得構(gòu)造器。用構(gòu)造器的newInstance()InvocationHandler接口的對象做參數(shù)獲得一個類對象。InvocationHandler對象重寫pubic Object invoke(Object proxy,Method method,Object
[] args)方法返回method.invoke(target,args)。
創(chuàng)建動態(tài)代理對象步驟:
1、實現(xiàn)InvocationHandler 接口創(chuàng)建自己的調(diào)用處理器。重寫invoke方法。
2、用Proxy.newProxyInstance(classLoader,new Class[]{Interface.class},handler}方法獲得代理類實例。
Bank:
NumberManager類:產(chǎn)生客戶
Private int lastNumber;
Private List
int synchronized generateNewManager():產(chǎn)生新客戶號碼。客戶線程調(diào)用。
int synchronized fetchServiceNumber():取走客戶號碼。窗口線程調(diào)用。List是共享數(shù)據(jù)。需要互斥。
NumberMachine類:號碼管理器,采用單例設計模式
private NumberManager commonManager;用get()返回對象。
private NumberManager expressManager;用get()訪問。
private NumberManager vipManager;用get()訪問。
Enum CustomerType COMMON,EXPRESS,VIP;
ServiceWindow類:窗口
private int windowId;窗口號碼
enum CustomerType type;
public void start(){Executors.newSingleThreadExcutor().execute(new Runnable(){publicvoid run(){}})};根據(jù)type啟動相應的窗口服務。
MainClass:main()函數(shù)類
開啟5個普通窗口。
一個快速
一個vip
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(NewRunnable(){重寫run},0,1,TimeUnit.SECONDS)。
第二篇:黑馬程序員自薦信
自薦信_XXX_151********
姓名:XXX
電話:151********
郵箱:********n2009@126.com
尊敬的老師:
你好,我叫XXX,今年24歲,就讀于XXXX,XXXX專業(yè),將于2012年畢業(yè)。性格稍內(nèi)向,善于交流,看待事情能夠理性認識,善于思考,有團隊合作精神。在學校的這三年多的時間里,由于專業(yè)需要,對計算機接觸較多。在開設的課程中學過C語言、C#、java等編程語言,對編程語言有一定的了解。在接觸java程序語言和J2ME手機游戲開發(fā)的學習中,對java產(chǎn)生了強烈的興趣,并對java學習有了一定的基礎。通過“黑馬程序員訓練營”的官網(wǎng),我了解到了javaee+3G課程體系所包含的知識面廣,是經(jīng)過對java前景分析和現(xiàn)在就業(yè)所需技術要求而制定的,對我們這些即將參加就業(yè)、想?yún)⒓觠ava方面工作的人來說是最好的強心劑。課程安排科學合理,有助于學員深化對java的學習,使學員掌握到真正前沿的技術。我深信,“黑馬程序員訓練營”的講師是java培訓和開發(fā)方面最棒的,這也是我鐘情于“黑馬程序訓練營”的原因之一。由于家里生活拮據(jù),不想讓父母操心、給家里增加經(jīng)濟負擔,是“黑馬程序員”給了我一個機會、給了我一份保證。
作為一名理科生,我有著很強的求知欲,勤奮,有上進心,對于堅信的事情能夠堅持到底。在平時學習過程中,善于獨立思考,遇到問題會嘗試各種方法去解決(網(wǎng)絡、老師、同學都是我的獲得知識的途徑)。平時喜歡看一些和自己專業(yè)的書籍,樂于了解一些最前沿的科技和未來的發(fā)展趨勢。注重的基礎知識的同時,喜歡探索新知識,在收獲知識的同時也收獲著樂趣。學習是一輩子的事情,也是一件樂事,就算將來學校的生活結(jié)束了,學習也永遠不會落下。
我非常期待能成為“黑馬程序員訓練營”的一員,如果這個愿望能實現(xiàn),我將以最大的熱情投入到“黑馬程序員訓練營”的學習中去,用自己的努力去實現(xiàn)的自身價值,用自己的成績回報“黑馬程序員訓練營”。我堅定工作后的第一件事就是努力工作,用工資償還培訓期間的費用,絕不辜負“黑馬程序員訓練營”對我的信任和老師的培養(yǎng)!請給我一份信任,我將以自己的自己的行動去回報。
擇是我的期望,給我一次機會還你一份驚喜。
非常感激你能在百忙之中翻閱我的自薦信。祝你工作順利,事業(yè)蒸蒸日上!
此致
敬禮
自薦人:XXX
2012年02月17號
第三篇:【黑馬程序員】Java基礎總結(jié)
【黑馬程序員】Java基礎總結(jié)
黑馬程序員的javaEE課程主要分為2個部分:java基礎+java就業(yè)。今天就簡單的給大家總結(jié)一下咱們java基礎的知識。
注:Java采用Unicode符號集,每個字符占2個字節(jié),無論英文還是中文還是其他字符。
標識符
為變量、類或方法起的名稱 以字母,下劃線、或者$符號開頭 由字母、數(shù)字、下劃線或者$符號開頭 區(qū)分大小寫,沒有長度限制,不能使用關鍵字 盡量取得容易辨識,見名知意
如:identifier、userName、user_Name、_sys_varl、$change
基本數(shù)據(jù)類型
Java定義了8中基本數(shù)據(jù)類型
[AppleScript] 純文本查看 復制代碼
?
/**
* @author 傳智播客 1 */ 2 布爾值----boolean(只有true和false兩種類型)3 字符-------char(16 位的Unicode字符 用單引號('')標注;'a'表示字母4 a
't' 表示制表符
'u'中?用確切的代替
申明5 并且初始化: char c = 'A'
申明變量 char ch1,ch2)6 整數(shù)--------byte(8位)short(16)int(32)long(64)【以0開7 頭表示八進制 ;以0x開始表示16進制】 浮點型-----float double
變量
必須在類的內(nèi)部【可以在方法外也可以在方法類】 在方法類定義的變量叫做局部變量,需要顯示的初始化
黑馬程序員合肥中心 編著
成員變量和類變量【對象】自動初始化【數(shù)字初始化為0,對象初始化為null】
常量
在程序運行中,其值保持不變的量
不同數(shù)據(jù)類型間的相互轉(zhuǎn)換【封裝Wrapper類】 Java中類的定義:
[AppleScript] 純文本查看 復制代碼
? /**
2* @author 傳智播客
3*/ 4 <修飾符> Class <類名>{ <屬性申明>;6
<構(gòu)造器申明>;7
<方法申明>;8 }
成員變量申明:
[AppleScript] 純文本查看 復制代碼
? <修飾符> <類型> <名稱>;修飾符:
[AppleScript] 純文本查看 復制代碼
? /** 2
* @author 傳智播客 3
*/ 4 final:修飾常量,常量的值不能被修改【例如 final int CONSTANT = 50;】 5 static:申明靜態(tài)變量[類變量] static int nCount;方法的申明:
[AppleScript] 純文本查看 復制代碼
? /** 2
* @author 傳智播客
黑馬程序員合肥中心 編著
3*/ 4 <修飾符> <返回值類型> <名稱>[參數(shù)列表]{ 5
語句;6 }
方法參數(shù)的傳遞方式:
1、值傳遞:形參是基本數(shù)據(jù)類型,方法調(diào)用時,實際參數(shù)把值傳遞給形式參數(shù),形式參數(shù)只是用實際參數(shù)的值初始化自己的存儲單元內(nèi)容;是兩個不同的存儲單元,所以方法執(zhí)行中,形式參數(shù)值的改變不會影響實際參數(shù)的值。
2、引用傳遞:形參類型是引用數(shù)據(jù)類型【傳遞地址】,方法調(diào)用時,實際參數(shù)是對象或者數(shù)組,這時,形式參數(shù)和實際參數(shù)指向的是同一地址,方法執(zhí)行中,對形式參數(shù)的操作實際上是對實際參數(shù)的操作,這個結(jié)果在方法結(jié)束后被保留了下來,所以對形式參數(shù)的操作實際上就是對實際參數(shù)的操作。構(gòu)造器申明:
[AppleScript] 純文本查看 復制代碼
?
/** 1 * @author 傳智播客 2 */ 3 <修飾符> <類名>[參數(shù)列表]{ 4
語句;5 } 6 注釋:構(gòu)造器沒有返回值,void也不行;如果有返回值,方法會被當做普通函7 數(shù)執(zhí)行; 構(gòu)造器函數(shù)特點:
1、作用:完成對類對象的初始化
2、名稱必須和類名相同
3、不能有返回值,不能有 return 語句
4、一般申明為Public類型 構(gòu)造器的使用:
黑馬程序員合肥中心 編著
1、不能現(xiàn)實的調(diào)用
2、在創(chuàng)建一個類的對象時,系統(tǒng)自動調(diào)用構(gòu)造器為該對象初始化
3、構(gòu)造器只能和new關鍵字一起使用
格式:
類名 對象名 = new 構(gòu)造函數(shù)名稱(成員變量的初始值);
默認構(gòu)造器:
1、每個類至少有一個構(gòu)造器
2、如果不編寫構(gòu)造函數(shù),系統(tǒng)自動添加默認的構(gòu)造函數(shù)【默認構(gòu)造函數(shù)不帶參數(shù),默認構(gòu)造函數(shù)函數(shù)體為空】
3、不必編寫構(gòu)造函數(shù)就能使用new XXX()
創(chuàng)建實例
對象創(chuàng)建格式:
<對象名> = new <類名>(實參)
對象的清除:
對象為null時,Java自動調(diào)用垃圾回收機制清除對象,釋放對象占用的內(nèi)存空間 手動編寫finalize()方法撤銷對象--不提倡
對象的內(nèi)存模型:
棧內(nèi)存:方法中定義的變量(基本類型和引用類型)。超過變量的作用域,自動釋放變量的內(nèi)存
堆內(nèi)存:new 創(chuàng)建的對象(包括數(shù)組),由系統(tǒng)自動回收
類的繼承【僅支持單繼承】
[AppleScript] 純文本查看 復制代碼
? /**
2* @author 傳智播客
3*/ 4 <修飾符> class <名稱> extends <父類>{ 申明;6 }
黑馬程序員合肥中心 編著
子類可以繼承父類中非private的方法和屬性;子類可以添加新的屬性和方法;【程序代碼重,減少冗余】 方法的重載(overload):
1、一個類中有多個同名的方法
2、條件:參數(shù)的個數(shù)不同;參數(shù)的類型不同
3、如果兩個方法只有返回值不一樣,不是重載,會報錯
方法的覆蓋(override):
1、子類可以修改父類繼承過來的行為
2、子類可以創(chuàng)建和父類的方法不同功能的方法,但是下面必須相同:【方法名、返回值、參數(shù)列表】
super關鍵字:
往往在覆蓋方法時,真正不目的不是代替現(xiàn)有的行為,而是在某些方面擴展那些行為; 類中使用super關鍵字指向父類的成員 包括數(shù)據(jù)和方法; 3中使用方法:
super.方法名([參數(shù)表]);----調(diào)用父類的方法 super.成員變量名;----訪問父類的成員變量 super([參數(shù)表]);----調(diào)用父類的構(gòu)造函數(shù)
構(gòu)造函數(shù)不能被繼承:
子類從父類繼承所有的方法和變量 子類不能繼承父類的構(gòu)造函數(shù)
有兩種方式可以獲取構(gòu)造函數(shù):
1、使用默認的構(gòu)造函數(shù)
2、編寫1個或者多個構(gòu)造函數(shù)
調(diào)用父類的構(gòu)造函數(shù):
要調(diào)用父類的構(gòu)造函數(shù),必須在子類構(gòu)造函數(shù)的第一行使用super關鍵字
黑馬程序員合肥中心 編著
要調(diào)用特定的父類的構(gòu)造函數(shù),必須為super提供參數(shù)
如果沒有this或者super調(diào)用,編譯器會插入一個對父類無參數(shù)構(gòu)造函數(shù)的隱式調(diào)用: super();
變量的多態(tài):
類型為X的參考變量,指向的對象類型既可以是X,也可以是X的子類; 如: Employee x = new Manager();Employee y = new Employee();
實例方法能夠被覆蓋,靜態(tài)(static)方法不能被覆蓋 原因:
靜態(tài)方法在編譯時候,根據(jù)調(diào)用該方法的類或者對象所屬的類決定 實例方法在運行時根據(jù)對象所屬的類決定
如:Super s = new Sub();編譯時候S是Super類的對象,運行時 S 指向Sub類的對象;
instanceof操作符:
可以根據(jù)對象所屬的類進行不同的處理 抽象類:只能被繼承,不能被實例化的類 定義格式:
[AppleScript] 純文本查看 復制代碼
? /**
2* @author 傳智播客
3*/ 4 abstract class 類名{ abstract 返回值類型
方法名[參數(shù)列表];6
...7 } 說明:
抽象類中可以包含抽象方法和非抽象方法,也可以不包含抽象方法和非抽象方法;只要有一個抽象方法,就屬于抽象類;
[AppleScript] 純文本查看 復制代碼
黑馬程序員合肥中心 編著
?
01 /** 02
* @author 傳智播客 03
*/ 04 abstract class Animal{ 05
public abstract void eat();06
} 07
class Dog extends Animal{ 08
public void eat(){System.out.println(“狗吃骨頭”);} 09
} 10class Cat extends Animal{ 12
public void eat(){System.out.println(“貓吃老鼠”);} 13 } 115 class Wolf extends Animal{ 16
public void eat(){System.out.println(“狼吃羊”);} 17 } 說明:不能創(chuàng)建抽象類的對象,即不能被實例化;
使用時,必須用起創(chuàng)建子類
子類可以定義自己的成員變量和方法,但是必須將父類的所有抽象方法代碼寫完;
如果子類只是實現(xiàn)了部分抽象的方法,那么,該類仍然是抽象類; 最終類:
final 類不能被子類化;如Java.lang.String 是final 類,這樣做是基于安全的考慮; 標記為final的方法不能被覆蓋;處于安全的考慮,如果方法的實現(xiàn)不應改變,而且對對象的一致性要求比較高,則可以創(chuàng)建一個final方法。
標記為final的變量代表常量,只能一次賦值; 接口:
使用interface關鍵字申明,可以支持多重繼承 接口中只能包含: 抽象方法;
黑馬程序員合肥中心 編著
常量(默認為 public static final)【用得較少】 說明:
1、接口本身只是提供定義,使用時,必須通過類實現(xiàn)接口(implements)實現(xiàn)接口時,必須實現(xiàn)所有的方法。否則該類還是抽象類(abstract class)。
2、一個雷尅實現(xiàn)多個接口。
3、擴展子句(extends)必須在實現(xiàn)子句(implements)之前
包:
package <頂層包名>[.<子包名>]*;
如:package shipping.domain;說明:
1、如果有包申明,必須在源文件開始處申明。他的前面只能有空白和注釋,不能有其他語句;
2、每個源文件只能有一個包申明;
3、如果沒有包申明,則該類屬于“默認”包(沒有名稱的包)
4、包的名稱有層次,且用.分開;
import語句: 基本語法:
import <包名>[.<子包名>].<類名> 或者import <包名>[.<子包名>].*;
其實在學習java過程中基礎還是比較容易,如果大家想學習java基礎的知識,歡迎大家可以去傳智播客官網(wǎng)http://www.tmdps.cn/去了解java基礎知識!
黑馬程序員合肥中心 編著
第四篇:黑馬程序員:Java集合簡單總結(jié)
黑馬程序員:Java集合簡單總結(jié)
在Java語言中,學好集合是非常重要的,下面簡單的對集合進行總結(jié),以便大家學習,有
問題再相互交流。
集合框架圖
在集合框架圖中可以看出,Collection接口中主要有兩個子接口,分別是List和Set。List集合的特點是元素有序、包含重復元素,Set集合的特點是元素無序、不包含重復元素。Map集合中存儲的是鍵值映射關系,元素都是成對出現(xiàn)的。Map接口的主要子接口有HashMap和TreeMap。
總結(jié)ist有順序有重復沒有排序,set無重復有排序,map的key也和set一樣。
List接口
List : 特點是元素有序、可以包含重復元素。它有兩個實現(xiàn)類分別是:ArrayList和LinkedList。
ArrayList : 內(nèi)部維護一個數(shù)組結(jié)構(gòu),允許對元素進行快速隨機訪問,但是向List中間插入與移除元素的速度很慢。
LinkedList : 內(nèi)部維護了一個雙向鏈表結(jié)構(gòu),即通過節(jié)點之間彼此連接來實現(xiàn)的,每一個節(jié)點都包含前一個節(jié)點和后一個節(jié)點的引用。當一個新節(jié)點插入時,只需要修改其中保持先后關系的節(jié)點引用即可,這樣的存儲結(jié)構(gòu)保證了LinkedList集合在增刪元素時效率非常高。
Set接口
Set具有與Collection完全一樣的接口,因此沒有任何額外的功能,不像前面的List。實際上Set就是Collection只是行為不同,也就是說Set集合并沒有對Collection接口進行擴充,只是比collection接口要求更加嚴了。
Set : 存入Set的每個元素都必須是唯一的,因為Set不保存重復元素。加入Set的元素必須定義equals()方法以確保對象的唯一性。
HashSet : 為快速查找設計的Set。存入HashSet的對象必須定義hashCode()。
TreeSet : 保存有序的Set, 底層為樹結(jié)構(gòu)。使用它可以從Set中提取有序的序列。
LinkedHashSet : 具有HashSet的查詢速度,且內(nèi)部使用鏈表維護元素的順序。于是在使用迭代器遍歷Set時,結(jié)果會按元素插入的次序顯示。
Map接口
Map用于保存具有映射關系的數(shù)據(jù),因此Map集合里存儲兩組值,一組用于保存Map里的key,另一組用于保存Map中的value,key和value都可以是任意引用類型數(shù)據(jù),其中,作為key的值是不允許重復的,而value中可以出現(xiàn)重復。Map : 維護“鍵值對”的關聯(lián)性,使你可以通過“鍵”查找“值”。
HashMap就是使用對象的hashCode()進行快速查詢的。此方法能夠顯著提高性能。HashMap集合是基于哈希表的Map接口實現(xiàn),并允許使用null鍵null值,但必須保證鍵的唯一性。
LinkedHashMap : 類似于HashMap,但是迭代遍歷它時,取得“鍵值對”的順序是其插入次序。而在迭代訪問時發(fā)而更快,因為它使用鏈表維護內(nèi)部次序。
TreeMap : 基于紅黑樹數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)。查看“鍵”或“鍵值對”時,它們會被排序(順序由Comparabel或Comparator決定)。TreeMap的特點在于,你得到的結(jié)果是經(jīng)過排序的。
Hashtable線程安全,但是存取速度很慢,且不允許存放null鍵null值,目前基本上被hashMap類所取代。Hashtable有一個重要的子類Properties。
Properties:java.util.Properties;key和value都是String類型,用來讀配置文件。繼承自Hashtable,比 Hashtable 更嚴格 屬性列表中每個鍵及其對應值都是一個字符串。常用方法 String getProperty(String?key)和 setProperty(String key,String value);
用法:我在D盤下建了一個名為 AA.dat 的文件,文件的內(nèi)容為:
name=ch
password=12345
執(zhí)行以下程序,輸出 ch,可見用 Properties 可以很方便的解析配置文件 Properties p = new Properties();p.load(new FileInputStream(“D:AA.dat”));System.out.println(p.getProperty(“name”))
第五篇:黑馬程序員自薦信
黑馬程序員自薦信
在當今社會中,需要使用自薦信的場合越來越多,自薦信可以幫助我們更好地提出請求。你還在為寫自薦信而苦惱嗎?以下是小編為大家整理的黑馬程序員自薦信,僅供參考,希望能夠幫助到大家。
尊敬的老師:
您好!
在閱讀過幾十份,甚至上百份的自薦信之后,或許,您已經(jīng)有了些許疲倦與困意,但還是感謝您打開了我的這封自薦信。對于您來說,或許只是打開了一封信,而對于我來說,您為我開啟了一扇窗,一扇可以看見未來,追逐夢想的的窗戶。
我是趙玉杰,現(xiàn)在就讀于沈陽建筑大學,理學院,信息與計算科學專業(yè),目前大三。說起來,我也和黑馬有點緣分,由于專業(yè)的.相近性,我在學校學習了c語言,c++語言,java語言,數(shù)據(jù)庫(sql),數(shù)據(jù)結(jié)構(gòu)(c語言版),計算機網(wǎng)絡,操作系統(tǒng)等相關科目,算是有一點基礎,但也僅僅只能是基礎。這個社會需要的不是基礎,而是真才實干。
力,獲得足夠的項目經(jīng)驗,掌握得心應手的實際操作……就是讓我從眾多畢業(yè)生里面脫穎而出的最佳選擇。為了這一目標,我發(fā)現(xiàn)了黑馬,一匹讓我很驚訝的黑馬!!
“黑馬程序員”成立于20xx年,20xx年正式上線運營。在短短的3年里,在it培訓行業(yè),“黑馬程序員”不負眾望的成為了一匹業(yè)界高度認可的黑馬。在短短的四年時間里,“黑馬程序員”為社會塑造了一大批it相關行業(yè)的精英。從黑馬畢業(yè)的學員,得到了公司與社會的認可,實現(xiàn)了自己的社會價值,人生目標。在中關村軟件園與csdn的大力支持下,在傳智播客的教學實施下,“黑馬程序員”已經(jīng)成為了程序員的一種標榜,而能成為“黑馬程序員”的一員,是每一個程序員的愿望,更是一種榮耀。而我更是殷切的希望能夠成為黑馬的一員,讓我脫穎而出,讓我底氣十足。
關于黑馬的“0學費入學”教學理念,也是特別吸引我的一大亮點。據(jù)我了解,每一位黑馬學員都必須通過長達2個月的面試流程,在技術,自學能力,性格,壓力,品德等等全方位測試。可以說,黑馬程序員訓練營的所有學員都是精挑細選出來的。我很期待能與這樣的精英一起努力。畢業(yè)之后,“工資低于4k,不收任何費用,”只有真正有實力,有責任,有擔當?shù)暮隈R才能說的出口。而從黑馬走出的每一個學員,都有能力,有責任,有義務履行我們當初的還款以及相關協(xié)議,關于這一點,我堅信不疑。