面向對象 +JAVA學習筆記-DAY07

07.01_面向對象(構造方法Constructor概述和格式)(掌握)

  • A:構造方法概述和作用
    • 給對象的數據(屬性)進行初始化
  • B:構造方法格式特點
    • a:方法名與類名相同(大小也要與類名一致)
    • b:沒有返回值類型,連void都沒有
    • c:沒有具體的返回值return;

07.02_面向對象(構造方法的重載及注意事項)(掌握)

  • A:案例演示
    • 構造方法的重載
    • 重載:方法名相同,與返回值類型無關(構造方法沒有返回值),只看參數列表
  • B:構造方法注意事項

    • a:如果我們沒有給出構造方法,系統將自動提供一個無參構造方法。
    • b:如果我們給出了構造方法,系統將不再提供默認的無參構造方法。

      • 注意:這個時候,如果我們還想使用無參構造方法,就必須自己給出。建議永遠自己給出無參構造方法

        class Person {
            private String name;
            private int age;
        
            //構造方法
            public Person() {
                //System.out.println("Hello World!");
                //return;                               //構造方法也是有return語句的,格式是return;
                name = "張三";
                age = 23;
            }
        
            public void show() {
                System.out.println(name + "..." + age);
            }
        }       
        

07.03_面向對象(給成員變量賦值的兩種方式的區別)

  • A:setXxx()方法
    • 修改屬性值
  • B:構造方法
    • 給對象中屬性進行初始化

07.04_面向對象(學生類的代碼及測試)(掌握)

  • A:案例演示
    • 學生類:
      • 成員變量:
        • name,age
      • 構造方法:
        • 無參,帶兩個參
      • 成員方法:
        • getXxx()/setXxx()
        • show():輸出該類的所有成員變量值
  • B:給成員變量賦值:

    • a:setXxx()方法
    • b:構造方法
  • C:輸出成員變量值的方式:

    • a:通過getXxx()分別獲取然後拼接
    • b:通過調用show()方法搞定

      class Student {
      private String name;                            //姓名
      private int age;                                //年齡
      
      public Student(){}                              //空參構造
      
      public Student(String name,int age) {           //有參構造
          this.name = name;
          this.age = age;
      }
      
      public void setName(String name) {              //設置姓名
          this.name = name;
      }
      
      public String getName() {                       //獲取姓名
          return name;
      }
      
      public void setAge(int age) {                   //設置年齡
          this.age = age;
      }
      
      public int getAge() {                           //獲取年齡
          return age;
      }
      
      public void show() {
          System.out.println("我的姓名是:" + name +  ",我的年齡是:" +  age);
      }
      

      }

07.05_面向對象(手機類的代碼及測試)(掌握)

  • A:案例演示
    • 模仿學生類,完成手機類代碼

07.06_面向對象(創建一個對象的步驟)(掌握)

  • A:畫圖演示
    • 畫圖說明一個對象的創建過程做了哪些事情?
    • Student s = new Student();
    • 1,Student.class加載進內存
    • 2,聲明一個Student類型引用s
    • 3,在堆內存創建對象,
    • 4,給對象中屬性默認初始化值
    • 5,屬性進行顯示初始化
    • 6,構造方法進棧,對對象中的屬性賦值,構造方法彈棧
    • 7,將對象的地址值賦值給s

07.07_面向對象(長方形案例練習)(掌握)

  • A:案例演示

    • 需求:

      • 定義一個長方形類,定義 求周長和麪積的方法,
      • 然後定義一個測試類進行測試。

        class Rectangle {
        private int width;              //寬
        private int high;               //高
        
        public Rectangle(){}            //空參構造
        
        public Rectangle(int width,int high) {
            this.width = width;         //有參構造
            this.high = high;
        }
        
        public void setWidth(int width) {//設置寬
            this.width = width;
        }
        
        public int getWidth() {         //獲取寬
            return width;
        }
        
        public void setHigh(int high) { //設置高
            this.high = high;
        }
        
        public int getHigh() {          //獲取高
            return high;
        }
        
        public int getLength() {        //獲取周長
            return 2 * (width + high);
        }
        
        public int getArea() {          //獲取面積
            return width * high;
        }
        

        }

07.08_面向對象(員工類案例練習)(掌握)

  • A:案例演示
    • 需求:定義一個員工類Employee
    • 自己分析出幾個成員,然後給出成員變量
      • 姓名name,工號id,工資salary
    • 構造方法,
      • 空參和有參的
    • getXxx()setXxx()方法,
    • 以及一個顯示所有成員信息的方法。並測試。
      • work

07.09_面向對象(static關鍵字及內存圖)(瞭解)

  • A:案例演示

    • 通過一個案例引入static關鍵字。
    • 人類:Person。每個人都有國籍,中國。
  • B:畫圖演示

    • 帶有static的內存圖

07.10_面向對象(static關鍵字的特點)(掌握)

  • A:static關鍵字的特點
    • a:隨着類的加載而加載
    • b:優先於對象存在
    • c:被類的所有對象共享
      • 舉例:咱們班級的學生應該共用同一個班級編號。
      • 其實這個特點也是在告訴我們什麼時候使用靜態?
        • 如果某個成員變量是被所有對象共享的,那麼它就應該定義爲靜態的。
      • 舉例:
        • 飲水機(用靜態修飾)
        • 水杯(不能用靜態修飾)
        • 共性用靜態,特性用非靜態
    • d:可以通過類名調用
      • 其實它本身也可以通過對象名調用。
      • 推薦使用類名調用。
      • 靜態修飾的內容一般我們稱其爲:與類相關的,類成員
  • B:案例演示
    • static關鍵字的特點

07.11_面向對象(static的注意事項)(掌握)

  • A:static的注意事項
    • a:在靜態方法中是沒有this關鍵字的
      • 如何理解呢?
        • 靜態是隨着類的加載而加載,this是隨着對象的創建而存在。
        • 靜態比對象先存在。
    • b:靜態方法只能訪問靜態的成員變量和靜態的成員方法
      • 靜態方法:
        • 成員變量:只能訪問靜態變量
        • 成員方法:只能訪問靜態成員方法
      • 非靜態方法:
        • 成員變量:可以是靜態的,也可以是非靜態的
        • 成員方法:可是是靜態的成員方法,也可以是非靜態的成員方法。
      • 簡單記:
        • 靜態只能訪問靜態。
  • B:案例演示
    • static的注意事項

07.12_面向對象(靜態變量和成員變量的區別)(掌握)

  • 靜態變量也叫類變量 成員變量也叫對象變量
  • A:所屬不同
    • 靜態變量屬於類,所以也稱爲爲類變量
    • 成員變量屬於對象,所以也稱爲實例變量(對象變量)
  • B:內存中位置不同
    • 靜態變量存儲於方法區的靜態區
    • 成員變量存儲於堆內存
  • C:內存出現時間不同
    • 靜態變量隨着類的加載而加載,隨着類的消失而消失
    • 成員變量隨着對象的創建而存在,隨着對象的消失而消失
  • D:調用不同
    • 靜態變量可以通過類名調用,也可以通過對象調用
    • 成員變量只能通過對 象名調用

07.13_面向對象(main方法的格式詳細解釋)(瞭解)

  • A:格式
    • public static void main(String[] args) {}
  • B:針對格式的解釋
    • public 被jvm調用,訪問權限足夠大。
    • static 被jvm調用,不用創建對象,直接類名訪問
    • void被jvm調用,不需要給jvm返回值
    • main 一個通用的名稱,雖然不是關鍵字,但是被jvm識別
    • String[] args 以前用於接收鍵盤錄入的
  • C:演示案例
    • 通過args接收鍵盤例如數據

07.14_面向對象(工具類中使用靜態)(瞭解)

  • A:製作一個工具類

    • ArrayTool
    • 1,獲取最大值
    • 2,數組的遍歷
    • 3,數組的反轉

      /**
      這是一個數組工具類,裏面封裝了查找數組最大值,打印數組,數組反轉的方法
      @author fengjia
      @version v1.0
      */
      public class ArrayTool {
          //如果一個類中所有的方法都是靜態的,需要再多做一步,私有構造方法,目的是不讓其他類創建本類對象
          //直接用類名.調用即可
          /**
          私有構造方法
          */
          private ArrayTool(){}
      
          //1,獲取最大值
      
          /**
          這是獲取數組中最大值的方法
          @param arr 接收一個int類型數組
          @return 返回數組中最大值
          */
          public static int getMax(int[] arr) {
              int max = arr[0];                       //記錄第一個元素
              for (int i = 1;i < arr.length ;i++ ) {  //從第二個元素開始遍歷
                  if (max < arr[i]) {                 //max與數組中其他的元素比較
                      max = arr[i];                   //記錄住較大的
                  }
              }
      
              return max;                             //將最大值返回
          }
          //2,數組的遍歷
          /**
          這是遍歷數組的方法
          @param arr 接收一個int類型數組
          */
          public static void print(int[] arr) {
              for (int i = 0;i < arr.length ;i++ ) {  //遍歷數組
                  System.out.print(arr[i] + " ");
              }
          }
          //3,數組的反轉
          /**
          這是數組反轉的方法
          @param arr 接收一個int類型數組
          */
          public static void revArray(int[] arr) {
              for (int i = 0;i < arr.length / 2 ;i++ ) {  //循環次數是元素個數的一半
                  /*
                  arr[0]與arr[arr.length-1-0]  交換
                  arr[1]與arr[arr.length-1-1]  交換
                  arr[2]與arr[arr.length-1-2] 交換
                  */
                  int temp = arr[i];
                  arr[i] = arr[arr.length-1-i];
                  arr[arr.length-1-i] = temp;
              }
          }
      }
      

07.15_面向對象(說明書的製作過程)(瞭解)

  • A:對工具類加入文檔註釋
  • B:通過javadoc命令生成說明書
    • @author(提取作者內容)
    • @version(提取版本內容)
    • javadoc -d 指定的文件目錄 -author -version ArrayTool.java
    • @param 參數名稱//形式參數的變量名稱@return 函數運行完返回的數據

07.16_面向對象(如何使用JDK提供的幫助文檔)(瞭解)

  • A:找到文檔,打開文檔
  • B:點擊顯示,找到索引,出現輸入框
  • C:你應該知道你找誰?舉例:Scanner
  • D:看這個類的結構(需不需要導包)
    • 成員變量 字段
    • 構造方法 構造方法
    • 成員方法 方法

07.17_面向對象(學習Math類的隨機數功能)(瞭解)

  • 打開JDK提供的幫助文檔學習
  • A:Math類概述
    • 類包含用於執行基本數學運算的方法
  • B:Math類特點
    • 由於Math類在java.lang包下,所以不需要導包。
    • 因爲它的成員全部是靜態的,所以私有了構造方法
  • C:獲取隨機數的方法
    • public static double random():返回帶正號的 double 值,該值大於等於 0.0 且小於 1.0。
  • D:我要獲取一個1-100之間的隨機數,腫麼辦?
    • int number = (int)(Math.random()*100)+1;

07.18_面向對象(猜數字小遊戲案例)(瞭解)

  • A:案例演示

    • 需求:猜數字小遊戲(數據在1-100之間)

      import java.util.Scanner;
      class Test1_GuessNum {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);                //創建鍵盤錄入對象
              System.out.println("請輸入一個整數,範圍在1-100之間");
              int guessNum = (int)(Math.random() * 100) + 1;      //心裏想的隨機數
              while (true) {                                      //因爲需要猜很多次,所以用無限循環
                  int result = sc.nextInt();                      //大家猜的數
                  if (result > guessNum) {                        //如果你們猜的數大於了我心裏想的數
                      System.out.println("大了");                   //提示大了
                  } else if (result < guessNum) {                 //如果你們猜的數小於了我心裏想的數
                      System.out.println("小了");                   //提示小了
                  } else {                                        //如果既不大也不小
                      System.out.println("中了");                   //中了
                      break;
                  }
              }
          }
      }
      

07.19_day07總結

把今天的知識點總結一遍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章