我是java的初学者,我试图从我为学习java而购买的书中理解 static 的概念。但是,由于我在程序中的实验,我很困惑。这本书说静态不能引用这个关键字,这在我开始使用普通函数而不是静态函数之前是好的。在这里,我能够使用this关键字访问静态变量!! (参见下面代码中的displayMobileSpecs函数)
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);
}
}
因此可以使用此方法访问静态变量,但不能在静态函数中访问或使用什么?我真的很困惑,这是一个非常愚蠢的问题,但是请回答我。
(注意:顺便说一句,请不要介意该程序中使用的移动设备的荒谬例子。谢谢:))
答案 0 :(得分:2)
可以使用此方法访问静态变量,但不能在静态变量中访问 功能
在静态块或静态方法中,没有要引用的实例,因此不允许使用“this”关键字。
为什么我能在java中使用此关键字和静态变量
但你可以在非静态方法中引用“this”,也可以在非静态方法中使用带有“this”关键字的refer静态变量。这里“this”指向当前对象。