GitOPEN's Home.

《Monkey Java》课程5.1之static关键字的作用

Word count: 680 / Reading time: 3 min
2015/07/13 Share

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


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

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

静态成员变量的语法特点

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

  • 格式:static int i;

特点:

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

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

看图:(理解)
图5-1-01。静态、普通成员变量

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

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

1
2
3
class Person{
static int i;
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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源文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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源文件:

1
2
3
4
5
6
7
8
9
10
11
class Demo02{
public static void main(String[] args) {
Person.name = "小黄";
Person.color = "黄色";
Dog.shout01();
// 用类名直接调用静态函数
Dog.shout02();
}
}

静态代码块的语法特点

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

格式:

1
2
3
static{
语句;
}

特点:

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

关于我

  • 微信公众号:Android奇想录(android_amazing)

扫描二维码关注公众号


欣慰帮到你 一杯热咖啡
【奋斗的Coder!】企鹅群
【奋斗的Coder】公众号
CATALOG
  1. 1. 静态成员变量的语法特点
  2. 2. 静态函数的语法特点
  3. 3. 静态代码块的语法特点
    1. 3.1. 关于我