Java学习之Static

Posted 一杯水M

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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");内存表现:

 

以上是关于Java学习之Static的主要内容,如果未能解决你的问题,请参考以下文章

Java学习之接口

Java学习之链表

Java学习之IO一

java学习之IO字符流

Java学习之多态

java学习之Runtime