计划硅谷 120 完成
还是微醺状态
单列设计:23种设计模式
单例模式的实现方式:饿汉式,懒汉式
饿汉式
1.类的构造器私有化;
private bank(){}
2.在类的内部创建当前的实例;
private static Bank instance = new Bank;
3.使用getXxx()方法获取当前类的实列,必须是static修饰
public static Bank getInstance(){
return insatance;
}
4.此属性也是static修饰的
懒汉式
1.类的构造器私有化
private GirlFriends(){
}
2.声明当前的实列为null
private static GirlFriends instance = null;
3.通过getXxx()获取当前类的实例,如果没有创建,则在方法内部创建;
public static getInstance(){
if(instance == null){
instance = new GirlFriends();
}
return instance;
}
4.都需要static修饰
对比饿汉式和懒汉式
>立即加载饿汉式
>延迟加载懒汉式
代码块(初始快化)
修饰:static 静态代码块,反之 非静态代码块
具体使用
静态代码块:随着类的加载而执行;声明变量,调用属性或方法,编写输出语句;只能调用静态的属性和方法;
非静态代码块:随着对象的创建而执行,可以用来初始化信息;它既可以调用静态也可以调用非静态
静态代码块优先于非静态代码块。且可以创建多个
Final关键词
可以声明类,方法,变量
1.表示 不能被继承
2.不能被重写
3.可以修饰成员变量,也可以修饰局部变量;变量就变成了常量
4.final修饰的默认值如果不声明,会报错,所以一定要初始化
{ 只有三种赋值方法1.显示赋值 2.方法快赋值 3.构造器赋值 都是在对象创建前赋值
//可以用代码块赋值
}
final和static搭配 修饰成员变量时,全局常量。列如:Math.PI 唯一且不能更改;
abstract抽象类与抽象方法
在父类抽象的情况下,使用abstract修饰
public abstract class Person(){}
public abstract void eat() 方法体要删除
如果类中存在抽象方法,那么类一定是抽象类
抽象类是包含构造器,子类对象会间接调用父类构造器
而且子类必须重写父类所有的抽象方法
template 模板(了解就行)
练习题
interface接口
has-a的关系 列如:你能不能用usb进行连接;一种功能的实现
JDBC(API 用于链接数据库)
可以声明:属性 (可以省略)public static final 方法也可以省略 public abstract
不可以声明:代码快,构造器(接口当中不存在)
可以多接口!
接口与接口之间也有继承关系,可以多层继承
类与类之间的关系
只能单继承,不能多继承,可以多层继承
类与接口的关系
可以单实现 也可以多实现;如果接口重名,只需要重写一次就行了
面试题 区分抽象和接口
内部类(如何使用)
把一个类b放到类a里面
成员内部类:直接声明在外部类
局部内部类:声明在方法内,构造器,代码块
匿名内部类
new 类名或者接口名(){
@override;
}
enum枚举类
底层就是多例模式 public static final Single chun = new Single();
public static final Single xia = new Single();
public enum Test(){
xxx,xxx,xxx,xxx;
}
注解Annotation
自定义注解
JUNIT
可以创建多个入口(main),
包装类:复习
基本数据类型包装起来就是引用数据类型
Integer.valueOf() 具有缓存池 -128 ~ 127 这一类都是创建好的 所以都是同一地址
new一个是新的地址值
拆箱和装箱(自动装箱和自动拆箱)
Interger 成员方法
键盘录入的进阶
nextLine : 遇到回车才停止
用integer.parseInt(Line);