static与非static区别
static是被所有的类所共享的,在内存中只存在一个副本,当且仅当在类第一次加载的时候初始化。
非static是在创建对象时被加载,拥有多个副本,彼此之间互不干扰
static注意事项
1.static没有this来调用,因为static可以通过类名点的形式调用,不依赖任何对象。
2.static里面不能访问类的非静态属性和方法,因为static不依赖对象,同时static优先加载,类的非静态属性与方法还没有加载进入内存。
static修饰
1.static修饰初始化块称作静态块,一个类中可以创建多个在任何地方,在类加载的时候按照顺序依次加载。
2.static修饰类,普通的JAVA类不可以修饰,只能修饰内部类,称作静态内部类。
单列模式
作用是提供一个对象,这个对象只能有一个实列,切外部不能实例化。
饿汉模式
public class EHan {
private static EHan eHan = new EHan();
private EHan(){
}
public static EHan getEHan(){
return eHan;
}
}
懒汉模式
public class LanHan {
private static LanHan lanHan;
private LanHan(){
}
public static LanHan getLanHan(){
if(lanHan==null){
lanHan=new LanHan();
}
return lanHan;
}
}
Final
final有着不可改变的意思,他可以修饰非抽象类、非抽象类成员方法和变量。
final细节
1.final 修饰的静态变量必须在声明的时候赋予初始值
2.final 修饰的实例变量可以在构造函数中赋值,不同的对象同一个常量的值可以不同。
3.final修饰对象的时候该对象可以修改属性,但不能重新为对象赋值
4.当用final修饰一个类时,表明这个类不能被继承。inal类中的所有成员方法都会被隐式地指定为final方法。