Java中,类不实例化就能调用方法吗?

初学Java不久,刚才在读Thinking in java时,发现一段代码很奇怪,P类可以不用实例化就直接调用方法,我感觉是需要先用new实例化一个对象再调用方法才对啊,哪位高手能指点一下?
*下面是书中的代码

//: com:bruceeckel:tools:P.java
// The P.rint & P.rintln shorthand.
package com.bruceeckel.tools;

public class P {
public static void rint(String s) {
System.out.print(s);
}
public static void rintln(String s) {
System.out.println(s);
}
} ///:~
你可以使用这个便捷工具来打印String,无论它是否需要换行(P.rintln( ))。
你可以猜到,这个文件的位置一定是在某个以一个CLASSPATH位置开始,然后接着是
com/bruceeckel/tools的目录下。编译完之后,你就可以用import语句在你系统
上的任何地方使用P.class文件了。
//: c05:ToolTest.java
// Uses the tools library.
import com.bruceeckel.tools.*;
import com.bruceeckel.simpletest.*;

public class ToolTest {
static Test monitor = new Test();
public static void main(String[] args) {
P.rintln("Available from now on!");
P.rintln("" + 100); // Force it to be a String
P.rintln("" + 100L);
P.rintln("" + 3.14159);
monitor.expect(new String[] {
"Available from now on!",
"100",
"100",
"3.14159"
});
}
} ///:~

Java中,类不实例化是可以调用方法的,这种方法叫做静态方法,也叫做类方法。

类的静态方法不属于类的对象,而属于类本身,在该类首次使用的时候加载到系统的方法区中,一般可以使用类名直接调用类的静态方法,而不需要实例化对象。由于静态方法并不属于对象,因此在静态方法中无法操作类的普通成员变量,只能操作类的静态成员变量。(因为普通成员变量依附于类的对象存在,而类的静态方法并不属于类对象,在类对象被实例化之前静态方法就已经存在,故在静态方法中操作普通成员变量,相当于在无对象的情况下对其中的成员变量进行操作,这是无意义的,同时也不符合面向对象的思想。)

至于静态方法有什么用,上面已经提到在静态方法中可以操作类的静态属性,而静态属性是类的属性,可以作为一次程序运行期间的全局变量来使用,因此我认为静态方法的主要作用就是对类中静态属性的初始化或者根据静态属性实现一定的业务逻辑。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-10-02
注意static 关键字.静态方法不依赖实例的状态,无需实例化.
调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如你所示。一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。本回答被提问者采纳
相似回答