java之靜態屬性和靜態方法
阿新 • • 發佈:2018-04-01
person pri 技術分享 周期 銷毀 out 方法 class 屬性的區別
前言
靜態屬性和方法必須用static修飾符
靜態屬性和非靜態屬性的區別:
1、在內存中存放位置不同 所有帶static修飾符的屬性或者方法都存放在內存中的方法區 而非靜態屬性存放在內存中的堆區
2、出現時機不同 靜態屬性或方法在沒創建對象之前就已經存在 而非靜態屬性在創建對象之後才存在
3、靜態屬性是在某個類中的所有對象是共享的
4、生命周期不同 靜態屬性在類消失之後才銷毀 而非晶態屬性在對象銷毀之後才銷毀
5、用法:
a.靜態屬性可以直接通過類名直接訪問 非靜態屬性不能通過類直接訪問只能通過對象訪問
b.二者的相同點是都可以在創建完對象後使用下面看個靜態屬性是在某個類中的所有對象是共享的例子 最後結果都是20
class Beauty { int age1; static int age2; } class TestPerson { public static void main(String[] args) { Beauty b1 = new Beauty(); b1.age2 = 10; Beauty b2 = new Beauty(); b2.age2 = 20; System.out.println(b1.age2); System.out.println(b2.age2); System.out.print("\n"); } }
靜態屬性在內存中的分布圖:
使用static的註意事項:
1、帶有靜態修飾符的方法只能訪問靜態屬性
2、非靜態方法即能訪問靜態屬性也可以訪問非靜態屬性
3、非靜態方法不能定義靜態變量
4、靜態方法中不能使用this關鍵字
5、靜態方法不能調用非靜態方法反之可以
java之靜態屬性和靜態方法