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
时间: 2024-11-15 12:41:30