我知道在OOP中,instance = object.所以如果我们有这样的类:
public class something { public static void main(String args[]) { } }
main方法中的这一行会创建新的对象实例吗?
something instance=new something();
我的第二个问题是类似的:如果我们创建Thread对象 – Thread t1 = new Thread();它实际上意味着我们创建了一个Thread类的实例,我们可以从中静态调用方法? (例如sleep()).
解决方法
if we create Thread object – Thread t1=new Thread(); does it actually mean we have created instance of class Thread,from which we can staticly call methods? (e.g sleep()).
调用静态方法时,不要将其从对象中调用.这就是为什么它是静态的.不需要一个实例来执行静态方法.
例
Thread t1 = new Thread(); t1.checkAccess(); // <--- This is an instance method. Thread.activeCount(); // <-- This is a static method.
当您看到新的关键字时,这意味着正在创建一个新的对象.在这种情况下,它是Thread类的一个实例,正如你所说的那样.
你怎么把他们分开?
String str = new String("hello"); str = str.replaceAll("o","");
您可以看到,您必须创建一个实例来使用实例方法.
使用静态方法,这更容易.他们将被称为只有名字的类.
String.copyValueOf(new char[] {'a','b','c'});
没有必要创建一个新的String实例.只需使用该类的名称.
注意:正如注释中所指出的,静态方法可以从实例对象调用,但这不是常见的做法.如果您不确定,文档是您最好的朋友.或者您可以通过尝试从静态上下文调用相同的方法来简单地测试.
那么这个回答很好,在这里:Java: when to use static methods,我觉得没有意义重复它:)