首頁 Java Java入門 static關鍵字的三大作用

static關鍵字的三大作用

Aug 19, 2020 pm 05:07 PM
static 關鍵字

static關鍵字的三大作用

static關鍵字的三大作用:

(推薦教學:java入門教學

static靜態成員變量

static靜態成員方法

static靜態程式碼區塊

分析:

1、static靜態成員變數

說明:如果一個成員變數使用了static關鍵字,那麼這個變數不再屬於物件自己,而是屬於所在類別。多個物件共享同一份資料。

程式碼範例說明:

我們建立一個Student學生類,設定room教室和idCounter兩個靜態成員變數。在main()方法中實例化兩個學生物件one和two,只給one物件的room賦值,列印輸出的時候會發現此時two.room的值和one.room的值一樣。

可以看出,因為room使用了static關鍵字,所以它屬於類,不再屬於物件自己,可以被多個物件共享一。因為idCounter是一個靜態變量,只會初始化一次,所以,每建立一個物件id都會自增長1。

public class Demo01StaticField {
    public static void main(String[] args) {
        Student one=new Student("郭靖",19);
        Student two=new Student("黄蓉",16);
        one.room="101教室";
        System.out.println("姓名:"+one.getName()+",年龄:"
                +one.getAge()+",教室:"+one.room
                +",学号:"+one.getId());        //姓名:郭靖,年龄:19,教室:101教室,学号:1
        System.out.println("姓名:"+two.getName()
                +",年龄:"+two.getAge()+",教室:"+two.room
                +",学号:"+two.getId());        //姓名:黄蓉,年龄:16,教室:101教室,学号:2
    }
}
 
public class Student {
 
    private int id;             //学号
    private String name;        //姓名
    private int age;            //年龄
    static String room;         //所在教室
    private static int idCounter=0;     //学号计数器,每当new了一个新对象的时候,计数器++
 
    public Student() {
        this.id= ++idCounter;
    }
 
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        this.id= ++idCounter;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    //name和age的Getter,Setter方法同上id,省略
}

2、static靜態成員方法

說明:如果一個成員方法使用了static關鍵字,同樣,那麼這就變成了靜態方法。靜態方法不屬於對象,而是屬於類別的。

static修飾成員方法的優點:避免了new物件的繁瑣和資源的消耗,可以直接透過【類別名稱.方法名稱】來使用。

程式碼範例說明:

新一個Myclass類,裡面有一個成員變量,一個靜態成員變量,一個成員方法,一個靜態成員方法。我們可以看到,成員方法既可以存取成員變數也可以存取靜態變數。而靜態方法只能存取靜態變量,不能存取非靜態,也不能使用this關鍵字。使用該類別的時候,有了static關鍵字,那麼不需要創建對象,直接就能透過類別名稱來使用它。對於本類別當中的靜態方法,可以省略類別名稱。

public class Demo02StaticMethod {
    public static void main(String[] args) {
 
        //非静态方法使用:1.首先创建对象
        MyClass obj=new MyClass();
        //2.然后才能使用没有static关键字的方法
        obj.method();
 
        //对于静态方法来说,可以通过对象名进行调用,也可以通过类名称来调用。
        obj.methodStatic();     //正确,不推荐,这种写法也会被javac翻译成“类名称.静态方法名”
        MyClass.methodStatic(); //正确,推荐
 
        //对于本类当中的静态方法,可以省略类名称
        myMethod();
        Demo02StaticMethod.myMethod();      //完全等效
 
    }
    public static void myMethod(){
        System.out.println("自己的方法!");
    }
}
public class MyClass {
 
    int num;        //成员变量
    static int numStatic;       //静态变量
 
    //成员方法
    public void method(){
        System.out.println("这是一个普通的成员方法。");
        //成员方法可以访问成员变量
        System.out.println(num);
        //成员方法可以访问静态变量
        System.out.println(numStatic);
    }
 
    //静态方法
    public static void methodStatic(){
        System.out.println("这是一个普通的静态方法。");
        //静态方法可以访问静态变量
        System.out.println(numStatic);
        //静态不能直接访问非静态【重点】
        //System.out.println(num);        //错误写法
        //静态方法中不能使用this关键字
        //System.out.println(this);        //错误写法
    }
}

(學習影片推薦:java課程

3、static靜態程式碼區塊

格式:

public class 类名称{    
   static{                      
       //静态代码块的内容                
   }
}

特點:當第一次用到本類時,靜態程式碼區塊執行唯一的一次,可以用來最佳化程式效能。我們大多數情況下,會將一些只會執行一次的初始化操作(初始化靜態資源)的程式碼放在static程式碼區塊中,例如:載入設定檔等。注意:靜態內容總是優先於非靜態,所以靜態程式碼區塊比建構方法先執行。

public class Demo04StaticCode {
    public static void main(String[] args) {
        Person one=new Person();
        System.out.println("************************");
        //无论创建几个Person对象,静态代码块只执行一次
        Person two=new Person();
    }
}
public class Person {
 
    static{
        System.out.println("静态代码块执行!");
    }
 
    public Person() {
        System.out.println("构造方法执行!");
    }
}

執行結果:

static關鍵字的三大作用

以上是static關鍵字的三大作用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

Rimworld Odyssey溫度指南和Gravtech
1 個月前 By Jack chen
初學者的Rimworld指南:奧德賽
1 個月前 By Jack chen
PHP變量範圍解釋了
3 週前 By 百草
撰寫PHP評論的提示
3 週前 By 百草
在PHP中評論代碼
3 週前 By 百草

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1603
29
PHP教程
1508
276
深入解析C語言中static關鍵字的作用與用法 深入解析C語言中static關鍵字的作用與用法 Feb 20, 2024 pm 04:30 PM

深入解析C語言中static關鍵字的功能和用法在C語言中,static是一種非常重要的關鍵字,它可以被用於函數、變數和資料類型的定義。使用static關鍵字可以改變物件的連結屬性、作用域和生命週期,以下就來詳細解析一下static關鍵字在C語言中的作用和用法。 static變數與函數:在函數內部使用static關鍵字定義的變數稱為靜態變量,它具有全域生命週

c語言static的作用和用法是什麼 c語言static的作用和用法是什麼 Jan 31, 2024 pm 01:59 PM

c語言static的作用與用法:1、變數作用域;2、生命週期;3、函數內部;4、修飾全域變數;5、修飾函數;6、其他用途;詳細介紹:1、變數作用域,當一個變數前有static關鍵字,那麼這個變數的作用域被限制在聲明它的檔案內,也就是說,這個變數是“檔案層級作用域”,這對於防止變數的“重複定義”問題很有用; 2、生命週期,靜態變數在程式開始執行時初始化一次,並在程式結束時銷毀等等。

PHP中var關鍵字的作用與範例 PHP中var關鍵字的作用與範例 Jun 28, 2023 pm 08:58 PM

PHP中var關鍵字的作用和範例在PHP中,var關鍵字用來聲明一個變數。在先前的PHP版本中,使用var關鍵字是宣告成員變數的慣用方式,現在不再建議使用。然而,在某些情況下,var關鍵字依然會被使用。 var關鍵字主要用於宣告一個局部變量,並且會自動將該變數標記為局部作用域。這意味著該變數僅在當前的程式碼區塊中可見,並且不能在其他函數或程式碼區塊中存取。使用var

C語言中go是關鍵字嗎?詳細解析 C語言中go是關鍵字嗎?詳細解析 Mar 16, 2024 am 10:30 AM

標題:C語言中go是關鍵字嗎?詳細解析在C語言中,"go"並不是一個關鍵字。 C語言的關鍵字是由C標準規定的,用來表示特定的語法結構或功能,在編譯器中有特殊的意義,不能被用來當作標識符或變數名稱。例如,關鍵字"int"表示整數資料型別,"if"表示條件語句等等。如果我們想要驗證在C語言中"go"是否是關鍵字,可以寫一個簡單的程式來測試。下面是一個範例:#inc

go語言中while是關鍵字嗎 go語言中while是關鍵字嗎 Jun 04, 2021 pm 05:01 PM

在go語言中,while不是關鍵字,可以用for語句加break來實現while循環的效果,例「for {sum++ if sum>10{break}else{...}}」。 go語言有break、default 、func、select、case、defer、go、map、else、goto、for、if、var等25個關鍵字。

C語言中static關鍵字的實際應用場景及使用技巧 C語言中static關鍵字的實際應用場景及使用技巧 Feb 21, 2024 pm 07:21 PM

C語言中static關鍵字的實際應用場景及使用技巧一、概述static是C語言中的關鍵字,用來修飾變數與函數。它的作用是改變其在程式運行過程中的生命週期和可見性,使得變數和函數具有靜態的特性。本文將介紹static關鍵字的實際應用場景及使用技巧,並透過具體的程式碼範例進行說明。二、靜態變數延長變數的生命週期使用static關鍵字修飾局部變數可以將其生命週期

Java中的static、this、super、final怎麼會使用 Java中的static、this、super、final怎麼會使用 Apr 18, 2023 pm 03:40 PM

一、static  請先看下面這段程式:publicclassHello{publicstaticvoidmain(String[]args){//(1)System.out.println("Hello,world!");//(2)}}看過這段程序,對於大多數學過Java的從來說,都不陌生。即使沒有學過Java,而學過其它的高階語言,例如C,那你也應該能看懂這段程式碼的意思。它只是簡單的輸出“Hello,world”,一點別的用處都沒有,然而,它卻展示了static關鍵字的主

c語言中關鍵字有幾個 c語言中關鍵字有幾個 Nov 22, 2022 pm 03:39 PM

C語言的關鍵字共有32個,根據關鍵字的作用,可分其為資料類型關鍵字、控制語句關鍵字、儲存類型關鍵字和其它關鍵字四類。資料型別關鍵字有12個,包括char、double、float、int等;控制語句關鍵字有12個,包括for、break、if、else、do等;儲存類型關鍵字有4個,包括auto、static 、extern等;其它關鍵字有4個,包括const、sizeof等。

See all articles