1. 程式人生 > 其它 >linux入門(一)

linux入門(一)

Java類

通過對一類事物的共有特徵和行為進行抽取,將特徵抽取為屬性,將行為抽取為方法,這樣就形成了一個類。
通過new關鍵字來建立對應類的例項/物件。
類是物件的概括,物件是類的具體。可以將類看做一個模版,將物件看作這個模版產生的具體的例項。


首先在堆中建立變數開闢空間,接著在堆中開闢空間,將地址賦給棧中的變數。此時棧中的變數指向堆中對應的空間。接著在堆中初始化屬性。然後賦值進去。

(可以這麼理解傳值和傳地址:傳值有兩份,別的物件改變了,但原來的物件並不會變。傳地址只有一份,只要一個改變了,就都變化了。)
成員變數和區域性變數
區別:
1.定義的位置不同。
成員變數定義在類裡方法外,區域性變數定義在方法內或者語句內。

2.作用域不同。
成員變數作用在整個類,區域性變數作用在定義的當前方法或語句塊內。

3.儲存位置不同。
成員變數儲存在堆記憶體中(是從屬於物件的,也就是屬性,因為物件在堆中,所以成員變數也在堆中),並且在堆中自動賦與初值,區域性變數儲存在棧記憶體中,(因為區域性變數是在方法裡,而方法是在棧裡面的)需要手動初始化。

4.生命週期不同。
成員變數隨著物件的建立而產生,隨著物件的回收而銷燬。物件用完之後不一定會立即回收,而是會在不定時的某個時刻被回收。區域性變數在方法或者語句執行到的時候建立,方法或者語句塊執行完成之後,立即銷燬。

建構函式
Person p = new Person(); —建構函式
是在編譯的時候,JVM負責新增的公共的無參的建構函式。
在類中和類同名但是沒有返回值型別的函式—建構函式
一旦類中自己手動提供了建構函式,JVM在編譯的時候都不會再新增構造函數了
建構函式可以過載。(只要有多個構造方法,那麼就一定構成了過載)

類中允許存在和類同名的普通方法,但是不推薦這種寫法,容易和構造方法混淆。
This
代表當前物件的引用當前哪個物件在執行(或者說哪個物件在活躍),那麼這個this就代表哪個物件。

注意:在Java中所有非靜態的屬性和方法都是通過this來呼叫的。
主函式中不能使用this 主函式是一個靜態函式。This中不可以在靜態方法中使用。

匿名物件
沒有名字的物件稱之為匿名物件。

使用匿名物件的時機:
①當方法呼叫一次的時候
②匿名物件可以作為引數傳遞。

作用:節省記憶體。