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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

静态方法、静态变量

發布時間:2025/7/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 静态方法、静态变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

靜態方法用static關鍵詞進行標記,靜態方法的調用是使用? 類名+“.”運算符。而非靜態方法則是使用? 引用變量名+“.”運算符調用。

//非靜態方法,可以聲明實例變量。通過引用變量名+“.”運算符調用,例如player.playSound(title); public class Song {String title;public Song(String t) {title=t;}public void play() {SoundPlayer player=new SoundPlayer(); //創建SoundPlayer的實例。 player.playSound(title);}}//靜態方法,無法創建實例變量,直接用類名+“.”運算符,例如Math.min(80,50) public static int min (int a,int b) {//返回a,b中的較小值 }

?

靜態方法不能調用非靜態變量,同時,靜態方法也不能調用非靜態方法。

/** 靜態方法不能調用非靜態的變量* 靜態方法也不能調用非靜態的方法*/public class Duck {private int size;public static void main(String[] args) {System.out.println("Size of duck is "+size); //調用了實例變量size,此時根本無法知道是哪個size System.out.println("Size is "+getSize); //這一句無法通過編譯。調用了getSize()會需要用到size實例變量, }public void setSize(int s) {size=s;}public int getSize() {return size;}}

由上面的代碼可知,非靜態方法中有實例變量無法通過編譯,若非靜態方法中沒有實例變量也無法通過編譯。

?

靜態變量會在第一次載入的時候初始化一次,若程序循環調用該變量不會被反復初始化,而實例變量則會不斷初始化。下面這段程序,每有一個Duck duck1=new Duck(3);其構造函數就會被執行一次,其中的duckCount1每次都會被初始化為0,duckCount2只會在第一次被初始化為0。

public class Duck {private int size;int duckCount1=0;static int duckCount2=0;public Duck() {duckCount1++; //每當該構造函數被執行時,此變量的值會不斷被初始化為0duckCount2++; //而此變量則會不斷執行遞增,duckCount2只會在第一次載入是被初始化為0 }public void setSize(int s) {size=s;}public int getSize() {return size;}}

同一個類的所有實例共享,實例變量每個實例有一個,靜態變量每個類只有一個。duckCount2會在載入類的時候被初始化為0。若沒有給靜態變量賦初值,其就會被設定為默認值,int、long、short會被設定為0,浮點數默認為0.0,boolean默認為false。同樣,靜態變量也是通過 類名+“.”運算符調用

final變量一旦被初始化值后就就會一直維持這個值不會再改變。如下面的PI為例,public表示該變量可以被各方讀取,static表示你不需要實例,標記為final表示其值不變。需注意常數變量的名稱應該要都是大寫字母并以下劃線分隔,符合命名慣例。

1 public static final double PI=3.1415926535;

靜態final變量初始化的方法有兩種:

/** 靜態final變量初始化的兩種方法:* 1、聲明變量的時候直接初始化* 2、在靜態初始化程序中初始化* 靜態初始化程序是一段在加載類時會執行的程序代碼,它會在其他程序可以使用該類之前就執行,因此很適合放入final變量的起始程序。*/ public class Bar {//1、聲明變量時直接初始化public static final int BAR_SIGN1=25;//2、在靜態初始化程序中初始化public static final int BAR_SIGN2;static {BAR_SIGN2=(int)Math.random();}}

final還可以用于其他方面,final的變量(包括實例變量)代表你不能改變其值,final的方法代表你不能覆蓋這個方法,final的類代表你不能繼承該類,也就是不能創建其子類。

//非靜態的final變量class Foof{final int size=3;final int whuffie;Foof(){whuffie=42;}void doStuff(final int x) {//x的值不能被改變 }void doMore() {final int z=7;//z不能被改變 }}//final的方法class Poof{final void calcWhuffie() {//絕對不能被覆蓋 }}//final的類final class MyMostPerfectClass{//不能被繼承}

?

轉載于:https://www.cnblogs.com/do-hardworking/p/10480439.html

總結

以上是生活随笔為你收集整理的静态方法、静态变量的全部內容,希望文章能夠幫你解決所遇到的問題。

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