如果我们创建Thread对象- Thread t1 = new Thread();,这是否意味着我们已经创建了Thread类的实例,可以从中静态调用方法(例如sleep())?
当您调用静态方法时,不是从对象调用它。这就是为什么它是静态的。执行静态方法不需要实例。
示例Thread t1 = new Thread();
t1.checkAccess();
Thread.activeCount();
当你看到new
关键字时,它意味着正在创建一个新对象。在这种情况下,正如你所说,它是Thread
类的实例。
如何区分它们?
很简单。如果它是实例方法,它将从对象上下文中调用。
String str = new String("hello");
str = str.replaceAll("o", "");
正如您所见,您需要创建一个实例来使用实例方法。
对于静态方法,它更加简单。只需使用类的名称即可调用它们。
String.copyValueOf(new char[] {'a', 'b', 'c'});
不需要创建新的String
实例,只需使用类名即可。
注意:正如评论中指出的那样,静态方法确实可以从实例对象调用,但这并不是常见的做法。如果您不确定,请查看文档。或者,您可以尝试从静态上下文调用相同的方法进行测试。
何时使用静态方法而不是实例方法?
嗯,在这里已经很好地回答了:Java: when to use static methods,我看没有重复的意义 :)