当前位置: 首页 > 面试题库 >

为什么Java中没有局部静态变量?

东郭鹤龄
2023-03-14
问题内容

在C / C ++中,我们使用静态局部变量来维护方法的状态。但是,为什么Java不支持它呢?

是的,我可以为此使用一个静态字段。但是创建一个仅维护一个方法状态的字段有点奇怪吗?


问题答案:

您已经找到了唯一的解决方案。

Java放弃了C ++的许多复杂性,这就是其中之一。

作用于函数的静态变量并发地对您造成麻烦(例如,正是由于这个原因,strtok是与pthread一起使用的著名的讨厌变量)。

通常,您想要的是带有状态的对象。然后,所讨论的函数应具有对象级变量。然后,您可以创建每个维护状态的实例。

更容易理解/维护/等等。

如果您确实需要将状态保持为单例,那么它就是静态字段。



 类似资料:
  • 问题内容: 另外,在网上可以找到许多创建静态变量的解决方案。(尽管我还没有看到我喜欢的一个。) 为什么Python不支持方法中的静态变量?这被认为是非Python的,还是与Python的语法有关? 编辑: 我专门询问了 为什么 进行设计决策,但我没有提供任何代码示例,因为我想避免解释来模拟静态变量。 问题答案: 忽略这一点的想法是,静态变量仅在以下两种情况下才有用:何时真正应该使用类以及何时真正应

  • 问题内容: 我已经在Google上进行了广泛的搜索,但均无济于事。我似乎无法将这个概念笼罩在脑海中。为什么本地班级会接受静态最终字段?如下面的以下示例: 在EnglishGoodbye课堂上,允许告别可变吗?为什么?我很困惑。为什么允许但没有静态变量?我知道为什么它不能访问封闭范围的成员,除非它们是一个编译器时间常数,因为当函数结束时这些变量不再存在,但类可能不存在。对?我只是对此感到困惑。 谢谢

  • 我的类中有一个静态变量,我在cpp文件中将其实例化为值1000。 cpp文件的代码。 当我打印容器对象的ID值时,它们不断递增。 我的问题是,当我创建一个新对象时,我将静态变量实例化为值0f1000,那么为什么它会随着创建的每个对象不断递增呢?

  • 问题内容: 是否可以在Go中定义一个局部变量,该局部变量可以从一个函数调用到另一个函数保持其值?在C语言中,我们可以使用保留字。 在C中的示例: 问题答案: 使用闭包: 函数文字是闭包:它们可以引用周围函数中定义的变量。然后,这些变量在周围的函数和函数文字之间共享,并且只要可以访问它们就可以保留。 它不必在全局范围内,只需在函数定义之外即可。 (去操场上的样本)

  • 问题内容: 如果将变量声明为,那么我可以从任意位置访问它。我还知道,静态成员由类的所有实例共享,并且不在每个实例中重新分配。 声明变量与声明变量有什么不同吗? 在这两种情况下,都不能以任何其他类或从任何其他类访问它。 将变量声明为静态是否会赋予它其他特殊属性? 问题答案: 当然,可以将其作为,但只能从定义它的类内部进行访问-这是因为它被定义为。 或变量通常用于常量。例如,许多人不喜欢在代码中“硬编