我们应该如何以及在何处使用Static修饰符:
1.领域和
2.方法?
对于例如在java.lang.Math类中,字段的方法,如ABS(),ATAN(),COS()等是静态的,即它们可以作为被访问:Math.abs()
但为什么这是一个好习惯呢?
说,我不保持静态并创建类的对象并访问它,无论如何我都可以,我将得到一个警告,你试图以非静态方式访问静态方法(如指出通过@duffymo,而不是Math类).
更新1:
因此,效用方法应该是静态的,即其工作仅取决于方法参数.那么,例如,该方法updateString(String inputQuery, String highlightDoc)应该是这个问题中的静态方法吗?
Ale*_*lex 21
您可以将"静态"方法或字段视为在类定义之外声明它.换一种说法
有几种情况你想要做一些静态的东西.
字段的规范示例是创建一个静态整数字段,该字段在类的所有实例(对象)中保持计数.另外,单例对象例如通常也使用静态修改器.
类似地,静态方法可用于执行"实用程序"作业,所有必需的依赖项都作为参数传递给方法 - 您不能在静态方法中引用"this"关键字.
在C#中,您还可以拥有静态类,正如您可能猜到的那样,它们只包含静态成员:
public static class MyContainer
{
private static int _myStatic;
public static void PrintMe(string someString)
{
Console.Out.WriteLine(someString);
_myStatic++;
}
public static int PrintedInstances()
{
return _myStatic;
}
}
Run Code Online (Sandbox Code Playgroud)
Static使用较少的内存,因为每个Classloader只存在一次.
要使方法静态可以节省一些时间,因为您不必先创建一个对象,这样就可以调用一个函数.你可以/应该使用静态方法,当它们几乎独立时(即Math.abs(X) - 函数确实没有对象.)基本上它是一个方便的东西(至少就我看来 - 其他人可能也会不同意:P)
静态字段应该谨慎使用.有很多模式需要静态字段......但首先是基础知识:
静态字段只存在一次.所以如果你有一个简单的类(有点伪代码):
class Simple {
static int a;
int b;
}
Run Code Online (Sandbox Code Playgroud)
现在你用以下物体制作物品:
Simple myA = new Simple();
Simple myB = new Simple();
myA.a = 1;
myA.b = 2;
myB.a = 3;
myB.b = 4;
System.out.println(myA.a + myA.b + myB.a + myB.b);
Run Code Online (Sandbox Code Playgroud)
你会得到3234 - 因为通过设置myB.a你实际上也会覆盖myA.a,因为a是静态的.它存在于记忆中的一个地方.
你通常想避免这种情况,因为可能会发生奇怪的事情.但是,如果您以工具模式为例进行谷歌搜索,您会发现这种行为实际上非常有用.
希望能稍微清理一下.
| 归档时间: |
|
| 查看次数: |
56164 次 |
| 最近记录: |