4.6 static修饰符

static是一个修饰符,用于修饰类的成员属性和成员方法,还可以编写static代码块来优化程序性能。

1. static修饰属性

在Java程序中使用static修饰属性,则该属性称为静态属性(也称全局属性),静态属性可以使用类名直接访问。

通常,static与final一起使用来定义类常量。

  • 常量类

public class Constants{
    public static String SEX_MALE = "1";               //男
    public static String SEX_FEMALE = "2";             //女
    //public static final String SEX_MALE = "1";       //男
    //public static final String SEX_FEMALE = "2";     //女
}
  • 测试类

public class TestStatic {
    @Test
    public void test(){
        System.out.println("男人的编码是:" + Constants.SEX_MALE);
        System.out.println("女人的编码是:" + Constants.SEX_FEMALE);
    }
}

2. static修饰方法

static修饰的方法是静态方法,类加载后可直接调用此方法,不需要一个此类的实例。

注意,静态方法只能访问静态成员(静态成员变量和静态成员方法),因为非静态成员需要先创建对象才能访问,即随着对象的创建,非静态成员才会分配内存。而静态方法在被调用时可以不创建任何对象。

  • Alarm类

public class Alarm{
    public static void ring(){
        System.out.println("闹钟响...");
    }
}
  • 测试类

public class TestAlarm {
    @Test
    public void test(){
        Alarm.ring();
    }
}

3. static修饰代码块

在Java类中,用static关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块就会执行,由于类只加载一次,所以静态代码块只执行一次。

  • Alarm类

public class Alarm{
    {
        System.out.println("普通代码块");
    }

    static {
        System.out.println("静态代码块");
    }
}
  • 测试类

public class TestAlarm {
    @Test
    public void test(){
        Alarm alarm1 = new Alarm();
        Alarm alarm2 = new Alarm();
    }
}
  • 结果

静态代码块
普通代码块
普通代码块

你可能感兴趣的:(Java程序设计,java,static)