目录
1.原理——内存机制
1.1 修饰对象
1.2 lifecycle生命周期
2. 静态属性(类属性)和实例属性(对象属性)
2.1 定义方式
2.2 调用方法
3. 静态方法和属性
3.1 在同一个类中
3.2 在不同类中
4.总结(关键)
1.原理——内存机制
static修饰符
1.1 修饰对象
修饰属性,方法,代码块,内部类
1.2 lifecycle生命周期
修饰后,随着类的加载而加载,项目中只加载一次
静态属性,静态方法生成在方法区的静态区,属于类共享
【注意区分:非静态必须在heap中创建实例对象,且每个对象占不同空间,属性方法互不影响】
2. 静态属性(类属性)和实例属性(对象属性)
2.1 定义方式
name,age未用static修饰 属于对象属性,在堆空间分别占不同空间 ,堆空间有对象即存在
nation 属于类属性 ,直接存放在静态区,单例,类加载时即存在
2.2 调用方法
静态属性 ——类加载即存在
类,实例对象 皆可直接找到
属于共享数据,大家都是调用的那个空间的数据
实例属性——对象加载即存在(比静态属性加载更晚)
指定某对象找它自己的对应属性
3. 静态方法和属性
3.1 在同一个类中
如下图,在本类定义的对象方法my_show, 其中可调用自己类中 和 其他实例对象的全部属性(包括静态)
而静态方法中只能调用静态属性
3.2 在不同类中
两种属性和方法 皆可随时调用
实例属性和方法——》先实例化对象(堆中生成空间),再直接调用
静态属性和方法——》无论是否实例化对象,即可调用
4.总结(关键)
静态属性或方法,只加载一次,且在类加载 ,保存单例到方法区的静态域,类和对象在其他类都可通过不同方式调用,且数据和操作全部共享。