Questions tagged «static»

静态是一些编程语言中使用的术语,用于定义未绑定到任何特定对象实例的函数或数据存储区域(字段)。在大多数情况下,如果使用此标签,则应与特定的编程语言标签结合使用。

10
静态方法和实例方法之间的区别
我只是在阅读教科书中给我的课文,但我不确定自己是否明白我在说什么。这基本上是在告诉我静态方法或类方法包括static的“ modifier”关键字。但是我真的不知道那意味着什么吗? 有人可以简单地向我解释什么是静态方法或类方法吗? 另外,我可以简单解释一下什么是Instance方法吗? 这是他们在教科书中给我的: 存在或不存在静态修饰符具有重要的实际意义。一旦Java处理了它所属的类的定义,就可以调用并执行一个公共类方法。实例方法不是这种情况。在公共实例方法可以被调用和执行之前,必须创建它所属的类的实例。要使用公共类方法,您只需要类。另一方面,在使用公共实例方法之前,您必须具有该类的实例。 在另一个方法的定义内调用静态方法的方式根据这两个方法是否属于同一类而有所不同。在上面的示例中,阶乘和main都是MainClass类的方法。结果,在main的定义中对阶乘的调用仅引用方法名称“阶乘”。


5
Java中的静态块未执行
class Test { public static void main(String arg[]) { System.out.println("**MAIN METHOD"); System.out.println(Mno.VAL); // SOP(9090); System.out.println(Mno.VAL + 100); // SOP(9190); } } class Mno { final static int VAL = 9090; static { System.out.println("**STATIC BLOCK OF Mno\t: " + VAL); } } 我知道static在加载类时执行了一个块。但是在这种情况下,类内的实例变量Mno为final,因为该static块未执行。 为什么呢?如果我删除final,它会正常工作吗? 首先分配哪个内存,static final变量还是static块? 如果由于final访问修饰符而无法加载该类,那么该变量如何获取内存?

5
等效静态方法和非静态方法的速度差异很大
在此代码中,当我在main方法中创建一个Object并调用该对象方法:(ff.twentyDivCount(i)运行于16010毫秒)时,它的运行速度比使用此批注:(twentyDivCount(i)运行在59516毫秒中)调用它快得多。当然,当我在不创建对象的情况下运行它时,会将方法设为静态,因此可以在主方法中调用它。 public class ProblemFive { // Counts the number of numbers that the entry is evenly divisible by, as max is 20 int twentyDivCount(int a) { // Change to static int.... when using it directly int count = 0; for (int i = 1; i<21; i++) { if (a % …

4
为什么const成员函数可以修改静态数据成员?
在以下C++程序中,从函数修改静态数据成员const可以正常工作: class A { public: static int a; // static data member void set() const { a = 10; } }; 但是从函数修改非静态数据成员const不起作用: class A { public: int a; // non-static data member void set() const { a = 10; } }; 为什么const成员函数可以修改static数据成员?
86 c++  function  c++11  static  const 

7
静态变量何时初始化?
我想知道何时将静态变量初始化为其默认值。加载类时,创建(分配)静态变量,然后执行静态初始化程序和声明中的初始化是否正确?在什么时候给出默认值?这导致前向参考的问题。 另外,如果您可以参考“为什么没有及时初始化静态字段?”这一问题进行解释,尤其是Kevin Brock在同一站点上给出的答案。我不明白第三点。


6
在文件范围内可变地修改数组
我想创建一个恒定的静态数组,以便在我的Objective-C实现文件中使用,类似于在“ .m”文件的顶层进行如下操作: static const int NUM_TYPES = 4; static int types[NUM_TYPES] = { 1, 2, 3, 4 }; 我计划NUM_TYPES稍后在文件中使用它,因此我想将其放入变量中。 但是,当我这样做时,我得到了错误 “文件范围内的可变修改的'类型'” 我认为这可能与数组大小是变量有关(当我在其中放置整数文字时,我没有得到此消息static int types[4])。 我想解决这个问题,但也许我会做错所有事情……我在这里有2个目标: 具有整个文件可访问的数组 封装NUM_TYPES到变量中,这样我就不会在文件的不同位置散布相同的文字 有什么建议么? [编辑]在C常见问题解答中发现了此问题:http : //c-faq.com/ansi/constasconst.html

6
泛型类的静态成员是否绑定到特定实例?
这更多是文档而不是实际问题。到目前为止,这似乎还没有得到解决(除非我错过了),所以这里是: 想象一下一个包含静态成员的通用类: class Foo<T> { public static int member; } 每个特定类是否都有成员的新实例,或者所有Foo型类只有一个实例? 可以通过以下代码轻松验证: Foo<int>.member = 1; Foo<string>.member = 2; Console.WriteLine (Foo<int>.member); 结果如何?此行为记录在哪里?
83 c#  .net  generics  static 

7
静态方法继承的正确替代方法是什么?
我了解C#不支持静态方法继承。我还阅读了许多讨论(包括此处的讨论),在这些讨论中,开发人员声称需要此功能,典型的回答是“如果需要静态成员继承,则设计中会有缺陷”。 好吧,鉴于OOP甚至不想让我考虑静态继承,因此我必须得出结论,我对它的明显需求指向了我的设计中的错误。但是,我被困住了。我非常感谢您为解决此问题提供的帮助。这是挑战... 我想创建一个封装了一些复杂的初始化代码的抽象基类(我们称它为Fruit)。该代码不能放在构造函数中,因为其中一些将依赖于虚拟方法调用。 Fruit将被其他具体类(Apple,Orange)继承,每个具体类都必须公开一个标准工厂方法CreateInstance()来创建和初始化实例。 如果静态成员继承是可行的,我将把工厂方法放在基类中,并使用对派生类的虚拟方法调用来获取必须从中初始化具体实例的类型。客户端代码将简单地调用Apple.CreateInstance()以获得完全初始化的Apple实例。 但是显然这是不可能的,所以有人可以解释一下我的设计需要如何更改以适应相同的功能。
83 c#  .net  inheritance  static 


2
Kotlin中的静态初始化块
Kotlin中的静态初始化块等效于什么? 我了解Kotlin的设计宗旨是不带静电。我正在寻找具有相同语义的东西-首次加载该类时,代码将运行一次。 我的特定用例是,我想从Android AppCompat库启用DayNight功能,并且说明要求将一些代码放入Application类的静态初始化块中。

3
如何处理静态链接库之间的符号冲突?
编写库时,最重要的规则和最佳实践之一是将库的所有符号放入特定于库的名称空间中。由于使用了namespace关键字,C ++使此操作变得容易。在C语言中,通常的方法是为标识符添加一些库特定的前缀。 C标准的规则放在那些一些限制(安全编译):AC编译器可以看只是一个标识符的前8个字符,所以foobar2k_eggs并foobar2k_spam可能被解释为有效相同标识符-但是每一个现代的编译器允许任意长标识符,因此在我们这个时代(21世纪),我们不必为此烦恼。 但是,如果您面对一些无法更改符号名称/标识符的库,该怎么办?也许您只有一个静态二进制文件和标头,或者不想,或者不允许自己进行调整和重新编译。


3
ASP.NET静态变量的生命周期
我将某些信息保存在页面类(而不是Global.asax)中定义的静态变量中。我只在代码中声明变量,例如: protected static int SomeGlobalUnsecureID; protected static string SomeGlobalUnsecureString; 并在PageLoad事件中定义变量。例如,我从数据库中检查ID,如果它与SomeGlobalUnsecureID不同,则从其他位置更新SomeGlobalUnsecureID和String,否则将其保留不变。这在我的应用程序中绝对安全。逻辑(即那些数据不安全,每个人都可以访问它们,没问题);我唯一想完成的是 无论连接的用户是什么,都保持相同数量的内存 仅当持久性信息与“内存”中的信息不同时才更改(因为实际读取字符串对我来说很耗时。 现在,由于我在PageLoad中进行了检查,所以重新加载的页面没有问题。但是,我的页面上充满了WebMethods,有时我看到静态变量被清零。而奇怪的是:即使静态变量为零,会话仍处于活动状态(因此->没有服务器或应用程序池重启等) 这对我来说真的很奇怪。我假设静态变量将保持其值,直到应用程序(以某种方式)结束。但是,即使会话未到期,静态变量也将清零。你有什么建议?使用应用程序变量是更好的选择吗?我在网上阅读的所有文档都建议使用静态变量而不是应用程序变量,是否需要以某种方式声明它们?
78 c#  asp.net  static 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.