Java学习笔记 day11

1 代码块

修饰符可选 只能写static

分为静态代码块和普通代码块

分号号可以省略

相当于另一种形式的构造器 可以做初始化操作

如果多个构造器中有重复的语句,可以抽取到初始化块中,提高代码的重用性

代码块的调用优先于构造器 是对构造器的一种补充机制

静态代码块随着类的加载而执行,只执行一次,而普通的代码块每创建一个对象就执行一次

如果使用的是类的静态成员,普通代码块不会被执行

类加载的时机

创建实例对象时

创建子类对象实例 父类会被加载

使用类的静态成员时候(静态属性 静态方法)

创建一个类时 在一个类调用顺序是

①调用静态代码块和静态属性初始化 (静态代码块和静态属性初始化调用的优先级一样,如果有多个静态代码块和多个静态变量初始化,则按他们定义的顺序调用)

②调用普通代码块和普通属性初始化优先级一样,也是按定义顺序调用

 

构造器最前面隐含了super()和调用普通代码块

静态相关的代码块,类加载时就执行完毕,因此优先于构造器和普通代码块

创建一个子类对象时 调用顺序

父类的静态代码块和静态属性

子类的静态代码块和静态属性

父类的普通代码块和普通属性

父类的构造方法

子类的普通代码块和普通属性

子类的构造方法

静态只和静态玩

2 单例设计模式

设计模式是静态方法和静态属性的经典使用

设计模式是在大量实验找那个总结和理论化后优选的代码结构,编程风格,以及解决问题的思考方式

设计模式就像经典的棋谱,不同的棋局,我们用不同的棋谱,免得自己再去思考和摸索

单例

采取一定方法保证在整个软件系统中,对某一个类只能存在一个对象实例,且该类只提供一个取得其对象实例的方法

①饿汉式

构造器私有化

类的内部创建对象

向外暴露一个静态的公共方法

②懒汉式

创建对象时先声明

后在方法内创立

只有当用户使用getxx方法时,才返回对象,后面再次调用时,会返回上次创建的对象

根本区别就是 两者创建对象的时机不同

因此饿汉式不存在线程安全问题,懒汉式则有线程安全问题

3 final关键字

可以修饰类 属性 方法 局部变量

不希望类被继承时

不希望类被继承时,不希望父类某个方法被子类覆盖/重写

不希望类的某个属性被修改

不希望某个局部变量被修改

final修饰的属性又叫常量

final修饰的属性在定义时就必须赋初始值,并且不能再修改,赋值的位置必须是如下之一

①定义时

②构造器中

③代码块中

如果final修饰的属性是静态的

①定义时

②静态代码块中 不能在构造器中赋值(静态的优先级高于构造器)

final类虽然不能被继承,但可以实例化对象

如果类不是final类,但是有final方法,该方法虽然不能被重写,但是可以被继承

final不能修饰构造器

如果一个类已经是final类,方法就没必要final了

final和static往往搭配使用 效率更高 底层编译器做了优化处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值