樂字節Java構造器(構造方法|構造函數)、方法與內存分析

1、 構造器(構造方法|構造函數)

在建立對象時(new),必會調用一個特殊的方法,這個方法是初始化對象信息的爲new服務的。這個方法稱爲「構造器」
圖片描述java

使用 new + 構造方法建立一個新的對象。函數

構造函數是定義在 Java類中的一個用來初始化對象的函數。測試

構造函數與類同名且沒有返回值。spa

例如: Person類的構造函數:code

public class Person {
    int id;
    int age;
    Person(int n, int i){
        id = n;
        age = i;
    }
}

建立對象時,使用構造函數初始化對象的成員變量對象

public class Test {
    public static void main(String[] args) {
        Person tom = new Person(1, 18);
        Person jeck = new Person(2, 20);
    }
}

2、構造方法的特色:

1) 名稱必須和類名一致,與類名相同blog

2) 沒有返回類型|void圖片

3) 構造器能夠存在return,return有選擇的跳出構造器內存

4) 不能隨便調用,和new在一塊兒使用,其餘時候不能調用get

5) 修飾符不能爲 final abstract static

做用:

初始化對象信息,不是用於建立對象的

空構造:

沒有參數的構造器、無參構造

1) 一個類中,若是沒有顯示|手動 加入 任意構造器 javac編譯後 自動加入空構造

2) 一旦加入構造器, javac 不會加入空構造器

3、方法的重載

方法的重載是指一個類中能夠定義有相同的方法名,但參數不一樣的多個方法。調用時,會根據不一樣的參數列表選擇對應的方法。
圖片描述

4、構造方法的重載

與普通方法同樣,構造方法也能夠重載

例子以下:
圖片描述

5、 引用與內存分析

A:一個對象的內存圖

B:二個對象的內存圖

C:三個對象的內存圖

內存分析

劃分
圖片描述

引用的特色:

1) 同一時刻一個一引用只能指向一個對象

2) 一個對象能夠被多個引用所指向,其中一個對其進行更改,該對象的其餘引用也可見該變化

3) Java一切爲值傳遞,引用拷貝地址

約定俗成的命名規則

類名的首字母大寫

變量名和方法名的首字母小寫

運用駝峯標識

例子:

public class Cat {
    String color; // 毛的顏色
    String name; // 名稱
    public void chase(Mice mice){
        mice.type = "jerry"; // 改變
        System.out.println(name + " 逮 " + mice.type);
    }
    public static void main(String[] args) {
        // 引用  與內存分析(運行期爲--》數據的流向)
        Cat cat = new Cat();
        cat = new Cat();    
// 引用發生變化,同一個時刻一個引用只能指向一個對象
        cat.color = "黑色";
        cat.name = "tom";
        Mice mice = new Mice();
        mice.type = "米奇";
        // 將兩者聯繫起來  --》 依賴
        cat.chase(mice);    
// 傳遞時,值拷貝,拷貝地址,拷貝完成後   一個對象被多個引用所指向
        System.out.println(mice.type);  
// jerry 其中一個對其發生變化,該對象的其餘引用也可減該變化
    }
}
class Mice{
    String type;
}

定義以下類

public class BirthDate {
    int day;
    int month;
    int year;
    public BirthDate(int d, int m, int y){
        day = d;
        month = m;
        year = y;
    }
    void setDay(int d){
        day = d;
    }
    void setMonth(int m){
        month = m;
    }
    void setYear(int y){
        year = y;
    }
    int getDay(){
        return day;
    }
    int getMonth(){
        return month;
    }
    int getYear(){
        return year;
    }
    void display(){
        System.out.println(day + "-" + month + "-" + year);
    }
}

測試類:

public class Test {
    public static void main(String[] args) {
        Test test = new Test();
        int date = 9;
        BirthDate d1 = new BirthDate(7,7,1970);
        BirthDate d2 = new BirthDate(1,1,2000);
             test.change1(date);
             test.change2(d1);
             test.change3(d2);
             System.out.println(date); 
             System.out.println(d1);
             System.out.println(d2);
    }
    void change1(int i){
        i = 1234;
    }
    void change2(BirthDate b){
        b = new BirthDate(22,2,2004);
    }
    void change3(BirthDate b){
        b.setDay(22);
    }
}

總結:

對象的建立和使用,必須使用new 關鍵字建立對象,使用對象引用.成員變量來引用對象的成員變量,使用對象引用.方法(參數列表)來調用對象的方法。

同一類的每一個對象有不一樣的成員變量存儲空間,同一類的每一個對象共享該類的方法,

非靜態方法是針對每一個對象進行調用 。

樂字節原創,轉載請註明出處。請繼續關注樂字節

相關文章
相關標籤/搜索