目录
一、static:某些特定的数据在内存空间中只有一份
二、实例变量和静态变量
三、static修饰方法:静态方法
四、开发中的static
五、单例模式
一、static:某些特定的数据在内存空间中只有一份
- static可以用来修饰属性、方法、代码块、内部类
- 静态变量随着类的加载而加载,早于对象的创建,且在内存中只有一份。
- 可以用类名.静态方法来直接调用方法。
二、实例变量和静态变量
- 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中非静态属性。当修改其中一个对象的非静态属性时,不会导致其他对象中同样的属性值得修改。
- 静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量,当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过之后的。
三、static修饰方法:静态方法
- 随着类的加载而加载。用类.方法名调用,也可以用对象.方法调用
- 静态方法中只能调用静态的方法和属性,不能调用非静态的。非静态的方法中即可以调用静态的方法或属性,也可以调用非静态的属性与方法。
- 在static方法中,不能使用this关键字
- 关于静态属性和方法的使用可以从类的生命周期的角度去理解
四、开发中的static
- 属性为static:属性是可以被多个对象所共享的,不会随着对象的不同而不同。常量也常常声明为static。
操作静态属性的方法通常设置为static;
工具类中的方法,习惯上声明为static。如Math、Array、Collection
五、单例模式
- 设计模式是在大量的实践中总结和理论化之后优选的代码结构,编程风格以及解决问题的思考方法。设计模式免去我们自己再思考和摸索。类似于“套路”。
- 类的单例模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供了一个取得其对象实例的方法。
- 实现:构造方法权限为private,创建对象的方法为static,因为属性也要static
- 饿汉模式
class Bank{
//私有化构造方法
private Bank(){
}
//内部对象的创建
private static Bank instance = new Bank();
//提供公共的类方法,返回对象
public static Bank getInistance(){
return instance;
}
}
- 懒汉模式
class Order{
//私有化类的构造器
private Order(){
}
//声明当前类的对象,未初始化
private static Order instance = null;
//声明public、static返回当前类的方法
public static Order getInstance(){
if(instance == null){
instance = new Order();
}
}
}
- 两者得区别
懒汉模式:
好处:延迟对象的创建
坏处:目前写法,线程不安全
饿汉模式:
好处:对象加载时间长
坏处:线程安全
- 单例模式的优点
由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置。产生其他依赖的对象时,则可以通过在应用启动时直接产生一个单例对象,然后用永久驻留内存的方式来解决。
- 单例设计模式的应用场景
网站的计数器
应用程序的日志应用
数据库连接池
项目中读配置文件的类
Application也是单例模式的典型应用