2014-04-18 43 views
-1

我已经了解到字段就像全局变量,可以通过同一类中的方法访问。我之前就这样做过,从来没有遇到过问题。我现在有一个类,我有一些领域,但方法不能访问他们,而不必使他们成为静态字段。我得到错误“不能静态引用非静态...” 我认为静态是访问其他类上的字段,而不必创建一个对象引用类。与此代码唯一的区别是,我有这个类中的一个类和我的main()方法。这个类中有main()是否有所作为?Java中的静态字段

+0

您可以发布您的代码,并指出问题出在哪里?静态数据意味着它与类关联,而不是类的特定*实例*。 –

+0

通过阅读理论,假设代码和问题非常困难。 – Gundamaiah

回答

0

对于类本身,静态成员只存在一次,而不是每个类的实例都不同的常规类成员。

拥有main()方法不会影响静态成员的行为,但静态方法只能访问静态成员,而非静态方法可以访问静态和非静态类成员。

+0

谢谢,我犯了使我的方法变为静态的错误。这就是导致这个问题的原因。 – polaris

+0

“静态方法只能访问静态成员” - 不完全正确;为了访问***实例***成员,您必须将它们作为参数传递给对象引用。虽然有合法的用例,但这种方法应该是一种实例方法(也许应该在这种情况下重新构建),这是一种设计气味。 –

+1

@LawrenceDol是的,但是由于提问者的问题范围和隐含的经验水平,这太过于迂腐了。 – caskey

0

您无法访问静态方法内的非静态实例。我认为你是在试图访问直接main方法里面类变量,即

class A 
{ 
int x; 

main() method 
{ 
x;//Not accessible here,, create instance of class and access it.like 
A a=new A(); 
a.x; 
} 
} 
0

静态(方法,变量,类等)属于类不类的特定实例。当行为或状态不依赖于类的任何特定实例时,我们将其定义为静态。例如“生成一个随机数”它不依赖于实例,它总是生成一个数字,不管实例如何,这种行为可以定义为静态。

关于错误,发布您的代码将有助于提供更好的解决方案。

请参考以下链接了解更多关于静态和非静态

http://javarevisited.blogspot.in/2012/02/why-non-static-variable-cannot-be.html