靜態屬性和非靜態屬性


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、靜態方法不能調用非靜態方法反之可以


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM