尚硅谷面试题第一季笔记
作者:互联网
运算底层
Singleton单例设计模式
-
单例设计模式,即某个类在整个系统中只能由一个实例对象可被获取和使用的代码模式。
-
例如 JVM 运行环境的Runtime类,单例:唯一实例
-
要点:
-
- 某个类只能有一个实例
- 构造器私有化
- 某个类只能有一个实例
-
- 必须自行创建这个实例
- 含有一个该类的静态变量来保存这个唯一的实例
- 必须自行创建这个实例
-
- 必须自行向整个系统提供这个实例
- 对外提供获取该实例对象的方式:(1)直接暴露(2)用静态变量的get方法获取
- 必须自行向整个系统提供这个实例
-
-
常见形式:
-
饿汉式: 在类初始化时直接创建对象,不存在线程安全问题。不论使用与否都会创建实例对象INSTANCE
- 直接实例化
- 枚举式:
- 静态代码块式:
-
- 静态代码块和实例对象会合成一个clinit方法,避免线程安全问题
-
-
懒汉式: 延迟创建对象
-
(1)
-
(2)用静态内部类实现
-
-
如果是饿汉式,枚举形式最简单
-
如果是懒汉式,静态内部类形式最简单
类初始化和实例初始化等
类初始化(先)
-
- main方法所在的类需要先加载和初始化
-
- 一个子类要初始化需要先初始化父类
-
- 一个类初始化就是执行 client() :
- 该方法由静态类变量显示赋值代码和静态代码块组成,先后执行父类后,再执行子类
- 类变量显示赋值和静态代码块代码从上到下顺序执行
- 该方法只执行一次
- 一个类初始化就是执行 client() :
实例初始化
-
子类的构造器自动先调用父类的构造器。
-
非静态方法前面都有一个默认的对象this,this在构造器(或
)中表示正在创建的对象,如果是创建对象执行的是子类重写的代码,则先执行子类的重写方法。
-
例子:
方法的参数传递机制
- Java对于整型类 Integer 和 整型类数组 IntegerCache 在程序启动时已经缓存了分别为[-128,127]的整数和数组,并且保存在栈中,超出这个范围则放在堆中
- String、Integer在栈中存放的是地址,分别指向常量池、堆中的地址
- 形参是基本数据类型:传递数据值
- 实参是引用数据类型:传递地址值,String、包装类等对象不可变性
循环迭代
局部变量和成员变量
- 局部变量在方法体{},形参,代码块{}中
- 成员变量在类中方法外,分为 类变量(有static修饰),实例变量(无static修饰)
- 修饰符:
- 成员变量:public, protected, private, final, static, volatile, transient
- 局部变量:final
- 局部变量在栈,实例变量在堆, 类变量在方法区
-
一个类实例对象在创建时会执行
() 这个隐藏方法,自动执行类中的非静态代码块 -
栈的生命周期最短,在一个线程执行完就会弹出栈
标签:初始化,面试题,变量,静态,子类,代码,第一季,实例,硅谷 来源: https://www.cnblogs.com/JayV/p/13113589.html