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;  
    }  
}  
  执行的结果是: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);  
    }  
}

五、静态变量

  • 静态变量也是类的变量
  • 这种变量根据数据类型获取默认值
  • 存储在静态变量中的数据被所有的类对象共用
  • 静态变量的内存分配仅仅发生在类被加载到内存中
  • 静态变量可以被其他类使用类名来访问
  • 与其他非静态变量相比,静态变量可以直接被静态或者非静态方法访问
posted @ 2015-11-26 15:32  温布利往事  阅读(384)  评论(0编辑  收藏  举报