七、JAVA基礎-變量 及對象 及 封裝 及 this 及 構造方法 及 main參數

1:成員變量和局部變量的區別(理解)
  (1)在類中的位置不一樣
    成員變量:類中方法外
    局部變量:方法定義中或者方法聲明上
  (2)在內存中的位置不一樣
    成員變量:在堆中
    局部變量:在棧中
  (3)生命週期不一樣
    成員變量:隨着對象的建立而存在,隨着對象的消失而消失
    局部變量:隨着方法的調用而存在,隨着方法的調用完畢而消失
  (4)初始化值不一樣
    成員變量:有默認值
    局部變量:沒有默認值,必須定義,賦值,而後才能使用

2:類做爲形式參數的問題?(理解)
  (1)若是你看到一個方法須要的參數是一個類名,就應該知道這裏實際須要的是一個具體的對象。java

3:匿名對象(理解)
  (1)沒有名字的對象
  (2)應用場景
    A:調用方法,僅僅只調用一次的時候。
      b:能夠做爲實際參數傳遞。

4:封裝(理解)
  (1)隱藏實現細節,提供公共的訪問方式
  (2)好處:
    A:隱藏實現細節,提供公共的訪問方式
    B:提升代碼的複用性
    C:提升代碼的安全性
  (3)設計原則
    把不想讓外界知道的實現細節給隱藏起來,提供公共的訪問方式
  (4)private是封裝的一種體現。
    封裝:類,方法,private修飾成員變量安全

5:private關鍵字(掌握)
  (1)私有的意義,能夠修飾成員變量和成員方法
  (2)特色:
    被private修飾的後的成員只能在本類中被訪問
  (3)private的應用:
    之後再寫一個類的時候:
    把全部的成員變量給private了
    提供對應的getXxx()/setXxx()方法jvm

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)標準案例this

        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:代碼:Student s = new Student();作了哪些事情?(理解)
  (1)把Student.class文件加載到內存
  (2)在棧內存爲s開闢空間
  (3)在堆內存爲學生對象申請空間
  (4)給學生的成員變量進行默認初始化。null,0
  (5)給學生的成員變量進行顯示初始化。林青霞,27
  (6)經過構造方法給成員變量進行初始化。劉意,30
  (7)對象構造完畢,把地址賦值給s變量

9:面向對象的練習題(掌握)
  (1)標準的手機類的定義和測試
  (2)Demo類有求和方法,Test類進行測試。
    何時定義成員變量?
    當該變量是用來描述一個類的時候。
  (3)長方形案例
  (4)員工案例
  (5)MyMath案例(本身提供加減乘除並測試)

10:static關鍵字(理解)
  (1)靜態的意思。能夠修飾成員變量和成員方法。
  (2)靜態的特色:
    A:隨着類的加載而加載
    B:優先與對象存在
    C:被類的全部對象共享
      這其實也是咱們判斷該不應使用靜態的依據。
      舉例:飲水機和水杯的問題思考
    D:能夠經過類名調用
      既能夠經過對象名調用,也能夠經過類名調用,建議經過類名調用。
  (3)靜態的內存圖
    靜態的內容在方法區的靜態區
  (4)靜態的注意事項;
    A:在靜態方法中沒有this對象
    B:靜態只能訪問靜態(代碼測試過)
  (5)靜態變量和成員變量的區別
    A:所屬不一樣
      靜態變量:屬於類,類變量
      成員變量:屬於對象,對象變量,實例變量
    B:內存位置不一樣
      靜態變量:方法區的靜態區
      成員變量:堆內存
    C:生命週期不一樣
      靜態變量:靜態變量是隨着類的加載而加載,隨着類的消失而消失
      成員變量:成員變量是隨着對象的建立而存在,隨着對象的消失而消失
    D:調用不一樣
      靜態變量:能夠經過對象名調用,也能夠經過類名調用
      成員變量:只能經過對象名調用
  (6)main方法是靜態的
    public:權限最大
    static:不用建立對象調用
    void:返回值給jvm沒有意義
    main:就是一個常見的名稱。
    String[] args:能夠接收數據,提供程序的靈活性
    格式:java MainDemo hello world java
        java MainDemo 10 20 30spa

相關文章
相關標籤/搜索