-
一、包装类
1.基本数据类型的包装类
- 整型(byte、short、int、long)、浮点型(float、double)、布尔型boolean、字符型char。对应包装类:Byte、Short、Integer、Long、Character、Float、Double、Boolean
- 把基本数据类型变量转换成包装类实例是通过对应包装类的valueOf(例如Integer.valueOf())实现的
- 8个包装类中除了Character之外,还可以通过传入一个字符串参数来构建包装类对象
- 获得包装类对象中包装的基本类型变量:xxxValue()实例方法
- 自动装箱:把一个基本类型的变量直接赋给对应的包装类变量
- 自动拆箱:将包装类自动转换成对应的基本数据类型
- 包装类还可以实现基本类型变量和字符串之间的转换,除了Character之外的所有包装类都提供了一个parseXxx(String s)静态方法
- 如果将基本类型转换为字符串,只需在后面加+ “ ”进行连接运算。
二、单例类
1.定义:如果一个类始终只能创建一个对象,称为单例类 2.条件:
- 我们把该类的构造器使用Private修饰,从而把该类的所有构造器隐藏起来。
- 需要提供一个public方法作为该类的访问点,用于创建该类的对象,且必须使用static修饰
- 该类还必须缓存已经创建的对象,必须用static修饰
三、final类
- final类不能被继承,即不能有子类
- Java提供的String类,它对于编译器和解释器的正常运行有很重要的作用,对它不能轻易改变,因此它被修饰为final类。
- 如果一个方法被修饰为final方法,则这个方法不能被重写。
- final 修饰的方法仅仅是不能重写,但它完全可以被重载
final变量
- final修饰变量时,表示该变量一旦获得初始值之后就不可被改变。
- final既可修饰成员变量,也可以修饰局部变量
final修饰成员变量
- 成员变量是随类的初始化或对象初始化而初始化的。final修饰的成员变量必须由程序员指定初始值。
- 对于类属性而言,要么在静态初始化中初始化,要么在声明该属性时初始化。
- 对于实例属性,要么在普通初始化块中指定初始值。要么在定义时、或构造器中指定初始值
final修饰局部变量
- 使用final修饰局部变量时既可以在定义时指定默认值,也可以不指定默认值
- 给局部变量赋初始值,只能一次,不能重复
四、抽象类
abstract类不能用new运算创建对象,必须产生其子类,由子类创建对象。对于abstract方法,只允许声明,而不允许实现 如果一个类是一个abstract类的子类 ,它必须具体实现父类的abstract方法 如果一个类中含有abstract方法,那么这个类必须用abstract来修饰(abstract类也可以没有abstract方法) 抽象方法和类都必须使用abstract来修饰,有抽象方法的类只能定义成抽象类,抽象里也可以没有抽象方法 抽象类不能被实例化,可以通过其子类给他赋值,普通类里有的抽象里也有,定义抽象方法只需在普通方法上增加abstract修饰符,并把普通方法的方法体(也就是方法后花括号括起来的部分)全部去掉,并在方法后增加分号即可 抽象类的特征:可以拥有抽象方法;失去了创建对象的能力
五、非访问控制符
六、接口
- 接口是抽象类的一种,只包含常量和方法的定义,而没有变量和具体方法的实现
- 一个类可以实现多个接口
- 关键字interface,分为接口的声明和接口体
- 子接口扩展某个父接口将会获得父接口的所有抽像方法,常量属性,内部类和枚举类定义
[修饰符] interface接口名 extends 父接口1,父接口2 ...{
零个到多个常量定义...
零个到多个抽象方法定义...
零个到多个内部类、接口、枚举定义...
零个到多个私有方法、默认方法或类方法定义...
}
- 接口可以用于声明引用类型的变量,但接口不能用于创建实例
- 当使用接口来声明引用类型的变量时,这个引用类型的变量必须引用到其实现类的对象
- 一个类可以实现一个或多个接口,继承使用extends关键字,实现接口则使用implements关键字
- 一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法(也就是重写这些抽象方法);否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义成抽象类
接口与抽象类的相同
- 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承
- 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法 接口与抽象类的不同
接口与抽象类的不同
- 接口里只能包含抽象方法、静态方法、默认方法和私有方法,不能为普通方法提供方法实现;抽象类则完全可以包含普通方法
- 接口里只能定义静态常量,不能定义普通成员变量;抽象类里则既可以定义普通成员变量,也可以定义静态常量
- 接口里不包含构造器;抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作
- 接口里不能包含初始化块;但抽象类则完全可以包含初始化块
七、集合类
- 为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组)
- 负责保存、盛装其他数据,也叫容器类。所有集合类都位于java.util包下。
- 集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类