static关键字

final的特点:

可以有一次赋值的机会,赋值之后就不允许变化了

final可以修饰常量,也可以修饰变量

场景举例:数据库连接的信息放在配置文件中,在构造函数中读取,然后存储的final变量中。程序运行期间,数据库连接信息不允许发送变动。

public Dog{
  public final int aa;
}
//成员变量是final,则必须要在构造函数中初始化

public Dog{
   public static final int aa;
}
//增加了static修饰符之后,static和对象无关,则aa调用模式为dog.aa。这样就绕过了构造函数,则必需要初始化,而不能在构造函数中初始化

final修饰一个引用类型,它锁定的是引用地址,而不是应用对象中的内容

final Dog d2 = new Dog();
d2.name = "欢欢";
d2.playDisc();
d2 = d1;       //此处报错

 

static关键字总结:

static变量的特点,生命期,作用域?

特点:和对象无关,允许通过类名直接调用

生命期与作用域(局部变量):

定义在函数体内的变量(基本类型、引用类型)

作用域:定义局部变量的{}范围内

生命期:基本类型当超过}范围时,会被GC垃圾回收机制回收

                引用型变量查看引用计数

局部变量是线程独享的模式,内个线程都有自己的内存空间

生命期与作用域(成员变量):

作用域:类中的所有方法

生命期:基本类型属性和所在对象的生命期一直

                引用类型组合对象的生命期,可能是在对象外面传创建的,和当前对象无关

               很多对象的生命期是有容器管理的@Bean Spring容器,JavaEE容器(Tomcat,Weblogic)

Dog d2 = null;    //在stack中分配了一个4字节的空间,用于存放地址
d2 = new Dog();   //new Dog()在heap中分配了一块内存,并返回这块内存的首地址

例:static变量:

public static int bb = 100;      //不能定义在方法内,智能作为成员变量存在

作用域:Dog.bb相当于一个全局变量,可以在类的外部被大量调用

生命期:static变量,可以被修改,从第一次调用的时候,就开始分配内存。直到运行结束,这块内存才被释放。

public Class Dog{
   public static int aa = 10;

    static{
        aa = 100; 
   }


  public static void main(String[] args){
        System.out.println(Dog.aa);
  }
}

     不管如何调用Dog中的信息,都会首先执行public static int aa = 10;然后是静态代码块赋值,静态变量赋值和静态代码块赋值,智能被调用一次,静态代码块的存在,就是为了给静态变量初始化

    静态方法不能调用所在Class的属性,因为属性是属于对象的,而静态方法是属于Class

static方法的特点?

static变量的序列化

static内部类的特点?

static在集群中的特点?

static变量与c的全局变量的对比

static变量与ServletContext变量、application对象对比?

public static final double PAI = 3.1415926;

 

继承关系(is-a)、组合关系(has-a)

设计模式:优先使用组合,然后才是继承

举例:

TClass{
   List<Student> stus;
}

Student{
   TClass tclass
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值