Java超详细透彻讲解static,
Java超详细透彻讲解static,
目录
- 1. 引入
- 2. 理解
- 3. 使用
- 3.1 使用范围
- 3.2 static修饰属性
- 3.2.1 设计思想
- 3.2.2 分类
- 3.2.3 注意
- 3.2.4 举例
- 3.2.5 类变量内存解析
- 3.3 static修饰方法
- 3.3.1 设计思想
- 3.3.2 理解
- 3.3.3 使用
- 3.3.4 注意
- 3.3.5 举例
- 4. 注意
- 5. 单例 (Singleton)设计模式
- 5.1 概述
- 5.2 优点
- 5.3 单例设计模式-饿汉式
- 5.4 单例设计模式-懒汉式
- 5.5 应用场景
1. 引入
当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象, 只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份。
例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。
2. 理解
static
:静态的
3. 使用
3.1 使用范围
在Java类中,可用static
修饰属性、方法、代码块、内部类
3.2 static修饰属性
3.2.1 设计思想
类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些属性不因对象的不同而改变,将这些属性设置为类属性。相应的方法设置为类方法。
3.2.2 分类
属性,按是否使用static
修饰,又分为:
静态属性(静态变量或类变量)vs 非静态属性(实例变量)
实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。
静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。
3.2.3 注意
静态变量随着类的加载而加载。可以通过"类.静态变量"的方式进行调用。
静态变量的加载要早于对象的创建。
修饰的成员,被所有对象所共享。
访问权限允许时,可不创建对象,直接被类调用。
由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中。
无论创建多少个对象,静态数据都只占用一份存储区域。
static
关键字不能应用于局部变量, 因此它只能作用于域。
① 如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初值。
② 如果它是一个对象引用,那么它的默认初始化值就是null
。
静态变量与实例变量可修饰的范围区别:
相关文章
- 暂无相关文章
用户点评