java第六天(二維數組、面向對象,類的概念、語法、屬性、方法、建立對象、成員變量和局部變量、匿名對象、封裝)

23.二維數組(用的少僅作了解)java

即數組中有數組編程

定義方式:(1)數據類型[][] 數組名=new 數據類型[整數][整數]數組

(2)數據類型[][] 數組名={{值1,值2,值3},{...},{...}....}安全

必須明確外圍數組名jvm

class Demo2{
    public static void main(String[] args){
        //定義一個新的二位數組第一種方式,數據類型[][] 數組名=new 數據類型[整數(表示行)][整數(表示列)]
        int[][] arry=new int[3][4];
        //給每一行每一列上對應的數賦值
        arry[0][0]=11;
        arry[0][1]=12;
        arry[0][2]=13;
        arry[1][0]=22;
        arry[1][1]=23;
        arry[1][2]=24;
        arry[2][0]=33;
        arry[2][1]=34;
        arry[2][2]=35;
        printArr(arry);
        /*
        11      12      13      0
        22      23      24      0
        33      34      35      0
        */
    }
    //建立一個方法訪問數組中每個數
    public static void printArr(int[][] arr){
        //外層爲行
        for(int i=0;i<arr.length;i++){
            //內層爲列
            for(int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }
}函數

24.面向對象oop

面向過程定義:分析解決問題所須要的步驟,而後用函數一步步調用實現,舉例把大象反放進冰箱、五子棋spa

面向對象:oop(object oriented programming)作一個需求時,咱們會抽取出幾種事物,每一種事物都有共同的行爲和屬性,核心是對象,某個對象的行爲、屬性,Java中萬物皆對象對象

面向對象是以功能和屬性劃分,而不是步驟,編程就是模擬現實生活,使用面向對象的思想能夠認爲萬物皆對象接口

25.類的概念:把某些具備相同屬性和行爲的事物抽象成一類

注意類是概念,對象纔是真正的實例,對象是具體的實例

26.類的語法

class 類名{

    屬性

    方法

}

類名:首字母大寫的駝峯式XxxYyy,見名知意

建立類要注意:(1)類名和文件名沒有任何關係,前提是class類前面不要加public,若是加了表明這個類是主類(2)如在定義類的時候public class Teacher{},這個類就是主類。一個Java文件只能有一個主類,並且這個文件名字必須和主類名字一致

27.類裏的屬性
屬性就是這個類的公有特徵,用變量的定義方式表示能夠沒有初始值,jvm給屬性默認值

引用數據類型:數組、類、接口

屬性的默認值

byte、short、int、long默認值爲0;float、double默認值爲0.0;boolean默認值爲false;char默認值爲''

引用數據類型默認值爲null

28.類的方法

類的行爲用函數(此處static無關緊要)

public <static> 返回值類型 方法名(數據類型 參數名,數據類型1 參數名1,...){

    //方法體

    return 返回值;

}

29.建立對象

類猶如一個模板,對象就是一個個樣本

建立對象的語法:類名 變量名=new 類名()

經過對象能夠訪問屬性   引用.屬性名字

經過對象能夠調用方法 引用.方法(參數列表)

共用一個類建立多個對象每一個對象都有本身的屬性,每一個對象都是數據隔離的

30.對象建立的內存結構和流程

棧:用於存儲基本數據類型的值或者是局部變量,先進後出,存取的容量小,存取的速度快

堆:用於存儲引用數據類型,存取容量大,存取速度慢

數據共享區:用於存儲引用數據類型,存儲一些共享的數據(方法)

對象存儲在堆中,引用存儲在棧中,堆中每一個對象的數據都是隔離的

每個類class加載到數據共享區,jvm都會解析這個類的內容

方法是每一個對象共享的,可是方法內的屬性是哪一個對象調用這個方法,那麼這個屬性就是在哪一個方法的

31.成員變量(屬性)

成員變量是定義在類中,也叫類的屬性

屬性特色:做用範圍:根據權限修飾符來定;存儲位置:堆內存或者數據共享區;默認值:有;生命週期:對象什麼時間建立什麼時間有屬性,若是一個引用數據類型的變量null,意味着不指向任何的對象,堆中的對象就會變成匿名對象,很快就會被gc(垃圾回收器)回收,若是在運行的過程當中對象的引用沒有被置空,那麼對象的屬性就會等到大括號結束而被回收

32.局部變量

5種常見的狀況:語句塊內、方法中、方法參數、for循環內、普通語句塊

特色:做用範圍:只限於所定義的大括號,以及這個大括號內子括號有效;存儲位置:存儲在棧內存中;默認值:無局部變量必須賦值;生命週期:所屬的大括號結束就消失

/*建立一個類,class 類名{
    屬性
    方法
    }
*/
class Dog{
    //屬性能夠沒有初始值,能夠用變量定義的方式表示,jvm給屬性默認值
    String name;
    int gender;
    String type;
    double weight;
    public void sleep(){
        System.out.println("狗狗在睡覺!");
    }
    public void lookHome(){
        System.out.println("狗狗在看家!");
    }
}
//建立一個類前面加了public表示時主類文件名要和主類名一致
public class TestDog{
    //主類裏裏面通常放主方法但不是必須
    public static void main(String[] args){
        //在類裏面建立對象,類名 變量名=new 類名()
        Dog dog1=new Dog();
        //經過對象訪問屬性,變量名.屬性,把這隻狗的屬性賦值
        dog1.name="磊子";
        dog1.gender=1;
        dog1.type="泰迪";
        dog1.weight=42.2;
        //打印每一個屬性
        System.out.println(dog1.name);
        System.out.println(dog1.gender);
        System.out.println(dog1.type);
        System.out.println(dog1.weight);
        //調用方法  變量名.方法(參數列表)
        dog1.sleep();
        System.out.println("--------------");
        Dog dog2=new Dog();
        dog2.name="小磊子";
        dog2.gender=2;
        dog2.type="中華田園犬";
        dog2.weight=45.2;
        System.out.println(dog2.name);
        System.out.println(dog2.gender);
        System.out.println(dog2.type);
        System.out.println(dog2.weight);
        dog2.lookHome();
    }
}

33.匿名對象

匿名對象因爲沒有棧中的變量來引用,因此就會被回收掉,全部匿名對象是無心義的

34.面向對象的特徵之封裝

‘javac’不是內部或外部命令,也不是可運行的程序或批處理文件

解決方法:記住JAVA文件所在地址: C:\Program Files\Java (若是不記得的話,能夠從新安裝一下的)
安裝好以後,就須要配置一下環境變量 , 具體配置以下
在用戶變量中, 添加新變量,命名爲java_home,地址爲 C:\Program Files\Java\jdk1.8.0_151,注意,我以前的JAVA文件所在地址。再添加一個新變量,命名爲classpath,地址爲 C:\Program Files\Java\jdk1.8.0_151\lib\tools.jar;C:\Program Files\Java\jdk1.8.0_151\lib\dt.jar (注意,這裏中間要加分號的,這裏是兩個包來的)
在Path中添加兩個變量。 分別的地址爲 C:\Program Files\Java\jdk1.8.0_151\bin 和 C:\Program Files\Java\jre1.8.0_151\bin

封裝的目的:提升數據安全性,經過封裝,能夠實現堆屬性的訪問權限控制,同時增長了程序的可維護性

封裝:將屬性私有化,使用private關鍵字完成屬性私有化,這種屬性只有本類能訪問,咱們通常給每個私有屬性提供公共的public的set和get這種方法來訪問咱們的私有屬性;公有的方法被其餘類訪問,是本類方法能夠訪問私有屬性,咱們在其餘類中經過這個公有的方法能夠間接訪問屬性。

class TestGirl{     //使用private關鍵字將屬性私有化,這種屬性只有本類能夠訪問     private String name;     private String nickName;     private int age;     private String tel;     //公有的方法能夠被其餘的類訪問,這個方法也是TestGirl的本類方法能夠訪問私有屬性,咱們在其餘類中經過公有方法能夠間接的訪問屬性     public void introduce(){         System.out.println("我叫"+name+"今年芳齡"+age+"個人手機號碼是"+tel);     }     //提供一個公有的設置屬性的方法,不須要返回獲得什麼值因此不須要返回值     public void setName(String myName){         name=myName;     }     //提供一個公有的獲取屬性的方法,返回獲得屬性或者直接打印屬性     public String getName(){         return name;     }     public void setAge(int myAge){         age=myAge;     }         public int getAge(){         return age;     }     public void setTel(String myTel){         tel=myTel;     }     public String getTel(){         return tel;     } } public class Girl{     public static void main(String[] args){         //建立一個TestGirl類的對象g         TestGirl g=new TestGirl();         //調用方法設置g的屬性         g.setName("詩詩");         g.setAge(23);         g.setTel("12345678");         g.introduce();         //調用方法訪問獲取g的屬性,注意接收返回值         String name=g.getName();         int age=g.getAge();         String tel=g.getTel();         System.out.println(name);         System.out.println(age);         System.out.println(tel);     } }

相關文章
相關標籤/搜索