黑马程序员——Java 基础:静态

来源:互联网 发布:编程怎么能学好 编辑:程序博客网 时间:2024/05/19 18:47

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

一、概述
  在 Java 中用 static 关键字修饰的变量、方法、代码块等称为静态变量、静态方法、静态代码块等,这些内容都有其特定的应用,以及不同于非静态的内存使用方式。

二、静态的应用
(1)静态变量
  在一个类中,如果将其成员变量定义为静态变量,意味着其他类中的方法中可以直接通过“类名.变量名”的格式访问该变量,而不必在创建类的对象后通过对象访问该变量。

// 在类中定义一个静态成员变量,并在其他类中直接通过类名访问该变量class StaticDemo1 {    static String name = "张三";    int age = 30;    void show () {        System.out.println(name);    }}class Demo {    public static void main (String[] args) {        String name = StaticDemo1.name;        System.out.println(name);        int age = new StaticDemo1().age;        System.out.println(age);    }}

  在上面的示例中,Demo 类中的主方法可以通过类名直接访问 StaticDemo1 类中的静态变量,而要访问非静态变量,而要创建对象,然后通过对象访问。这是因为用 static 关键字修饰的变量在创建类的实例化对象之前,就已经随着类一起进入到内存中,而非静态变量只有在创建了类的实例化对象之后才会在内存中。而且在内存中创建的对象中不包含静态变量,因此可以将类中不会改变的、所有对象之间相同的成员变量定义为静态变量。

(2)静态方法
  用 static 关键字修饰的方法是静态方法,静态方法的调用方式和内存使用方式与静态变量类似,也可以通过类名调用类中的静态方法。

// 在类中定义一个静态方法,并在其他类中直接通过类名调用该方法class StaticDemo2 {    static String name = "张三";    int age = 30;    static void show () {        System.out.println(name);    }}class Demo {    public static void main (String[] args) {        StaticDemo2.show();    }}

  需要注意的是,如果将一个方法定义为静态,那么它就只能访问静态的变量,而不能访问非静态的变量。

(3) 静态代码块

// 在类中包含一段静态代码块,并在其他类中直接通过类名调用类中的静态变量class StaticDemo3 {    static String name = "张三";    static {        System.out.println("静态代码块");    }}class Demo {    public static void main (String[] args) {        int name = StaticDemo3.name;    }}

  在上面的例子中,static {…} 的部分就是静态代码块,静态代码块会随着类进入内存而执行,因此在 Demo 类的主函数中,虽然没有建立 StaticDemo3 类的对象,而只是通过类名访问了静态变量,静态代码块的中的打印语句也会执行,因为静态代码块具有这一特性,因此其可以用于类的初始化。

0 0
原创粉丝点击