代码块&设计模式

代码块

1.1介绍与格式:
基本介绍:

代码块又叫初始化块,属于类中的成员,即 使类的一部分 类似于方法,将逻辑语句封装在方法体中,通过{ }包围起来。

但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不用通过对象或类显示调用,而是在加载类的时候或者创建对象的时候隐式调用。

基本格式
[修饰符]{
代码
};

1.2.代码块的好处:
1、相当于另一种形式的构造器,是对构造器功能的一种补充

2、如果多个构造器中都有重复的语句,可以放到代码块中,提高代码的复用性

3.不管我们调用哪个构造器,创建对象,都会优先调用代码块的内容。

2.1代码块的使用注意事项

1.静态代码块:
static代码块叫静态代码块,作用是对类进行初始化它随着类的加载进行初始化,而且随着类的加载而被执行并且只会执行一次,如果是普通代码块,每次创建一个对象就执行一次。

2.使用事项:

1.创建对象实例的时候也就是new的时候。
2.创建子类对象实例,父类也会被加载,父类先被加载,子类后被加载
3.使用类的静态成员时,例如:静态成员,静态方法。
4.普通与静态分别调用:
静态代码块作用是对类进行初始化。它随着类的加载进行初始化,而且随着累的加载而被执行并且只会执行一次,如果是普通代码块,每次创建一个对象就执行一次。如果使用类的静态成员时,只执行静态代码块,普通代码块并不会执行。
5.调用静态方法时:
普通代码块需要在new对象的时候才会被调用,而且是每次创建新对象就会被调用。而静态代码块,只要类加载了就会被调用。

3.类什么时候被加载?

1、创建对象实例的时候也就是new的时候

2、创建子类对象实例,父类也会被加载,父类先被加载,子类后被加载

3、使用类的静态成员时,例如:静态成员,静态方法

4.创建一个对象时,在一个类中,调用顺序是怎么样的

1.先调用静态代码块和静态属性初始化。静态代码块和静态属性初始化调用的优先级一样,如果有多个静态代码和多个静态变量初始化,就按照定义的顺序执行

2.调用普通代码块和普通属性的初始化。普通代码块和普通属性的优先级一样,这个和上面的一样

3.最后在调用构造方法

5.有继承关系时,调用顺序

1.父类的静态代码块和静态属性(优先级一样)

2.子类的静态代码块和静态属性(优先级一样)

3.父类的普通代码块和普通属性初始化

4.父类的构造方法

5.子类的普通代码块和子类的普通属性初始化

6.子类的构造方法

7.注意: 静态代码块只能直接调用静态成员,普通代码块可以调用任意成员
(在本类中)

每个无参构造器都有共同内容:

{
      1.super()
      2.普通代码块和普通属性初始化
      3.。。。。。。
}

父类和子类走完静态相关之后,会首先来访问子类的构造器;
而子类的构造器里面包含了:

{
      1.super()
      2.普通代码块和普通属性初始化
      3.。。。。。。
}

所以,首先会访问父类的构造器,父类的默认继承object,没有输出语句,所以先执行
1.普通代码块和普通属性初始化
2.在执行父类构造方法中的内容。

最后返回子类的构造方法中,也先执行子类的:
1.普通代码块和普通属性初始化
2.在执行构造器中的内容

单例模式

1.单例模式概念:
所谓单例模式,就是保证类在内存中只有一个对象

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

注意:

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

2.饿汉式:

1.步骤:
1.构造器私有化(将类私有化)使,外界不能通过创建对象访问。

2.类的内部创建对象(该对象是static)

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

3.懒汉式:

步骤:
1.构造器私有化(将类私有化)使,外界不能通过创建对象访问。

2.类的内部创建对象(该对象是static)

3.提供一个public的static的方法,可以返回一个对象。

4.只有用户使用方法时,才返回对象,后面再次调用时,返回的是上次创建的对象 ,从而保证了单例。

4.区别:

单例设计模式中,懒汉式与饿汉式区别在于:

1.创建的时机不同,饿汉式是在类加载就创建了对象实例,

2.饿汉式不存在线程安全问题,懒汉式存在线程安全问题

3.饿汉式存在资源浪费的可能,如果程序员不使用对象实例,那么饿汉式创建的对象,就是浪费了。懒汉式是使用才创建,不存在这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值