回答
显然,不,我们不能。
在Java中,static
表示它是一个类的变量/方法,它属于整个类,但不属于它的某个特定对象。
这意味着static
关键字只能在'类作用域'中使用,即它在方法内部没有任何意义。
它可能有它在C函数中的含义...“ 来自维基百科:”静态局部变量:在函数内声明为静态的变量是静态分配的,而与自动局部变量具有相同的范围。当再次调用函数时,在一次调用期间它仍然存在于静态局部变量中。“ – 2010-07-31 15:44:14
@功能:我的建议是基于问题附近的标签'java'。 – Roman 2010-07-31 15:45:01
好的,明白了。我只是说它也可以是内部方法。这就是全部 – 2010-07-31 15:45:49
你不能,你为什么要这么做?您可以随时在其所属的课程级别声明它。
C和C++中的方法内部的静态变量是合法的,也许这是他的背景。 – 2010-07-31 15:43:19
我知道,但Java不是C++ :) C/C++中的静态变量具有在函数结束后不会被删除的优点,因此您可以将它们传递到任何位置。使用Java的垃圾收集器,你可以传递变量而不用担心,这就是为什么我问他是什么意思。谢谢你的评论。 – 2010-07-31 15:52:21
您可以使用main
方法内部静态变量(或任何其他方法),但你必须声明它们的类:
这是完全正常:
public Class YourClass {
static int someNumber = 5;
public static void main(String[] args) {
System.out.println(someNumber);
}
}
这也没关系,但在这种情况下,someNumber
是一个局部变量,而不是一个静态变量。
public Class YourClass {
public static void main(String[] args) {
int someNumber = 5;
System.out.println(someNumber);
}
}
由于静态变量的类加载时间分配的内存,并且如果你有一个方法内的静态变量分配内存只once.Now,那么这个变量来下的方法的范围,而不是类的范围和JVM无法为其分配内存,因为方法是通过类的对象的帮助来调用的,并且这是在运行时而不是在类加载时调用的。
由于静态变量可用于整个类,所以在概念上它只能在范围为全局的类之后声明,因为静态块或方法都有自己的作用域。
在C中,您可以静态分配本地的作用域变量。不幸的是,这在Java中不直接支持。但是你可以通过使用嵌套类来达到同样的效果。
例如,允许使用以下设置,但工程设计不好,因为x的范围比需要的大得多。另外两个成员(x和getNextValue)之间存在非明显的依赖关系。
static int x = 42;
public static int getNextValue() {
return ++x;
}
一个真正想做到以下几点,但它是不合法的:
public static int getNextValue() {
static int x = 42; // not legal :-(
return ++x;
}
但是你能做到这一点,而不是,
public static class getNext {
static int x = 42;
public static int value() {
return ++x;
}
}
这是更好的工程为代价有些丑陋的。
- 1. 如何在内联函数中声明一个静态变量?
- 2. 如何在Javascript中声明一个静态变量
- 3. 如何在方法内声明/设置静态变量
- 4. 如何声明静态变量
- 5. ios - 如何声明静态变量?
- 6. 在Java中,静态方法中声明的变量本身是静态的吗?
- 7. 我在PHP中声明了哪些静态方法/变量?
- 8. 在函数中声明静态变量
- 9. 如何从C中的静态变量声明一个常量变量?
- 10. 如何从静态类引用main方法中的变量? (java)
- 11. 可以在C中声明一个静态变量extern:
- 12. 在Java中的非静态类中声明静态变量
- 13. 非法参数异常 - 如何声明方法中定义的静态变量
- 14. 如何在公共静态类中声明一个常量?
- 15. 声明静态变量在单
- 16. createOperate方法不能被声明为静态;静态方法只能在静态或顶级类型中声明
- 17. 有多少个实例在方法中声明的静态变量?
- 18. 如何在Delphi 2009中声明静态变量?
- 19. 如何在Javascript中声明静态变量?
- 20. 如何在android中正确声明静态变量?
- 21. 如何在Objective-C中声明静态变量?
- 22. 如何在OptaPlanner中声明非静态全局变量
- 23. 如何在php中的公共静态函数之外声明一个变量?
- 24. 在objective-c中声明静态变量的地方?
- 25. 在非静态类中声明一个静态方法的意义是什么?
- 26. 在类之外声明一个新的静态变量
- 27. 调用第二类静态方法来声明变量的类
- 28. 为什么这个对象声明在node.js中工作以及如何声明一个静态变量?
- 29. 多个动态方法调用或在Grails中声明变量
- 30. 这个静态变量声明如何返回无穷大?
请粘贴相关代码。 – 2010-07-31 15:41:01
如果像某些评论者所说的那样,你的问题受到你可以在C中做这个事实的启发,那么你应该在你的问题中指出这个答案,以便通过指出Java和C之间的差异来帮助你。 – MatrixFrog 2010-07-31 15:48:19
也许我们可以更好地回答,如果我们知道为什么你需要在方法中使用静态变量?在方法中声明的所有变量仅限于该方法的范围。让我们知道您正在尝试解决什么问题,我相信我们可以为您提供一些很好的答案。 – CoolBeans 2010-07-31 18:43:57