概述
本文将讨论Java static关键字的使用。它可以被用于类名、变量、方法和块。
静态类
只有当一个类为嵌套类时才能使用static,这个嵌套类可以不使用外部类的对象就可以访问。例子:
public class TestMain
{
static class X
{
static String str="Inside Class X";
}
public static void main(String args[])
{
X.str="Inside Class TestMain";
System.out.println("String stored in str is- "+ X.str);
}
}
注意:静态的内部类不能访问外部类的实例数据。例子:
静态代码块
静态块通常被用来改变静态变量的默认值。静态块在类被加载到内存的时候执行,一个类可以有多个静态块,它们的执行顺序与定义顺序相同。例子:
public class TestMain
{
static
{
i=20;
}
static int i = 10;
public static void main(String[] args)
{
System.out.println(i);
}
static
{
i = 30;
}
}
执行的结果是:30
上面的代码等价于:
public class TestMain
{
static int i;
static
{
i=10;
i=20;
i=30;
}
public static void main(String[] args)
{
System.out.println(i);
}
}
静态方法
静态方法能够不使用类对象来访问类的成员变量。它可以通过使用对象来访问非静态方法和非静态变量。静态方法可以被静态的或者非静态方法直接访问。例子:
public class TestMain
{
static int i;
static String s;
public static void main(String args[]) //Its a Static Method
{
//TestMain obj=new TestMain();
System.out.println(i);
System.out.println(s);
}
}
静态变量
- 静态变量也是类的变量
- 这种变量根据数据类型获取默认值
- 存储在静态变量中的数据被所有的类对象共用
- 静态变量的内存分配仅仅发生在类被加载到内存中
- 静态变量可以被其他类使用类名来访问
- 与其他非静态变量相比,静态变量可以直接被静态或者非静态方法访问