Main函數(shù)的作用,可以保證類的準(zhǔn)確的運(yùn)行,程序的入口
Javac是運(yùn)行,java是編譯
類的首字母大寫:
標(biāo)示符:由26個(gè)英文大小寫組成;數(shù)字:0-9符號(hào)_$字符組成 定義合法:數(shù)字不可以開(kāi)頭,不能使用關(guān)鍵字;Java嚴(yán)格區(qū)分大小寫,盡量見(jiàn)名之意
注釋: // // / 文檔注釋-說(shuō)明書*/ (注釋不編譯到字節(jié)碼文件中) 注釋作用:注解說(shuō)明\調(diào)試程序\面試的時(shí)候—開(kāi)發(fā)代碼必須寫注釋,寫程序也必須寫注釋.(新手老手的區(qū)別就是寫不寫注釋),代碼就是人的思想中的體現(xiàn)形式,
寫代碼的時(shí)候: 先寫多行注釋,需求 怎么想的-思路(步驟寫)
1. 定義一個(gè)類,java程序都是以類的形式存在的,,累的形式就是字節(jié)碼文件的最終體現(xiàn)
2.定義主函數(shù),讓類可以獨(dú)立運(yùn)行
3.字樣所需要的輸出語(yǔ)句
步驟: 1.用class關(guān)鍵字來(lái)完成類的定義,并起一個(gè)閱讀性強(qiáng)的類名
2.主函數(shù):固定格式,
3.輸出語(yǔ)句
常量 :
整數(shù)常量:所有整數(shù)
小數(shù)常量:所有小數(shù)
布爾型數(shù)據(jù),較為特殊;是true或false
字符常量:將一個(gè)數(shù)字字母或者符號(hào)用’’單引號(hào)表示
字符串常量:將一個(gè)或多個(gè)字符用雙引號(hào)表示;
null常量:只有一個(gè)null;
整數(shù)的四種表現(xiàn)形式:
二進(jìn)制:0 1滿二進(jìn)1
八進(jìn)制: 0-7滿8進(jìn)1,用0開(kāi)頭:就是二進(jìn)制位 3個(gè)二進(jìn)制位就是一個(gè)八進(jìn)制位
十進(jìn)制:0-9 滿10進(jìn)1
十六進(jìn)制 0-9 A-F 滿16進(jìn)一 用0x開(kāi)頭 A-10 其實(shí)就是二進(jìn)制中的四個(gè)二進(jìn)制為一個(gè)十六進(jìn)制位
負(fù)數(shù)的二進(jìn)制的表現(xiàn)形式:其實(shí)就是這個(gè)數(shù)的正數(shù)二進(jìn)制取反加一(負(fù)數(shù)的二進(jìn)制位是最高位)
修飾符(public\static) 返回值類型 函數(shù)名(參數(shù)類型 形式參數(shù)1,參數(shù)類型 形式參數(shù)2)
{
執(zhí)行語(yǔ)句;
return 返回值;
}
- 屬性:是對(duì)象所具有的特征
- 方法:是對(duì)象具有的行為。
- 類:把對(duì)象共性信息歸納,且用語(yǔ)言描述出來(lái),是對(duì)象抽象出來(lái)的
- 對(duì)象:具體存在的
- 接收數(shù)據(jù):
Scanner input = new Scanner(System.in);(需要導(dǎo)包) - Switch語(yǔ)句中,括號(hào)里只能是整數(shù)或自符類型的數(shù)據(jù)。
<switch(result){
case 1:System.out.println("****");break;
case 2:System.out.println("\\");break;
case 3:System.out.println("####");break;
default:
System.out.println("選擇有誤,即將退出");
//退出
System.exit(1);
}> - 退出語(yǔ)句:
System.exit(1); - 隨機(jī)數(shù):
int result = (int)(Math.random()*10)%3+1; - 封裝:把一些東西包裝在一起。
- 抽象:由一堆對(duì)象抽取一個(gè)類的過(guò)程。
- 畫類圖:
類名
屬性(“+”表示公有的,public類型,“—”表示私有的privat類型)
方法名
12:構(gòu)造方法:方法名和類名完全一樣,無(wú)返回值,通常是public訪問(wèn)修飾,給類內(nèi)部成員進(jìn)行初始化。
如果Dog類是第一次使用
《1》 類加載器加載Dog類到內(nèi)存,產(chǎn)生Dog類的type類對(duì)象。
《2》 在棧中給對(duì)象變量dd分配內(nèi)存。
《3》 在堆中給對(duì)象分配內(nèi)存
《4》 對(duì)堆內(nèi)存基本類型屬性,進(jìn)行清零操作。
《5》 執(zhí)行構(gòu)造方法中的代碼,對(duì)屬性進(jìn)行初始化。
《6》 將堆內(nèi)存首地址賦給對(duì)象變量dd。
構(gòu)造方法的潛規(guī)則:
《1》定義一個(gè)類,不寫構(gòu)造方法,編譯器會(huì)自動(dòng),添加一個(gè)無(wú)參無(wú)功能的構(gòu)造方法。
《2》如果定義一個(gè)帶參數(shù)構(gòu)造,編譯器不在自動(dòng)添加無(wú)參無(wú)功能的構(gòu)造方法,構(gòu)造參數(shù)的函數(shù)名不可與屬性名一致,否則不會(huì)在構(gòu)造方法中賦相同的值,如同名this.name=name
This指將來(lái)類執(zhí)行的代碼。
《3》.(構(gòu)造方法)子類構(gòu)造方法中的第一條語(yǔ)句,如果沒(méi)有使用super感覺(jué)真顯示調(diào)用父類構(gòu)造,默認(rèn)調(diào)用父類的無(wú)參構(gòu)造。
《4》(構(gòu)造方法)構(gòu)造方法地 名字必須和類名完全相同,沒(méi)有返回類型
13.繼承:不勞而獲
關(guān)鍵字 子類 extends 父類
super在子類調(diào)用父類必須放在構(gòu)造方法的第一條語(yǔ)句。
*********一般,在父類加一個(gè)無(wú)參數(shù)無(wú)功能的構(gòu)造方法
隱士規(guī)則:
《1》父類的方法,定義的了 有參數(shù)的構(gòu)造方法,無(wú)參數(shù)的構(gòu)造方法不生效
《2》.子類繼承父類后的構(gòu)造方法中第一條語(yǔ)句會(huì)默認(rèn)調(diào)用
步驟:
子類(如果子類和父類有參數(shù),那么構(gòu)造器的第一條必須是super語(yǔ)句后加參數(shù)變量------父類有子類沒(méi)有,子類構(gòu)造器的第一條語(yǔ)句super后跟常量,,,,,子類和父類沒(méi)有參數(shù)的話,不需要使用super)
《1》在內(nèi)存中的字段分配空間
《2》給子類里的屬性初始話
《3》實(shí)例化父類對(duì)象,然后是主類對(duì)象
包的作用:限制訪問(wèn)范圍;防止命名沖突
繼承規(guī)則:
《1》.如果一個(gè)類沒(méi)有標(biāo)明繼承自那個(gè)父類,默認(rèn)是繼承自O(shè)bject,
《2》實(shí)例化子類對(duì)象時(shí),必然會(huì)先實(shí)例化出一個(gè)父類對(duì)象,然后再父類對(duì)象的基礎(chǔ)上進(jìn)行的擴(kuò)展出一個(gè)子類對(duì)象
《3》(構(gòu)造方法)子類構(gòu)造方法中的第一條語(yǔ)句,如果沒(méi)有使用super感覺(jué)真顯示調(diào)用父類構(gòu)造,默認(rèn)調(diào)用父類的無(wú)參構(gòu)造。
《4》(構(gòu)造方法)構(gòu)造方法地 名字必須和類名完全相同,沒(méi)有返回類型
《5》子類不能繼承父類的三方面內(nèi)容————(private成員,子類與父類不在同包父類使用默認(rèn)訪問(wèn)權(quán)限的成員不能繼承/構(gòu)造方法)
《6》.遵循里氏替換原則的兩個(gè)類才可以建立繼承關(guān)系,
14.方法重寫(子類和父類有相同的方法)的規(guī)則:
《1》.方法重寫是在兩個(gè)類中(父與子)
《2》.方法名稱相同,參數(shù)列表相同,返回類型相同或是其子類,訪問(wèn)修飾符的范圍可以擴(kuò)大但是不能縮小。
重寫之后看重寫對(duì)象new的是誰(shuí) ,調(diào)用的就是誰(shuí)。
《3》方法綁定是在程序運(yùn)行的時(shí)候進(jìn)行的,根據(jù)new的對(duì)象是誰(shuí)就調(diào)用誰(shuí)的方法,屬于動(dòng)態(tài)綁定。
訪問(wèn)修飾符:private:在本類 調(diào)用
默認(rèn)的friendly在本類 同包 調(diào)用
Protect在本類 同包 子類 調(diào)用
Public在本類 同包 子類 其他類 調(diào)用。
15.方法的重載
《1》方法重寫是在一個(gè)類中
《2》方法名稱相同,參數(shù)列表不相同,(參數(shù)個(gè)數(shù)不同,對(duì)應(yīng)位置上的參數(shù)類型不同)
重寫之后看重寫對(duì)象new的是誰(shuí)
《3》方法綁定是在程序編譯的時(shí)候進(jìn)行的,根據(jù)參數(shù)列表不相同決定 調(diào)用誰(shuí)的方法,屬于靜態(tài)綁定。
16.抽象方法:
1。沒(méi)有實(shí)現(xiàn)的方法(有大括號(hào)就是實(shí)現(xiàn)的。沒(méi)有就是沒(méi)有實(shí)現(xiàn)的方法大括號(hào))去掉后, 在public后加 abstract關(guān)鍵字,規(guī)則是:如果一個(gè)方法有抽象方法的時(shí)候,這個(gè)類必須存在abstract必須定義成抽象類;
總結(jié)
《1》沒(méi)有實(shí)現(xiàn)的方法,(即沒(méi)有大括號(hào)的方法{ })叫抽象方法,必須加abstract
《2》包含抽象方法的類必須定義成抽象類,但是抽象不一定是包含抽象方法。
《3》. 抽象方法的意義:在于給子類制定標(biāo)準(zhǔn)和規(guī)范。。用來(lái)約束子類
標(biāo)準(zhǔn)和規(guī)范體現(xiàn)在:一方面體現(xiàn)在 子類中的 方法重寫上
2217.抽象類作用:規(guī)則
《1》一個(gè)子類繼承了抽象的父類,子類要么實(shí)現(xiàn)(即重寫父類中所有的抽象方法)父類中所有的抽象方法,否則子類必須也必須定義成抽象類
《2》抽象類不能實(shí)例化(就是不能new對(duì)象)
final關(guān)鍵字:不允許繼承父類,在類的class前加final,,不允許繼承屬性在void前繼承屬性,,屬性或方法里的常量,在類型前加final關(guān)鍵字,
instanceof 判斷對(duì)象是否是類的對(duì)象
開(kāi)辟原則:對(duì)原來(lái)的代碼封閉,對(duì)于新的代碼開(kāi)放
18.多態(tài):
《1》定義;相同的對(duì)象對(duì)同一個(gè)方法,表現(xiàn)出不同的行為
《2》表現(xiàn)實(shí)現(xiàn):方法重載、方法重寫,
- 接口:USB接口是一組規(guī)范,就是一組規(guī)范或標(biāo)準(zhǔn)。抽象的類
什么是面向接口編程?
規(guī)則:(也就是說(shuō)改一下關(guān)鍵字class-interface;里面的方法都是抽象的但是沒(méi)有abstract關(guān)鍵字;不加public也是公共的)《1》.兩方面理解:一方面從類的角度來(lái)說(shuō)是是一組純的抽象類(有abstract,就是這個(gè)類的方法都是抽象方法,即不存在非抽象的類,但是 里面都是抽象的方法,但是沒(méi)有關(guān)鍵字abstract)接口里所有的方法都是公共的加不加關(guān)鍵字public都可以
從意義的角度來(lái)說(shuō):接口就是一組規(guī)范或標(biāo)準(zhǔn),
《2》(implements 關(guān)鍵字)類實(shí)現(xiàn)接口
a.變相的實(shí)現(xiàn)多繼承(因?yàn)橹辉试S有一個(gè)父類)
b。可以將任務(wù)分解,有利于實(shí)現(xiàn)團(tuán)隊(duì)合作,
《3》接口是體現(xiàn)的是一種能力,設(shè)實(shí)現(xiàn)了接口,誰(shuí)具備了這種能力
面向接口編程
一個(gè)類只能有一個(gè)public,繼承一個(gè)父類,但是可以實(shí)現(xiàn)多個(gè)接口和抽象類的區(qū)別?
抽象類:只能是這個(gè)類的本身或者子類才能傳過(guò)來(lái);
接口:只要實(shí)現(xiàn)接口的類都能傳過(guò)來(lái);
接口的好處
1.變相的實(shí)現(xiàn)多繼承,
2.可以將任務(wù)分解,有利于實(shí)現(xiàn)團(tuán)隊(duì)合作,
抽象類和借口的區(qū)別
類里面的參數(shù),傳的時(shí)候傳類就是類的本身或者是子類對(duì)象,接口是只要是接口的都能傳過(guò)來(lái)
3.接口體現(xiàn)的是一種能力
20集合:
Collection:接口存儲(chǔ)一組不唯一,無(wú)序?qū)ο?br>
List接口存儲(chǔ)不唯一,有順序(插入對(duì)象)的對(duì)象
Set接口存儲(chǔ)一組唯一,無(wú)序的對(duì)象
Map接口存儲(chǔ)一組鍵值對(duì)象,提供key和value的映射…有HashMap和TreeMap
List的get(int index)方法獲取元素
Map的get(Object key)方法獲取元素
Iterator的next()方法獲取元素
HashMap(集合) 定義的size用來(lái)統(tǒng)計(jì)元素個(gè)數(shù) key是set。values是Coleection 是object類型
Map co = new HashMap();
co.size();統(tǒng)計(jì)字典的元素個(gè)數(shù)
co.get ("CN")存放的是object類型的鍵,想獲取某一元素的值
co.containsKey("FR"),判斷是否存在某一元素。
co.remove("FR");
co.keyset();、、鍵集合 返回字符串
co.values();//值集合字符串
co.clear();全部清除
co.isEmpty ()判斷是否為空
list的get(int index)方法獲取元素,Map的get(Object key)方法獲取元素,iterator的next方法獲取元素
Vactor(保證安全/多線程)和ArrayList(提高速度,單線程,重效率輕安全)的異同:vactor擴(kuò)容,默認(rèn)增加一倍,ArrayList增長(zhǎng)50%
Hashtable(安全)和HashMap(無(wú)安全)的區(qū)別:
Hashtable繼承Directionary類,HashMap實(shí)現(xiàn)Map接口
Hashtable線程安全,HAshMap線程非安全;
Hashtable不允許null值,HashMap允許null值
迭代器:實(shí)現(xiàn)Iterator接口的都稱為迭代器(iterater遍歷一個(gè)集合、for each循環(huán))
接口的方法:Boolean hasnext()是否存在下一個(gè)元素,返回bool值,Object next():返回要訪問(wèn)的下一個(gè)元素
泛型:類型不確定;,List<T>(類定義不確定,實(shí)例化的時(shí)候就確定了) 由類產(chǎn)生對(duì)象的時(shí)候
讀取便利的時(shí)候代碼有變化不用強(qiáng)轉(zhuǎn),對(duì)于test2的檢查,就不用強(qiáng)轉(zhuǎn)
LinkedList<Dog> dogs = new LinkedList<Dog>();
早期java利用jdbc---odbc 橋接的技術(shù),現(xiàn)在是純的jdbc操作數(shù)據(jù)庫(kù)
程序員調(diào)用的接口與類 如:
DriverManager類 Connection接口 Statement接口 ResultSet接口