知識(shí)點(diǎn)
構(gòu)造方法是在對(duì)象被創(chuàng)建時(shí)初始化對(duì)象的成員的方法祟偷。程序在創(chuàng)建對(duì)象時(shí)會(huì)自動(dòng)調(diào)用默認(rèn)的構(gòu)造方法猖凛,如果用戶定義了構(gòu)造方法衍腥,會(huì)覆蓋掉默認(rèn)構(gòu)造方法岂膳。
語(yǔ)法規(guī)則
1.方法名必須與類名相同
2.無(wú)返回值類型誓竿,也不能用void修飾
3.分為有參構(gòu)造和無(wú)參構(gòu)造
4.一個(gè)類有多個(gè)構(gòu)造方法時(shí),多個(gè)構(gòu)造方法重載
默認(rèn)的構(gòu)造方法
1.默認(rèn)的構(gòu)造方法沒(méi)有參數(shù)谈截,方法體沒(méi)有代碼筷屡,屬于“不做事”方法。
2.如果class前有修飾符簸喂,則默認(rèn)的構(gòu)造方法前也有相同的修飾符
3.類中只定義了有參構(gòu)造方法毙死,調(diào)用無(wú)參構(gòu)造方法創(chuàng)建對(duì)象,編譯不能通過(guò)
構(gòu)造方法中調(diào)用構(gòu)造方法
public Cylinder5() {
this(2.0 , 2 , "紅色");
System.out.println("無(wú)參構(gòu)造方法被調(diào)用了");
}
public Cylinder5(double r , int h , String c) {
System.out.println("有參構(gòu)造方法被調(diào)用了");
radius = r;
height = h;
color = c;
}
1喻鳄、在某一構(gòu)造方法中調(diào)用另一構(gòu)造方法時(shí)扼倘,必須使用this關(guān)鍵字來(lái)調(diào)用,否則報(bào)錯(cuò)
2除呵、this()必須寫(xiě)在構(gòu)造方法內(nèi)的第一行
調(diào)用父類的構(gòu)造方法
1再菊、構(gòu)造方法是不能被繼承的,但是子類可以調(diào)用父類的構(gòu)造方法
2.颜曾、Java程序在執(zhí)行子類的構(gòu)造方法之前纠拔,會(huì)先調(diào)用父類中的無(wú)參構(gòu)造方法,旨在幫助繼承自父類的成員做初始化操作
3泛豪、通過(guò)super(參數(shù)列表)調(diào)用父類特定的構(gòu)造方法稠诲,super()必須寫(xiě)在子類構(gòu)造方法的第一行(不能和this()存在于同一構(gòu)造方法里),super()可以重載
1诡曙、構(gòu)造方法是不能被繼承的臀叙,但是子類可以調(diào)用父類的構(gòu)造方法
2.、Java程序在執(zhí)行子類的構(gòu)造方法之前岗仑,會(huì)先調(diào)用父類中的無(wú)參構(gòu)造方法匹耕,旨在幫助繼承自父類的成員做初始化操作
3、通過(guò)super(參數(shù)列表)調(diào)用父類特定的構(gòu)造方法荠雕,super()必須寫(xiě)在子類構(gòu)造方法的第一行(不能和this()存在于同一構(gòu)造方法里)稳其,super()可以重載
構(gòu)造器創(chuàng)建對(duì)象
類的初始化&實(shí)例化順序
先初始化再實(shí)例化:靜態(tài)域--> 實(shí)例域--> 構(gòu)造函數(shù)
任何子類的動(dòng)作都會(huì)觸發(fā)父類:父類--> 子類
同一域的順序:創(chuàng)建-->賦值
對(duì)象創(chuàng)建過(guò)程
1驶赏、實(shí)例變量初始化
2、實(shí)例代碼塊初始化
3既鞠、構(gòu)造函數(shù)初始化
4煤傍、引用變量指向?qū)ο?/p>
集合
ArrayList
1、容量不固定嘱蛋,隨著容量的增加而動(dòng)態(tài)擴(kuò)容(閾值基本不會(huì)達(dá)到)
2蚯姆、有序集合(插入的順序==輸出的順序)
3、插入的元素可以為null
4洒敏、增刪改查效率更高(相對(duì)于LinkedList來(lái)說(shuō))
5龄恋、線程不安全
基本操作
public class ArrayListTest {
? ? public static void main(String[] agrs){
? ? ? ? //創(chuàng)建ArrayList集合:
? ? ? ? List<String> list = new ArrayList<String>();
? ? ? ? System.out.println("ArrayList集合初始化容量:"+list.size());
? ? ? ? //添加功能:
? ? ? ? list.add("Hello");
? ? ? ? list.add("world");
? ? ? ? list.add(2,"!");
? ? ? ? System.out.println("ArrayList當(dāng)前容量:"+list.size());
? ? ? ? //修改功能:
? ? ? ? list.set(0,"my");
? ? ? ? list.set(1,"name");
? ? ? ? System.out.println("ArrayList當(dāng)前內(nèi)容:"+list.toString());
? ? ? ? //獲取功能:
? ? ? ? String element = list.get(0);
? ? ? ? System.out.println(element);
? ? ? ? //迭代器遍歷集合:(ArrayList實(shí)際的跌倒器是Itr對(duì)象)
? ? ? ? Iterator<String> iterator =? list.iterator();
? ? ? ? while(iterator.hasNext()){
? ? ? ? ? ? String next = iterator.next();
? ? ? ? ? ? System.out.println(next);
? ? ? ? }
? ? ? ? //for循環(huán)迭代集合:
? ? ? ? for(String str:list){
? ? ? ? ? ? System.out.println(str);
? ? ? ? }
? ? ? ? //判斷功能:
? ? ? ? boolean isEmpty = list.isEmpty();
? ? ? ? boolean isContain = list.contains("my");
? ? ? ? //長(zhǎng)度功能:
? ? ? ? int size = list.size();
? ? ? ? //把集合轉(zhuǎn)換成數(shù)組:
? ? ? ? String[] strArray = list.toArray(new String[]{});
? ? ? ? //刪除功能:
? ? ? ? list.remove(0);
? ? ? ? list.remove("world");
? ? ? ? list.clear();
? ? ? ? System.out.println("ArrayList當(dāng)前容量:"+list.size());
? ? }
}
集合和數(shù)組
1、數(shù)組可以儲(chǔ)存基本數(shù)據(jù)類型和對(duì)象凶伙,而集合中只能儲(chǔ)存對(duì)象(可以以包裝類形式存儲(chǔ)基本數(shù)據(jù)類型)郭毕。
2、數(shù)組的長(zhǎng)度是固定的函荣,集合長(zhǎng)度是可以改變的显押。
3、定義數(shù)組時(shí)必須指定數(shù)組元素類型傻挂,集合默認(rèn)其中所有元素都是Object
4乘碑、集合有多種實(shí)現(xiàn)方式和不同的適用場(chǎng)合,而不像數(shù)組僅采用分配連續(xù)的空間方式
5金拒、集合以接口和類的形式存在兽肤,具有封裝,繼承和多態(tài)等類的特性殖蚕,通過(guò)簡(jiǎn)單的方法和屬性調(diào)用即可實(shí)現(xiàn)各種復(fù)雜的操作轿衔,大大提高軟件的開(kāi)發(fā)效率。
equals() 和 ==
equals是方法睦疫,而 == 是運(yùn)算符
equals()
1害驹、equals方法不能作用于基本數(shù)據(jù)類型的變量;
2蛤育、如果沒(méi)有對(duì)Object中equals方法進(jìn)行重寫(xiě)宛官,則比較的是引用類型的變量所指向的對(duì)象的地址,反之比較的是內(nèi)容
==
1瓦糕、作用于基本數(shù)據(jù)類型的變量底洗,則直接比較其存儲(chǔ)的 “值”是否相等
2、作用于引用類型的變量咕娄,則比較的是所指向的對(duì)象的地址
接口
定義
接口(Interface)亥揖,在JAVA編程語(yǔ)言中是一個(gè)抽象類型,是抽象方法的集合,接口通常以interface來(lái)聲明费变。一個(gè)類通過(guò)繼承接口的方式摧扇,從而來(lái)繼承接口的抽象方法。
語(yǔ)法
1挚歧、接口中每一個(gè)方法也是隱式抽象的,接口中的方法會(huì)被隱式的指定為 public abstract(只能是 public abstract扛稽,其他修飾符都會(huì)報(bào)錯(cuò))。
2滑负、接口中可以含有變量在张,但是接口中的變量會(huì)被隱式的指定為 public static final 變量(并且只能是 public,用 private 修飾會(huì)報(bào)編譯錯(cuò)誤)矮慕。
3帮匾、接口中的方法是不能在接口中實(shí)現(xiàn)的,只能由實(shí)現(xiàn)接口的類來(lái)實(shí)現(xiàn)接口中的方法凡傅。
//接口的聲明
interfaceprintable{
voidprint();
}
//接口的實(shí)現(xiàn)
classA6implementsprintable{
publicvoidprint() {
System.out.println("Hello, Interface");
?? }
類與接口的區(qū)別
接口不能用于實(shí)例化對(duì)象辟狈。
接口沒(méi)有構(gòu)造方法肠缔。
接口中所有的方法必須是抽象方法夏跷,Java 8 之后 接口中可以使用 default 關(guān)鍵字修飾的非抽象方法。
接口不能包含成員變量明未,除了 static 和 final 變量槽华。
接口不是被類繼承了,而是要被類實(shí)現(xiàn)趟妥。
接口支持多繼承猫态。
抽象類和接口的區(qū)別
\1. 抽象類中的方法可以有方法體,就是能實(shí)現(xiàn)方法的具體功能披摄,但是接口中的方法不行亲雪。
\2. 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是 public static final 類型的疚膊。
\3. 接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法(用 static 修飾的方法)义辕,而抽象類是可以有靜態(tài)代碼塊和靜態(tài)方法。
\4. 一個(gè)類只能繼承一個(gè)抽象類寓盗,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口灌砖。
接口的繼承
一個(gè)接口能繼承另一個(gè)接口,和類之間的繼承方式比較相似傀蚌。接口的繼承使用extends關(guān)鍵字基显,子接口繼承父接口的方法。
關(guān)閉窗口的方法
1.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//一個(gè)窗口點(diǎn)右上角×,只有該窗口會(huì)關(guān)閉
2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//一個(gè)窗口點(diǎn)右上角×,軟件的所有窗口都會(huì)關(guān)閉
3.System.exit(0)表示正常退出, JVMSystem.exit(1)表示異常退出JVM
正常退出 是指如果當(dāng)前程序還有在執(zhí)行的任務(wù)善炫,則等待所有任務(wù)執(zhí)行完成以后再退出撩幽;非正常退出 是只要時(shí)間到了,立刻停止程序運(yùn)行箩艺,不管是否還有任務(wù)在執(zhí)行窜醉。
階段總結(jié)
階段建議時(shí)間:一個(gè)月
實(shí)際完成時(shí)間:大約三個(gè)月
暑假學(xué)習(xí)狀態(tài):第一階段走得最快但是考核不理想制跟,考核兩次才達(dá)標(biāo);第二階段酱虎,進(jìn)度穩(wěn)定雨膨,考核理想;第三階段读串,八章以后聊记,之前的學(xué)習(xí)方法不適用了,無(wú)效學(xué)習(xí)了一段時(shí)間恢暖。嘗試寫(xiě)游戲才找到方向排监。
在校學(xué)習(xí)狀態(tài):到校兩星期后(10.26),重新學(xué)習(xí)Java杰捂,經(jīng)過(guò)兩天調(diào)整舆床,找到游戲目標(biāo),進(jìn)度穩(wěn)定前進(jìn)嫁佳。于11月12號(hào)寫(xiě)完游戲(畫(huà)面暫停的效果沒(méi)有實(shí)現(xiàn))挨队,18號(hào)考核(12號(hào)到18號(hào)之間,Java進(jìn)度又慢下來(lái)蒿往,等于這段時(shí)間沒(méi)學(xué))盛垦。
Java學(xué)習(xí)心得:
從理論到實(shí)踐,學(xué)習(xí)方法會(huì)有些許不同瓤漏。學(xué)習(xí)理論強(qiáng)調(diào)的是系統(tǒng)性和深度腾夯,簡(jiǎn)單來(lái)說(shuō)就是踏踏實(shí)實(shí)掌握所有該掌握的知識(shí)點(diǎn);寫(xiě)游戲要拓展知識(shí)面的廣度以及靈活變通蔬充,根據(jù)游戲的需要蝶俱,可能要額外地基礎(chǔ)以外的知識(shí),把所學(xué)知識(shí)運(yùn)用到游戲里饥漫,在這段時(shí)間榨呆,會(huì)面臨許多未知的bug,陌生感和迷茫感如影隨形趾浅,但只要不太偏離路線愕提,堅(jiān)持下來(lái),進(jìn)度會(huì)越來(lái)越快皿哨,越來(lái)越得心應(yīng)手浅侨。
不管是夯基礎(chǔ)還是寫(xiě)游戲,都需要去動(dòng)手操作证膨,敲代碼的過(guò)程是加深理解和加強(qiáng)運(yùn)用的過(guò)程如输。前八章百分之九十的代碼我都敲過(guò),暫時(shí)理解不了的知識(shí)點(diǎn)甚至?xí)磸?fù)去敲,至少讓腦子和肌肉記住不见。寫(xiě)游戲更需要敲代碼澳化。
積極溝通,在數(shù)據(jù)園以及學(xué)校稳吮,我完成學(xué)習(xí)任務(wù)或者不想學(xué)習(xí)了都會(huì)去組員那邊轉(zhuǎn)一轉(zhuǎn)缎谷,問(wèn)一下他們的進(jìn)度或者幫忙解決問(wèn)題,對(duì)于學(xué)習(xí)有沒(méi)有幫助不太清楚灶似,但是對(duì)調(diào)整心態(tài)還是很有幫助的列林。