Java基礎-5 static

java-5.jpg

static(靜態): 修飾符

static修飾成員變量: 如果一個數據需要被所有對象共享使用的時候,那么即可使用static修飾該成員變量。

    訪問方式:
            方式1: 可以使用對象進行訪問。  格式:對象.靜態屬性名

            方式2: 可以使用類名進行訪問。  格式: 類名.屬性名。
    
    推薦使用:可以使用類名進行訪問。
    

靜態成員變量要注意的細節:
    1. 靜態的成員變量可以使用類名或者是對象進行訪問。
    2. 非靜態的成員變量只能使用對象進行 訪問,不能使用類名直接訪問。
    3. 千萬不要為了方便訪問而使用static修飾一個成員變量,只有這個成員變量的數據是需要被共享的時候
        才使用static修飾。

static修飾成員函數:
    
    靜態函數的訪問方式:
        
          方式一:使用對象訪問。  格式: 對象.函數名()

          方式二:使用類名訪問。 格式: 類名.函數名();

    
    靜態函數要注意的細節:
        1. 非靜態的函數只能使用對象調用,不能使用類名調用。
        2. 靜態函數可以直接訪問靜態的成員,但是不能直接訪問非靜態的成員。
            原因:靜態函數可以使用類名調用,而這時候對象可能還沒有存在內存中,這時候非靜態的數據也就不存在內存中。

        3. 非靜態函數可以直接訪問靜態以及非靜態的成員。
            原因:非靜態函數必須要由對象調用,如果對象存在了,靜態數據以及非靜態數據早就存在內存中了。 

        4. 靜態函數不能出現this以及super關鍵字。
            原因:因為靜態函數可以使用類名直接調用,而這時候可能還沒有對象存在,this又要代表當前對象。


什么時候使用static修飾一個函數呢?
    如果一個函數沒有直接訪問非靜態的成員,那么即可使用static修飾該函數了。(常用于工具類的方法 Arrays)


非靜態的成員變量與靜態成員變量的區別:

    數量上的區別: 
        (n份)非靜態成員變量是在每個對象中都維護一份數據
        (1份)靜態成員變量只會在方法中維護一份數據。

    訪問方式上的區別:
        非靜態的成員變量只能使用對象進行訪問. 
        靜態成員變量可以使用對象、類名進行訪問。
    
    存儲位置上的區別;
        非靜態成員變量是存儲在堆內存中。
        靜態成員變量是存儲在方法區中。
        
    生命周期的區別:
        非靜態成員變量是隨著對象的創建而存在,隨著對象的消失而消失。
        靜態成員變量是隨著類文件的加載而存在,隨著類文件(字節碼文件)的消失而消失。

    作用上的區別:
        非靜態成員變量的作用是用于描述一類事物的屬性。
        靜態成員變量的作用是提供一個共享數據給所有對象使用的。 

class Student{

 String name ; // 非靜態的成員變量

static  String country = "中國";  //靜態的成員變量

//靜態代碼塊
static{
    System.out.println("靜態代碼塊的代碼執行了..");
}

public Student(String name){
    this.name = name;
}

//靜態函數  
public static void sleep(){
    System.out.println( "今晚早睡..");
    
}
//非靜態函數
public void study(){
    System.out.println(name+"好好學習,為將來可以成為高富帥做準備!!");
}

}

class Person
{
public static void main(String[] args) {

    Student s1 = new Student(“張三”);
    Student s2 = new Student(“李四”);
    System.out.println("姓名:"+ s1.name);
    System.out.println("姓名:"+ s2.name);
    /*
    System.out.println("國籍:"+ Student.country);
    */
}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,614評論 4 12
  • 多態 任何域的訪問操作都將有編譯器解析,如果某個方法是靜態的,它的行為就不具有多態性 java默認對象的銷毀順序與...
    yueyue_projects閱讀 986評論 0 1
  • 你心似海, 我似墜機, 在電閃雷鳴之間墜毀; 波瀾壯闊, 在地獄和天堂之間, 你給我的擁抱, 就是一道死去的光, ...
    真梨閱讀 221評論 0 0