上海傳智播客JAVASE_day06學習筆記

《第六天總結》 張倫琦
《二維數組和麪向對象》
1.二維數組    
    A.二維數組的定義
        格式:
        1.int [][]arr=new int[3][4];
        2.int [][]arr=new int[3][];
           arr[0]=new int[5];
           arr[1]=new int[6];
           arr[2]=new int[8];                   
        3.int [][]arr={{15,9,2,4,9},{2,4,9},{2,4,92,4,9}}

        理解:
        JAVA沒有真正的二維數組,是數組的數組
        JAVA中的二維數組是不規則矩形
        二維數組中裝的是一維數組
        一維數組中裝的是元素


    B.二維數組的使用    
        class TwoDArray
    {
        public static void main(String[] args)
        {
        /*
        int [][] arr=new int[3][];
        int[] arr1={45,56,68};
        int[] arr2={52,78};
        int[] arr3={79};
        arr[0]=arr1;
        arr[1]=arr2;
        arr[2]=arr3;
        */
        //int[][] arr={{45,56,68},{52,78},{79}};
        //如果二維數組,沒有一維數組,將報空指針異常
        //如果有二維數組和一維數組,但是數組沒有具體的值,將按默認值處理。因爲數組存放在堆內存中
        int[][] arr=new int[3][];
        arr[0]=new int[]{45,56,68};
        arr[1]=new int[]{52,78};
        arr[2]=new int[]{79};
        //System.out.println(arr);//[[I@7852e922
        //System.out.println(arr.length);//3代表有3行
        //System.out.println(arr[1].length);//2有兩列
        int sum=0;
        //我如何能找到每一個一維數組
       for (int i=0;i<=arr.length-1;i++ ){
          //System.out.println( arr[i]);//每一個一維數組
          //對找到的沒一個一維數組進行遍歷
          for (int j=0;j<=arr[i].length-1 ;j++ ){
              System.out.println(arr[i][j]);//每一個元素
              sum=sum+arr[i][j];
          }
        }
       System.out.println(sum);
        }
    }

2.面向過程和麪向對象    
    A.面向過程
    面向過程的:
        1.是以過程爲中心
        2.自己完成每一個過程。
        3.正確的組織所有的過程。
    面向過程的思想特點
        1.以方法爲中心。以辦事情所需要的動作、行爲和過程爲中心。
        2.自己編寫相關方法。方法定義。
        3.自己組織相關方法。方法調用。

    B.面向對象
    面向對象的:
                1.事情有多少相關的對象(object)
        2.這些對象的關係是什麼。
        3.描述好每一個相關的對象。(每個對象要做的事情說請清楚)
      面向對象的思想特點
        1.面向對象是相對面向過程而言的.(面向過程早,面向對象晚)
        2.面向對象是基於面向過程的。
        3.面向對象和麪向過程都是一種思想。
          面向過程強調的是行爲、動作、功能、方法。
          面向對象強調的是對象以及對象之間的關係。
        4.面向對象將人們從功能的實現者,轉變成對象以及對象具有的功能的指揮者。
        5.是一種更符合人們思考習慣的思想,可以將複雜的事情簡單化
        6.將程序員從執行者轉換成了指揮者
     如何設計面向對象的程序
            寫面向對象的程序的時候
            1.找出程序牽涉到的對象。
            2.如果存在相關的對象就直接拿來使用。
            3.如果不存在相關的對象就創建對象再使用。
     面向對象的設計,開發和特性
        1.面向對象的設計:其實就是設計系統相關的對象以及對象之間的關係。
                          管理和維護對象之間的關係。
        2.面向對象的開發:其實就是不斷的創建對象,使用對象,指揮對象做事情。
        3.面向對象的特性:封裝(encapsulation)繼承(inheritance)多態(polymorphism)

    
3.類和對象    
    A.類和對象的自然語言描述
        人:抽象的東西:類描述,類別,類型,種類,可有無數個對象
        屬性,數據,靜態狀態: 姓名 身高 年齡 體重 性別
        行爲,功能,動態狀態: 吃飯  喝水  睡覺 說話
    張三這個人(具體的東西)對象
           屬性:
           姓名 張三
           身高 180
           年齡 20
           體重 156
           性別 男
       行爲:吃飯  喝水  睡覺 說話

    B.類和對象的Java語言描述
            /*
        學生:抽象的,類,class
        屬性:學號 性別 姓名  年齡
        行爲:吃飯 學習 玩遊戲

        王五這個學生:具體的對象
        屬性:
            學號 wd001
            性別 男
            姓名 王五
            年齡 18
        行爲:
            吃飯 學習 玩遊戲
        趙六這個學生:具體的對象(實例)
        屬性:
            學號 wd002
            性別 女
            姓名 趙六
            年齡 18
        行爲:
            吃飯 學習 玩遊戲


        1.創建類,不能直接工作,因爲它是抽象的
        2.創建對象,可以直接工作,因爲它是具體的
            Student stu1=new Student();
        3.使用對象
            A.對象的屬性
            屬性賦值:stu1.stuId="wd001";
            屬性取值: Sop(stu1.stuId);
            B.對象的方法
            方法調用:stu1.playGame("英雄聯盟");

        */
        class Student{
             //屬性(數據,變量):學號 性別 姓名  年齡  體重
             String  stuId;
             char  stuSex;
             String  stuName;
             int stuAge;
             double stuWeight;
             //方法:吃飯 學習 玩遊戲
             public void eat(String caiMing){
                 System.out.println("學生吃"+caiMing);
             }
             public void study(String XueKeMing){
                 System.out.println("學生學習"+XueKeMing);
             }
             public void playGame(String gameName){
                 System.out.println("學生玩"+gameName);
             }
        }



        /*
        //測試類
        class StudentDemo
        {
            public static void main(String[] args)
            {  
            //Student stu1對象的引用在棧裏,new Student()實體在堆裏
                //Student stu1=new Student();//創建一個學生對象
                Student stu1;//創建一個學生對象
                //使用對象(屬性)
            System.out.println(stu1.stuId);//null
            System.out.println(stu1.stuSex);//' '
            System.out.println(stu1.stuName);//null
            System.out.println(stu1.stuAge);//0

                //使用對象(屬性賦值)
                stu1.stuId="wd001";
                stu1.stuSex='男';
                stu1.stuName="王五";
                stu1.stuAge=18;

            //使用對象(屬性取值)
                System.out.println("********************************");
            System.out.println(stu1.stuId);//wd001
            System.out.println(stu1.stuSex);//男
            System.out.println(stu1.stuName);//王五
            System.out.println(stu1.stuAge);//18

                //使用對象(方法)
                stu1.eat("水煮白菜");
                stu1.study("java");
                stu1.playGame("英雄聯盟");

                
            }
        }
        */



        class StudentDemo
        {
            public static void main(String[] args)
            {
                /*
                Student stu1=new Student();
                stu1.stuName="張三";
                stu1.stuName="李四";
                System.out.println(stu1.stuName);//李四
                */

                /*
                Student stu1=new Student();
                stu1.stuName="張三";
                Student stu2=stu1;
                stu2.stuName="李四";
                System.out.println(stu1.stuName);//李四
                */
                /*
                Student stu1=new Student();
                stu1.stuName="張三";
                Student stu2=new Student();
                stu2=stu1;
                stu2.stuName="李四";
                System.out.println(stu1.stuName);//李四
                */

                

            }
        }

    C.類和對象的練習    
        /*
       電話:抽象的,用類來描述
       屬性:價格 品牌 顏色 尺寸
       行爲:打電話 發信息 玩遊戲
       1.描述類
       2.創建對象
       3.使用對象
          屬性
              方法

       對象的成員
            1.成員變量:和對象相關的變量,定義在類中。
            2.成員方法:和對象相關的方法,定義在類中。



       類和對象的關係
        1.類  : 是抽象的事物,是對象歸類產生的概念,可以有無數個具體的對象。
        2.對象:是具體的事物,是類的一個具體的實例。
        3.對象是由屬性和行爲組成的。
           屬性是對事物的數據的描述。成員變量(字段,域,屬性:field)
           行爲是對事物的功能的描述。成員方法(成員函數,功能,行爲:method)

       引用和實體的關係
          1.對象的實體相當於電視機;堆中。
          2.對象的引用相當於遙控器;棧中。
          3.對象的實體可以有多個引用,相當於一個電視機有多個遙控器。
          4.對象的實體可以沒有引用,相當於電視機沒有遙控器。
          5.分析時要明確引用指向的實體,明確哪個遙控器控制着哪個電視機。

    */
    class Phone{
        // fields 屬性:價格 品牌 顏色 尺寸
        double price=2500.00;
        String brand;
        String color;
        double size;
        // methods 行爲:打電話 發信息 玩遊戲
        public void call(String name){
            System.out.println("打電話給"+name);
        }
        public void sendMessage(String name){
            System.out.println("發信息給"+name);
        }
        public void playGame(String gameName){
            System.out.println("玩遊戲"+gameName);
        }
    }
    class PhoneDemo {
        public static void usePhone(Phone ph){//ph=0x11
            //使用對象(屬性:賦值)
            ph.price=2500.00;
            ph.brand="IPHONE4S";
            ph.color="白色";
            ph.size=3.5;
            //使用對象(屬性:取值)
            System.out.println(ph.price);
            System.out.println(ph.brand);
            System.out.println(ph.color);
            System.out.println(ph.size);
        //使用對象的方法
            ph.call("范冰冰");
            ph.sendMessage("黃曉明");
            ph.playGame("找你妹");
        }
        public static void main(String[] args) {
            //創建對象
            Phone ph=new Phone();
            usePhone(ph);
            System.out.println(ph.price);
            System.out.println(ph.brand);
            System.out.println(ph.color);
            System.out.println(ph.size);
        }
    }


4.局部變量和成員變量
    成員變量:定義在類中和對象相關的變量;
    局部變量:定義在方法中和方法相關的變量

     成員變量和局部變量的區別?
        區別一:定義位置不同。
            成員變量定義在類中和對象相關。
            局部變量定義在方法中以及語句裏,和方法相關。

        區別二:存儲位置不同。
            成員變量存儲在堆內存的對象中。
            局部變量存儲在棧內存的方法中。
            
        區別三:存生命週期不同。
            成員變量隨着對象的創建而創建,隨着對象的消失而消失。
            局部變量隨着的方法的進棧而創建,隨着方法的彈棧而消失。

        區別四:初始化不同。
            成員變量因爲在堆內存中,所以有默認初始化值。
            局部變量因爲在棧內存中,所以沒有默認初始值,必須初始化後纔可以使用。

    */
    class Phone{
        //成員變量
        int price;
        //成員方法
        void show(){
            //局部變量
            int price;
            System.out.println(price);
        }
    }
    class  BianLiang{
        public static void main(String[] args)
        {
            Phone ph=new Phone();
            //System.out.println(ph);//Phone@7852e922
            System.out.println(ph.price);
            ph.show();
        }
    }

5.匿名對象

    /*
        匿名對象:對象沒有名稱,對象沒有引用
        應用場景:
           1.對象只使用一次,不需要給對象起名稱。
           2.匿名對象作爲方法調用實參

    */
    class Phone{
        void close(){
            System.out.println("電話關機");
        }
        void open(){
            System.out.println("電話開機");
        }
    }
    class NiMingDemo {
        public static void usePhone(Phone ph) {
            ph.close();
        }
        public static void main(String[] args) {  
            //Phone ph=new Phone();//有名對象
            //new Phone();//匿名對象
            //有名對象可以用無數次
            Phone ph=new Phone();
            ph.close();
            ph.open();
            ph.close();
            ph.open();
        //場景一、匿名對象只能使用一次。對象只使用一次,不需要給對象起名稱。
            new Phone().close();
            //場景二、匿名對象作爲方法調用實參
            usePhone(new Phone());

            
        }
    }

        

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