我知道在C中,当关键字static
用于局部变量时,它会导致该变量在函数调用之间保持初始化(即当变量超出范围时)。例如:
int myFunction() {
static int i = 3;
i++;
return i;
}
如果myFunction()
被调用两次,它将第一次返回4,第二次返回5(因为i
在两次调用之间保持其值,而不是第二次重新初始化。)
我的问题是:Java在C中是否有与static
相同的关键字? Java也有关键字static
,但它的使用方式与C语言完全不同。
答案 0 :(得分:4)
不完全是,但private static
类级变量几乎会做同样的事情。
但是
它也可以在课程的所有其他方法中看到
它将在第一次方法调用时初始化,但是在加载类本身时
我认为这是可行的。
答案 1 :(得分:3)
方法中的所有变量都是函数的本地变量并放在堆栈中。您最接近的是类中的静态变量。
如果你将变量设为私有并将方法放在它自己的类中,你将获得大致相同的结果。 (使用私有构造函数)
答案 2 :(得分:0)
它与private
关键字有些相似,因为在C中,静态全局变量或函数仅在其声明的文件中可见...
这可能是你找到的最接近的地方:)。
答案 3 :(得分:-2)
不,因为所有方法和函数都绑定到Java中的类,所以没有"全局空间"与C中的一样.Java中的static
关键字具有不同的语义。
有关差异的详细信息,请参阅docs for static和this post。
答案 4 :(得分:-2)
Java以不同的方式使用static
。要在此处获得相同的结果,您应该使用private
字段。