我知道静态类型和其他类型之间的区别,但我不确定在哪里使用。现在我在所有地方都使用静态类型来避免对象实例化。以这种方式使用它是一个好主意吗?在所有地方使用静态类型是否有任何特殊的缺点?
修改
您将此称为static String staff
?
答案 0 :(得分:5)
这是一个很好的问题。通常你应该不使用static
方法/变量,除非你确定它是一个正确的应用程序。在面向对象编程(OOP)中,对象封装数据和行为。通常,*实例方法用于操纵对象的数据。
Static
方法/变量只应用于与任何特定对象无关的功能。 static
的有效申请的一个很好的例子是Math.random()
。
关于实例和静态方法/变量的一些注释:
罗伯特·马丁撰写的一本关于这个主题的好书是Clean Code。强烈推荐。
*实例方法与静态方法相反。它们与类实例相关联,而不是类本身。
解决您的编辑问题,假设这是一个变量,您可以像这样访问它:
MyClass.staff = "bob, george, and linda";
System.out.println(MyClass.staff);
编辑:这是我之前在另一个论坛上发表的一篇文章,有一些很好的答案。这是一个PHP论坛,但这些概念仍然适用。
答案 1 :(得分:1)
当有多个对象实例时,所有实例都会共享静态类型的变量和函数。
答案 2 :(得分:0)
任何应用程序中的大多数逻辑都将模块化,并将在某些共享字段上运行。这就是大多数方法都是非静态的原因。在这种情况下,'fields'可以是'firstName'等基本的东西。但在其他情况下,'fields'是其他类的实例,例如DataAccess(DAO)类。
变量,即字段几乎不应该是静态的,除非它们是“常量”。
使用静态方法的一个好例子是转换字符串的类,例如:
public class StringUtil{
public static String convertToHex(String orig){
}
}