Java学习之Static

Static(静态)是一种修饰符,用于修饰成员(成员变量、成员函数)

1.静态方法只能访问静态成员。

2.静态随着类的加载而加载

通过代码分析:

 1 class PersonDemo
 2 {
 3     public static void main(String[] args)
 4     {
 5         Person p=new Person("zhangsan",25);
 6         Person p1=new Person("lisi",22);
 7     }
 8 }
 9 
10 class Person
11 {
12     //成员变量的默认初始化
13     private String name;
14     //
15     private int age;
16     //静态成员
17     private static String country="cn";
18     
19     //构造函数
20     Person(String name , int age)
21     {
22         //this关键字:代表当前对象
23         this.name=name;
24         this.age=age;
25     }
26     //成员函数
27     public void setName(String name)
28     {
29         this.name=name;
30     }
31     public void speak()
32     {
33         System.out.println("Speak");
34     }
35     
36     //静态方法
37     public static void showCountry()
38     {
39         System.out.println("静态方法:"+country);
40     }
41     //静态代码块
42     static
43     {
44         showCountry();
45         System.out.println("静态代码块");
46     }
47     //构造代码块
48     {
49         //System.out.println("构造代码块");
50         System.out.println("构造代码块;;" + "name="+name+";age="+age);
51     }
52 }

运行结果:

 Person p=new Persong("XXX",XXX);

做了哪些事情

1.通过new从硬盘中找到的Person.class文件加载到内存中

2.Person类被加载到内存,静态成员就被加载到内存(方法区)中

3.执行该类的静态代码块

4.在堆内存中开辟空间,分配地址

5.在堆内存中建立对象的成员(成员变量,成员方法),并进行初始化

6.对对象构造代码块初始化

7.对对象构造函数初始化

8.将内存地址赋值个栈内存中的p变量

内存表现形式

 补充一点:

p.setName("wangwu");内存表现:

原文地址:https://www.cnblogs.com/WarBlog/p/12050472.html