0%

Static关键字

Static引入

在我们生活当中 , 有些事物不属于某一个对象,而是属于整个事物的类型
比如:全世界人口的总数
人的毁灭行为:毁灭的行为应该属于人类, 不应该属于某一个人
状态和行为应该 有 对象和类之分
有的状态和行为,应该属于某个对象
有的状态和行为,应该属于类型

Static作用

  • 通过 static 修饰符就能解决这个问题,它修饰的成员就不属于对象,它属于类本身
  • 它可以修饰字段,方法,内部类
  • 作用:确定修饰的内容是属于类还是属于对象

Static特点

1.static 修饰的内容,附着类的加载而加载
2.优先于对象的存在
3.static 修饰的成员被该类型的所有对象共享
4.可以直接使用当前类的类名访问 static 成员

总结





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
33
34
35
36
37
38
39
40
41
42
43
public class Person {
//人口
static int totalNums = 0;
//毁灭
static void destroy() { //静态方法 只能访问静态成员
System.out.println("人类毁灭啦");
//System.out.println(age);
}

//状态:名词
String name;
int age;
//行为:动词
void die(){
System.out.println(name+"死了");
Person.totalNums--;
}
//---------以上属于对象---------
//构造器的作用,创建对象,一创建对象时,就给内部 的字段做初始化
Person(String n,int a){
name = n;
age = a;
Person.totalNums++;
}

public static void main(String[] args) {
System.out.println(Person.totalNums);
Person per = new Person("zs",1);
System.out.println(per.name);
System.out.println(per.age);
per.die();
System.out.println(Person.totalNums);
Person per2 = new Person("ls",2);
System.out.println(per2.name);
System.out.println(per2.age);
Person.destroy();
//通过类名调用
System.out.println(Person.totalNums);
//可以通过 对象来去调用静态成员。
//本质还是通过类名来调用
System.out.println(per2.totalNums);
}
}

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class Person {
static int totalNums = 0;
String name;
int age;
void eat(String food){
System.out.println(name+"吃了"+food);
}
Person(String name,int age){
this.name = name;
this.age =age;
Person.totalNums++;
}
Person(int age){
this.age = age;
Person.totalNums++;
}
void die(){
System.out.println(name+"从地球上消失");
Person.totalNums--;
}
static void destroy(){
Person.totalNums = 0;
}
}

class test{
public static void main(String[] args) {
Person person = new Person("张三",1);
person.name = "张四";
person.eat("奶粉");
System.out.println(Person.totalNums);

Person person1 = new Person(1);
person1.name = "李四";
person1.eat("奶粉");

Person ww = new Person("王五", 1);
ww.eat("奶粉");

person.die();
Person.destroy();
System.out.println("总人口:"+Person.totalNums);

//当使用对象调用静态的内容(方法,还是字段 )在运行时, 都会去掉
//还是使用类名来调用
System.out.println(ww.totalNums);
}

}
↓赏一个鸡腿... 要不,半个也行↓