如果我们创建 Thread 对象 - Thread t1=new Thread(); 这是否真的意味着我们已经创建了类 Thread 的实例,我们可以从中静态调用方法?(例如睡眠())。
当您调用静态方法时,您不会从对象中调用它。这就是为什么它是静态的。不需要实例来执行静态方法。
例子
Thread t1 = new Thread();
t1.checkAccess(); // <--- This is an instance method.
Thread.activeCount(); // <-- This is a static method.
当您看到new
关键字时,这意味着正在创建一个新对象。在这种情况下,它是 class 的一个实例Thread
,正如您所说的那样。
你怎么区分他们?
嗯,很简单。如果它是一个实例方法,它将从一个对象的上下文中调用。
String str = new String("hello");
str = str.replaceAll("o", "");
如您所见,您必须创建一个实例才能使用实例方法。
使用静态方法,它更容易。除了类的名称外,它们将被调用。
String.copyValueOf(new char[] {'a', 'b', 'c'});
无需创建新String
实例。只需使用类的名称。
注意:正如评论中所指出的,可以从实例对象调用静态方法,但这不是常见的做法。如果您不确定,文档是您最好的朋友。或者您可以通过尝试从静态上下文中调用相同的方法来简单地进行测试。
何时使用静态方法而不是实例方法?
好吧,这已经得到了很好的回答,在这里:Java:何时使用静态方法,我认为重复它没有任何意义:)