天天看點

教妹學Java(二十三):怎麼了解 Java 中對象和類的概念?(2)

03、如何建立 Java 對象

建立 Java 對象時,需要用到 new 關鍵字。

Person person = new Person();

這行代碼就通過 Person 類建立了 Person 對象。所有對象在建立的時候都會在堆記憶體中配置設定空間。

建立對象的時候,需要一個 main() 方法作為入口, main() 方法可以在目前類中,也可以在另外一個類中。

第一種:main() 方法直接放在 Person 類中。

public class Person {
    private String name;
    private int age;
    private int sex;
    private void eat() {
    }
    private void sleep() {
    }
    private void dadoudou() {
    }
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);
        System.out.println(person.age);
        System.out.println(person.sex);
    }
}      

輸出結果如下所示:

null

1

2

3

第二種:main() 方法不在 Person 類中,而在另外一個類中。

實際開發中,我們通常不在目前類中直接建立對象并使用它,而是放在使用對象的類中,比如說 PersonTest 類。

可以把 PersonTest 類和 Person 類放在兩個檔案中,也可以放在一個檔案(命名為 PersonTest.java)中,就像下面這樣。

/**
 * @author 微信搜「沉默王二」,回複關鍵字 PDF
 */
public class PersonTest {
    public static void main(String[] args) {
        Person person = new Person();
    }
}
class Person {
    private String name;
    private int age;
    private int sex;
    private void eat() {
    }
    private void sleep() {
    }
    private void dadoudou() {
    }
}      

04、如何初始化對象

在之前的例子中,程式輸出結果為:

為什麼會有這樣的輸出結果呢?因為 Person 對象沒有初始化,是以輸出了 String 的預設值 null,int 的預設值 0。

那怎麼初始化 Person 對象(對字段指派)呢?

第一種:通過對象的引用變量。

public class Person {
    private String name;
    private int age;
    private int sex;
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "沉默王二";
        person.age = 18;
        person.sex = 1;
       
        System.out.println(person.name);
        System.out.println(person.age);
        System.out.println(person.sex);
    }
}      

person 被稱為對象 Person 的引用變量,見下圖:

通過對象的引用變量,可以直接對字段進行初始化(person.name = "沉默王二"),是以以上代碼輸出結果如下所示:

沉默王二

18

第二種:通過方法初始化。

/**
 * @author 沉默王二,一枚有趣的程式員
 */
public class Person {
    private String name;
    private int age;
    private int sex;
    public void initialize(String n, int a, int s) {
        name = n;
        age = a;
        sex = s;
    }
    public static void main(String[] args) {
        Person person = new Person();
        person.initialize("沉默王二",18,1);
        System.out.println(person.name);
        System.out.println(person.age);
        System.out.println(person.sex);
    }
}      

在 Person 類中新增方法 initialize(),然後在建立對象後傳參進行初始化(person.initialize("沉默王二", 18, 1))。

第三種:通過構造方法初始化。

/**
 * @author 沉默王二,一枚有趣的程式員
 */
public class Person {
    private String name;
    private int age;
    private int sex;
    public Person(String name, int age, int sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    public static void main(String[] args) {
        Person person = new Person("沉默王二", 18, 1);
        System.out.println(person.name);
        System.out.println(person.age);
        System.out.println(person.sex);
    }
}      

這也是最标準的一種做法,直接在 new 的時候把參數傳遞過去。

05、什麼是匿名對象

匿名對象意味着沒有引用變量,它隻能在建立的時候被使用一次。

new Person();

可以直接通過匿名對象調用方法:

new Person().initialize("沉默王二", 18, 1);

06、一次性建立多個對象

可以通過下面的方式一次性聲明多個基本類型變量:

int a=10, b=20;

a 和 b 的類型一樣,都是 int,就可以通過“,”的形式聲明多個。一次性建立多個對象的方式和這個類似:

Person person1 = new Person(), person2 = new Person();

07、ending

“二哥,結束了嗎?我還想學呢?”三妹雖然精神煥發,沒有絲毫的疲憊,但我已經犯困了。

“三妹啊,哥要休息會,咱們下次再學好不好?”我站起來,轉了轉僵硬的脖子。。。。。。與此同時,耳朵的右後方傳來了幾聲“叭叭叭”的聲音。

二哥肝了兩天兩夜,《程式員不可或缺的軟實力》第一版強勢來襲,純手敲,足足 20 萬字精華文章,貫穿了我十餘年的程式設計生涯,涉及到了生活和工作中的方方面面,如果你是迷茫的在校大學生,或者剛入職的新人,相信我的個人經曆,可以給你帶去一些思考,進而樹立起正确的人生觀和價值觀。

那這份 PDF 該怎麼擷取呢?

連結:https://pan.baidu.com/s/1TA3txLvHxQNJEOJUHSZEqQ 密碼:ps7z