Java static关键字
一、概述
本文将讨论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; } }
上面的代码等价于:
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); } }
五、静态变量
- 静态变量也是类的变量
- 这种变量根据数据类型获取默认值
- 存储在静态变量中的数据被所有的类对象共用
- 静态变量的内存分配仅仅发生在类被加载到内存中
- 静态变量可以被其他类使用类名来访问
- 与其他非静态变量相比,静态变量可以直接被静态或者非静态方法访问