java之靜態屬性和靜態方法
前言
靜態屬性和方法必須用static修飾符
static 可以修飾屬性、方法、代碼塊、內部類
靜態屬性和非靜態屬性的區別:
1、在內存中存放位置不同 所有帶static修飾符的屬性或者方法都存放在內存中的方法區 而非靜態屬性存放在內存中的堆區
2、出現時機不同 靜態屬性或方法在沒創建對象之前就已經存在 而非靜態屬性在創建對象之后才存在
3、靜態屬性是在某個類中的所有對象是共享的
4、生命周期不同 靜態屬性在類消失之后才銷毀 而非晶態屬性在對象銷毀之后才銷毀
5、用法:
a.靜態屬性可以直接通過類名直接訪問 非靜態屬性不能通過類直接訪問只能通過對象訪問
b.二者的相同點是都可以在創建完對象后使用下面看個靜態屬性是在某個類中的所有對象是共享的例子 最后結果都是20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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、靜態方法不能調用非靜態方法反之可以