日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第三次学JAVA再学不好就吃翔(part26)--static关键字

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三次学JAVA再学不好就吃翔(part26)--static关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考


文章目錄

    • 面向對象
      • static關鍵字
        • 靜態關鍵字的特點
        • 注意事項


面向對象


static關鍵字


  • 先看一個例子
class Bunny0601A {public static void main(String[] args) {Bunny b1 = new Bunny();b1.name = "Huang";b1.age = 10;Bunny b2 = new Bunny();b2.name = "Bai";b1.speak();b2.speak();} }class Bunny {String name;static int age;public void speak() {System.out.println(name + "已經" + age + "個月啦!");} }

輸出:

Huang已經10個月啦! Bai已經10個月啦!

靜態關鍵字的特點


  • 靜態關鍵字的特點
    • 隨著類的加載而加載;
    • 優先于對象存在;
    • 被類的所有對象共享。所以如果某個成員變量是被所有對象共享的,那么它就應該定義為靜態的,共性用靜態,特性用非靜態;
    • 靜態可以通過類名調用

  • 舉個例子
class Bunny0601A {public static void main(String[] args) {Bunny.age = 9;System.out.println(Bunny.age);} }class Bunny {String name;static int age;public void speak() {System.out.println(name + "已經" + age + "個月啦!");} }

輸出:

9

注意事項


  • 注意事項

    • 靜態是隨著類的加載而加載,靜態比對象先存在,this是隨著對象的創建而存在,非靜態的成員只能通過對象(this)來訪問,而不能通過類名直接訪問。

    • 靜態方法只能訪問靜態的成員變量和靜態的成員方法,而非靜態的方法可以訪問靜態的也可以訪問非靜態的。


  • 舉個例子

我們分別利用靜態和非靜態方法訪問靜態和非靜態成員。

非靜態方法:

class Bunny0601A {public static void main(String[] args) {Bunny b = new Bunny();b.print1();} }class Bunny {String name;static int age;public void print1() { //非靜態的成員方法,既可以訪問靜態的成員也可以訪問非靜態的成員System.out.println(name);System.out.println(age);} }

輸出:

null 0

靜態方法:

class Bunny0601A {public static void main(String[] args) {Bunny.print2();} }class Bunny {String name;static int age;public static void print2() { //靜態的成員方法System.out.println(name); //靜態的成員方法不能訪問非靜態的成員System.out.println(age);} }

報錯:

---------- javac ---------- Bunny0601A.java:18: 錯誤: 無法從靜態上下文中引用非靜態 變量 nameSystem.out.println(name); //靜態的成員方法不能訪問非靜態的成員^ 1 個錯誤Output completed (2 sec consumed) - Normal Termination

將靜態方法中非靜態變量刪掉:

class Bunny0601A {public static void main(String[] args) {Bunny.print2();} }class Bunny {String name;static int age;public static void print2() { //靜態的成員方法System.out.println(age);} }

輸出:

0

總結

以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part26)--static关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。