java静态与非静态。 新手求教:在编程时候,什么时候定义静态方法,什么时候定义非静态方法比较好?

在编程过程中,总要有取舍,这怎么去判断?另外,定义静态变量怎么来根据实际情况来判断,没接触过什么实际项目,所以比较陌生,求大婶指教。

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。

如果有什么地方不明白可以追问。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-14
你要先明白什么是static,才好比较。被static修饰的方法或变量会优先于类实例的产生而常驻于内存。也就是说有可能类的实例还没用用到的时候,该类里的静态函数已经在内存中出现了。
所以,如果说一个方法作为一个工具性的功能(比如产生数据库连接啊等等),可以考虑做成静态的,这样效率比较高,因为他一直在内存中,随用随拿,不用new实例再调用。
第2个回答  2012-05-14
楼主你好,定义静态变量了比如数据库的连接信息,你可以用静态的,也可以加上final,不让修改,你做的一些功能性的类里面可以用静态的成员,比如你可以做一个得到日期的类,那样里面就用静态的成员。除了这些,其他的都可以用非静态的成员或方法来定义。
第3个回答  2012-05-14
需要在静态方法中调用的变量,一定要设为静态。
但主要的话,还是说那种全局变量,设为静态比较好,他不会因为对象不同而变得值也不同。比如你统计在线人数的时候,完全可以设置一个全局静态变量
相似回答