由 static 修饰的变量、常量和方法称为静态变量、常量和方法。
有时候,在处理问题的时候会需要两个类在同一个内存区域中共享一个数据。例如,在球类中使用 PI 这个常量,可能除了本类需要这个常量之外,在另外一个圆类中也需要使用这个常量。这时我们其实没有必要再两个类中同时创建 PI 常量,因为这样系统会将这两个不在同一个类中定义的常量分配到不同的内存空间中,为了解决这个问题,可以将这个常量设置为静态的。PI 常量在内存中被共享的布局如下所示:
被声明为 static 的常量、变量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。语法为:
类名.静态类成员
public class StaticTest {
final static double PI = 3.1415926;
static int id;
public static void method1() {
System.out.println("Hello World !");
}
public void method2() {
System.out.println(StaticTest.PI);
System.out.println(StaticTest.id);
StaticTest.method1();
}
public static void main(String[] args) {
StaticTest test = new StaticTest();
test.method2();
}
}

我们在 StaticTest 类中设置了3个静态成员变量,分别为常量、变量和方法,然后在 method2() 方法中分别调用这3个静态成员,直接使用“类名.静态成员”形式进行调用即可。虽然静态成员也可以使用“对象.静态成员”的形式进行调用,但通常不建议用这样的形式,因为这样容易混淆静态成员和非静态成员。
静态数据与静态方法的作用通常是为了提供共享数据或方法,如数学计算公式等,以 static 声明并实现,这样当需要使用时,直接使用类名调用这些静态成员即可。尽管使用这种方式调用静态成员比较方便,但静态成员同样遵循着 public、private 和 protected 修饰符的约束。
需要注意的是,Java 中对静态方法有以下规定:
-
在静态方法中不可以使用 this 关键字;
-
在静态方法中不可以直接调用非静态方法。
除此之外,在 Java 中规定不能将方法体内的局部变量声明为 static 的。
主方法
主方法是类的入口点,它定义了程序从何处开始;主方法提供对程序流向的控制,Java 编译器通过主方法来执行程序。主方法的定义语法如下:
public static void main(String[] args) {
}
主方法的定义具有以下特性:
-
主方法是静态的,所以如果要直接在主方法中调用其他方法,则该方法也必须是静态的;
-
主方法没有返回值;
-
主方法的形参为数组。其中 args[0] ~ args[n] 分别代表程序的第一个参数到第 n 个参数,可以使用 args.length 来获取参数的个数。
:静态变量、静态常量、静态方法和类的主方法&spm=1001.2101.3001.5002&articleId=110308384&d=1&t=3&u=7a7fcb85ee61431b9252833deb897c0f)
3008

被折叠的 条评论
为什么被折叠?



