- 由static修饰的变量、常量和方法被称做静态变量、常量和方法。
静态成员属于类所有,区别与个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。
语法
类名.静态类成员
public class StaticTest {
static double PI = 3.14; //在类中定义静态常量
static int id; //在类中定义静态变量
public static void method1() {
//dongSomething
}
public void method2() {
System.out.println(StaticTest.PI); //调用静态常量
System.out.println(StaticTest.id); //调用静态变量
StaticyTest.method1(); //调用静态方法
}
}
- 静态成员与静态方法的作用通常是为了提供共享数据或方法。
public class StaticTest {
static double PI = 3.1415;
static int id;
public static void method1() {
//doingSomethring
}
public void method2() {
System.out.println(StaticTest.PI);
System.out.println(StaticTest.id);
StaticTest.method1();
}
public static StaticTest method3() {
method2(); //错误,静态方法不能调用非静态方法或属性
return this; //错误,静态方法中不可以使用this关键字
}
}
- 静态方法中不可以使用this关键字
- 在静态方法中不可以直接调用非静态方法
- 在Java中不能讲方法体内的局部变量声明为static
- 静态代码块优先于主方法执行,而在类中定义的静态代码块会优先于构造块执行,而且不管有多少个对象产生,静态代码快直执行一次。
- 静态变量处于虚拟机内存的方法区中,只有一份。