-2
我是一名java初學者,我試圖從我購買學習java的書中瞭解static的概念。但是,由於我在節目中的實驗,我感到非常困惑。這本書說,靜態無法引用這個關鍵字,這是好的,直到我開始使用普通函數而不是靜態。在這裏,我可以用this關鍵字訪問靜態變量! (見displayMobileSpecs功能在下面的代碼)爲什麼我能夠在java中使用這個關鍵字與靜態變量
import java.util.Random;
class Static {
public static void main(String[] com){
System.out.println("By default the mobile is having "
+ Mobile.RAM + "gigabytes of RAM and"
+ Mobile.CameraMP + " mega pixels of camera");
Mobile S4mini = new Mobile("S4 Mini" , 4 , 16);
S4mini.displayMobileSpecs(true);
Mobile mob2 = new Mobile("fdf" , 23 , 45);
mob2.displayMobileSpecs(true);
S4mini.displayMobileSpecs(false);
}
}
class Mobile{
static int RAM;
static int CameraMP;
Random rand = new Random();
double InternalMemorySpace;
double ExternalMemorySpace;
String modelNo;
Mobile(String modelName,double internalMem , double externalMem)
{
this.modelNo = modelName;
this.InternalMemorySpace = internalMem;
this.ExternalMemorySpace = externalMem;
}
static {
RAM = 4;
CameraMP = 12;
System.out.println("The Static part of the class is executed");
}
void displayMobileSpecs(boolean change){
if(change)
this.RAM = (int) rand.nextInt(8) + 2;
System.out.println(this.RAM + " , " + Mobile.RAM);
}
}
因此,它是靜態的變量可以用此進行訪問,但不能在靜態函數還是什麼?我真的很困惑,這是一個非常愚蠢的問題,因爲我看到了,但請回答我。
(注:順便說一下,請不要介意在節目中使用的移動的荒謬的例子謝謝:))
你可以通過像this這樣的實例引用來引用一個靜態成員,但是你不應該這樣做。 –
我同意.....但我的答案僅限於OP的問題,你正在採取它的dos和donts。感謝您的補充。 – mhasan