javaSE第七天
第七天????36
1. 成員變量和局部變量的區(qū)別(理解)????36
(1)在類中的位置不同????36
(2)在內(nèi)存中的位置不同????36
(3)生命周期不同????36
(4)初始化值不同????37
2. 形式參數(shù)的問題?(理解)????37
3. 匿名對(duì)象(理解)????37
4. 封裝(理解)????37
5. private關(guān)鍵字(掌握)????37
6. this關(guān)鍵字(掌握)????38
7. 構(gòu)造方法(掌握)????38
(1)作用:????38
(2)格式:????38
(3)構(gòu)造方法的注意事項(xiàng)????38
(4)給成員變量賦值的方式????38
(5)標(biāo)準(zhǔn)案例????38
8. 成員方法的分類及使用????39
9. 代碼:Student s = new Student();做了哪些事情?(理解)????41
10. 面向?qū)ο蟮木毩?xí)題(掌握)????41
11. 關(guān)鍵字static 引入和應(yīng)用????41
(1). static 的特點(diǎn):(它可以修飾成員變量,還可以修飾成員方法)????41
(2). Static 關(guān)鍵字的內(nèi)存圖解????42
(3).static 的注意事項(xiàng)????42
12. 靜態(tài)變量和成員變量的區(qū)別(理解)????42
13. main 方法的格式講解????43
?
?
第七天
?
1. 成員變量和局部變量的區(qū)別(理解)
????(1)在類中的位置不同
????????成員變量:類中方法外
????????局部變量:方法定義中或者方法聲明上
????(2)在內(nèi)存中的位置不同
????????成員變量:在堆內(nèi)存中
????????局部變量:在棧內(nèi)存中
????(3)生命周期不同
????????成員變量:隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失
????????局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失
????(4)初始化值不同
????????成員變量:有默認(rèn)值
????????局部變量:沒有默認(rèn)值,必須定義,賦值,然后才能使用
????注意事項(xiàng):
???????????? 局部變量名稱可以和成員變量名稱一樣,在方法中使用的時(shí)候,采????用的是就近原則。
2. 形式參數(shù)的問題?(理解)
????(1)形式參數(shù)是類:
如果你看到一個(gè)方法需要的參數(shù)是一個(gè)類名,就應(yīng)該知道這里實(shí)際需要的是一個(gè)具體的對(duì)象。
基本類型:形式參數(shù)的改變不影響實(shí)際參數(shù)
引用類型:形式參數(shù)的改變直接影響實(shí)際參數(shù)的值
3. 匿名對(duì)象(理解)
????(1)沒有名字的對(duì)象
????(2)應(yīng)用場景
????????A:調(diào)用方法,僅僅只調(diào)用一次的時(shí)候。(注意:不適合調(diào)用多次)
????????b:可以作為實(shí)際參數(shù)傳遞。
????(3)匿名調(diào)用有什么好處?
答:有,匿名對(duì)象在調(diào)用完畢之后就是垃圾,可以被垃圾回收器回收
4. 封裝(理解)
????(1)隱藏實(shí)現(xiàn)細(xì)節(jié),提供公共的訪問方式
????(2)好處:
????????A:隱藏實(shí)現(xiàn)細(xì)節(jié),提供公共的訪問方式
????????B:提高代碼的復(fù)用性
????????C:提高代碼的安全性
????(3)設(shè)計(jì)原則
????????把不想讓外界知道的實(shí)現(xiàn)細(xì)節(jié)給隱藏起來,提供公共的訪問方式
????(4)private是封裝的一種體現(xiàn)。
????????封裝:類,方法,private修飾成員變量
?
5. private關(guān)鍵字(掌握)
????(1)私有的意義,可以修飾成員變量和成員方法
????(2)特點(diǎn):
????????被private修飾的后的成員只能在本類中被訪問
????(3)private的應(yīng)用:
????????以后再寫一個(gè)類的時(shí)候:
????????????把所有的成員變量給private了
????????????提供對(duì)應(yīng)的getXxx()/setXxx()方法
?
6. this關(guān)鍵字(掌握)
????(1)代表當(dāng)前類的引用對(duì)象
????????記住:哪個(gè)對(duì)象調(diào)用方法,該方法內(nèi)部的this就代表那個(gè)對(duì)象
????(2)this的應(yīng)用場景:
????????A:解決了局部變量隱藏成員變量的問題
????????B:其實(shí)this還有其他的應(yīng)用,明天講解。
?
7. 構(gòu)造方法(掌握)
????(1)作用:
用于給對(duì)象的數(shù)據(jù)進(jìn)行初始化
????(2)格式:
????????A:方法名和類名相同
????????B:沒有返回值類型,連void都不能有
????????C:沒有返回值
????????
????????思考題:構(gòu)造方法中可不可以有return語句呢?
????????可以。而是我們寫成這個(gè)樣子就OK了:return;
????????其實(shí),在任何的void類型的方法的最后你都可以寫上:return;
????(3)構(gòu)造方法的注意事項(xiàng)
????????A:如果我們沒寫構(gòu)造方法,系統(tǒng)將提供一個(gè)默認(rèn)的無參構(gòu)造方法
????????B:如果我們給出了構(gòu)造方法,系統(tǒng)將不再提供默認(rèn)的無參構(gòu)造方法
????????????如果這個(gè)時(shí)候,我們要使用無參構(gòu)造方法,就必須自己給出。
????????????推薦:永遠(yuǎn)手動(dòng)自己給出無參構(gòu)造方法。
????(4)給成員變量賦值的方式
????????A:setXxx()
????????B:帶參構(gòu)造方法
????(5)標(biāo)準(zhǔn)案例
????????
class Student { ????private String name; ????private?int?age; ? ????public Student() { ????} ? ????public Student(String name, int?age) { ????????this.name = name; ????????this.age = age; ????} ? ????public String getName() { ????????return?name; ????} ? ????public?void setName(String name) { ????????this.name = name; ????} ? ????public?int getAge() { ????????return?age; ????} ? ????public?void setAge(int?age) { ????????this.age = age; ????} } |
?
????????測(cè)試:
????????
class StudentDemo { ????public?static?void main(String[] args) { ????????// 方式1 ????????Student s1 = new Student(); ????????s1.setName("林青霞"); ????????s1.setAge(27); ????????System.out.println(s1.getName() + "---" + s1.getAge()); ? ????????// 方式2 ????????Student s2 = new Student("劉意", 30); ????????System.out.println(s2.getName() + "---" + s2.getAge()); ????} } |
?
8. 成員方法的分類及使用
?
?
class Student { ????public String getString() { ????????return?"helloworld"; ????} ? ????public?void show() { ????????System.out.println("show"); ????} ? ????public?void method(String name) { ????????System.out.println(name); ????} ? ????public String function(String s1, String s2) { ????????return?s1 + s2; ????} } ? class StudentDemo { ????public?static?void main(String[] args) { ????????// 創(chuàng)建對(duì)象 ????????Student s = new Student(); ? ????????// 調(diào)用無參無返回值方法 ????????s.show(); ? ????????// 調(diào)用無參有返回值方法 ????????String result = s.getString(); ????????System.out.println(result); ? ????????// 調(diào)用帶參無返回值的方法 ????????s.method("林青霞"); ? ????????// 調(diào)用帶參帶返回值的方法 ????????String result2 = s.function("hello", "world"); ????????System.out.println(result2); ????} } |
?
?
9. 代碼:Student s = new Student();做了哪些事情?(理解)
????(1)把Student.class文件加載到內(nèi)存
????(2)在棧內(nèi)存為s開辟空間
????(3)在堆內(nèi)存為學(xué)生對(duì)象申請(qǐng)空間
????(4)給學(xué)生的成員變量進(jìn)行默認(rèn)初始化。null,0
????(5)給學(xué)生的成員變量進(jìn)行顯示初始化。林青霞,27
????(6)通過構(gòu)造方法給成員變量進(jìn)行初始化。劉意,30
????(7)對(duì)象構(gòu)造完畢后,把堆內(nèi)存的地址賦值給棧內(nèi)存的s變量
????????
10. 面向?qū)ο蟮木毩?xí)題(掌握)
????(1)標(biāo)準(zhǔn)的手機(jī)類的定義和測(cè)試
????(2)Demo類有求和方法,Test類進(jìn)行測(cè)試。
????????A) 變量什么時(shí)候定義為成員變量?
答:如果這個(gè)變量是用來描述這個(gè)類的信息時(shí),那么,該變量就應(yīng)該定義為成員變量。
B) 變量到底定義在哪里比較好?
答:變量的范圍是越小越好,因?yàn)槟芗皶r(shí)的被回收。
????????
????(3)長方形案例
????(4)員工案例
????(5)MyMath案例(自己提供加減乘除并測(cè)試)
?
?
11. 關(guān)鍵字static 引入和應(yīng)用
(1). static 的特點(diǎn):(它可以修飾成員變量,還可以修飾成員方法)
A:隨著類的加載而加載
B:優(yōu)先于對(duì)象存在
C:被類的所有對(duì)象所共享
????????舉例:班級(jí)的學(xué)生應(yīng)該共用同一個(gè)班級(jí)編號(hào)
其實(shí)這個(gè)特點(diǎn)也是在告訴我們什么時(shí)候使用靜態(tài)?
答:如果某個(gè)成員變量是被所有對(duì)象共享的,那么它就應(yīng)該被定義為靜態(tài)的
D:可以通過類名調(diào)用
其實(shí)他本身也可以通過對(duì)象調(diào)用
推薦使用類名調(diào)用
靜態(tài)修飾的內(nèi)容一般我們稱其為:與類相關(guān)的,類成員
(2). Static 關(guān)鍵字的內(nèi)存圖解
(3).static 的注意事項(xiàng)
????A:在靜態(tài)方法中是沒有this關(guān)鍵字的
????????如何理解呢?
????????????靜態(tài)是隨著類的加載而加載,this是隨著對(duì)象的創(chuàng)建而存在。
????????????靜態(tài)比對(duì)象先存在。
????B:靜態(tài)方法只能訪問靜態(tài)的成員變量和靜態(tài)的成員方法
????????????a: 靜態(tài)方法:
????????????????a). 成員變量:只能訪問靜態(tài)變量
????????????????b). 成員方法:只能訪問靜態(tài)成員方法
????????????b: 非靜態(tài)方法:
????????????????a). 成員變量:可以是靜態(tài)方法,也可以是非靜態(tài)方法
????????????????b). 成員方法:可是是靜態(tài)的成員方法,也可以是非靜態(tài)的????????????????????????????????????成員方法。
????????????簡單記:
????????????????A)靜態(tài)只能訪問靜態(tài)。
B) 非靜態(tài)的:既可以訪問非靜態(tài)的,也可以訪問靜態(tài)的
?
?
12. 靜態(tài)變量和成員變量的區(qū)別(理解)
13. main 方法的格式講解
public static void main(String[] args) {...}
Public: 公共的,訪問權(quán)限是最大的,由于main方法是被jvm調(diào)用,所以權(quán)限要夠大
Static:靜態(tài)的,不需要?jiǎng)?chuàng)建對(duì)象,通過類名就可以調(diào)用,方便jvm直接調(diào)用
void :因?yàn)槲覀冊(cè)?jīng)說過,方法的返回值是返回非調(diào)用者的,而main方法是被jvm調(diào)用,所以你返回內(nèi)容給 jvm 是沒有意義的
main :是一個(gè)常見的方法入口,我見過的語言都是以 main 作為方法入口的
String[] args : 這是一個(gè)字符串?dāng)?shù)組,值去哪里呢?
這個(gè)東西到底有什么用啊?怎么給值呢?
答:這個(gè)東西早期是為了接受鍵盤錄入的數(shù)據(jù)的
格式為: java MainDemo hello world java
?
class MainDemo { ????public?static?void main(String[] args) { ????????// System.out.println(args); //[Ljava.lang.String;@175078b ????????// System.out.println(args.length); //0 ????????// System.out.println(args[0]); //ArrayIndexOutOfBoundsException ? ????????// 接收數(shù)據(jù)后 ????????System.out.println(args); ????????System.out.println(args.length); ????????// System.out.println(args[0]); ????????for (int?x = 0; x < args.length; x++) { ????????????System.out.println(args[x]); ????????} ????} } |
轉(zhuǎn)載于:https://www.cnblogs.com/Prozhu/p/5874468.html
總結(jié)
- 上一篇: win10的回收站怎么去掉 如何去除wi
- 下一篇: 2016 ACM/ICPC Asia R