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