课程5.1之static关键字的作用

转发请注明出处:
安卓猴的博客(http://sunjiajia.com)


本节课程将学习以下内容:

  • 静态成员变量的语法特点
  • 静态函数的语法特点
  • 静态代码块的语法特点

静态成员变量的语法特点

在定义成员变量的时候,在前面添加一个static关键字。

  • 格式:static int i;

特点:

  • 静态成员变量可以直接用类名来调用,格式为:类名.成员变量名;
  • 所有的对象使用的静态变量是同一份,任何一个对象的静态变量被修改,那么其他对象的静态变量也会被修改。

静态、普通成员变量的区别:

看图:(理解)


图5-1-01。静态、普通成员变量

例子:(请动手加深理解)

1.新建一个名为Person.java的Java源代码文件:

class Person{
  static int i;
}

2.新建一个名为Demo01.java的Java源代码文件:

class Demo01{
  public static void main(String[] args) {

    Person p1 = new Person();
    Person p2 = new Person();

    // 调用静态成员变量,
    // 由于所有对象使用的静态变量是同一份,所以,
    // p1.i 和 p2.i 的值都是10。
    Person.i = 10;
    System.out.println("p1的i的值为:" + p1.i);
    System.out.println("p2的i的值为:" + p2.i);

    System.out.println("=======分割线=======");

    Person.i = 20;
    System.out.println("p1的i的值为:" + p1.i);
    System.out.println("p2的i的值为:" + p2.i);

    System.out.println("=======分割线=======");

    // 由于所有对象使用的静态变量是同一份,所以,
    // 静态变量i的值先被p1.i = 30赋值为30,
    // 再被p2.i = 40赋值为40,
    // 最后,打印出来的p1.i和p2.i的值都为40。
    p1.i = 30;
    p2.i = 40;
    System.out.println("p1的i的值为:" + p1.i);
    System.out.println("p2的i的值为:" + p2.i);

  }
}

静态函数的语法特点

格式:static 返回值类型 函数名{}

特点:

  • 静态函数量可以直接用类名来调用,格式为:类名.函数名();
  • 静态函数中不能使用非静态成员变量;(注意)

例子:(请动手)

1.新建一个名为Dog.java的Java源文件:

class Dog{
  String name;
  static String color;

  void shout01(){
    System.out.println("Dog的名字是:" + this.name);
  }

  static void shout02(){
    // 静态函数只能使用静态成员变量color。
    System.out.println("静态函数shout02(),Dog的颜色是:" + color);
  }

}

2.新建一个名为Demo02.java的Java源文件:

class Demo02{
  public static void main(String[] args) {

    Person.name = "小黄";
    Person.color = "黄色";

    Dog.shout01();
    // 用类名直接调用静态函数
    Dog.shout02();
  }
}

静态代码块的语法特点

作用:主要作用是为静态变量赋值初始值。

格式:

static{
  语句;
}

特点:

  • 没有名字,只有一个static;
  • 静态代码块在装载当前所在类的时候执行。

你可能感兴趣的:(课程5.1之static关键字的作用)