抽象类
使用规则
abstract定义抽象类;
abstract定义抽象方法,只有声明,不需要实现;
包含抽象方法的类是抽象类;
抽象类中可以包含普通方法,也可以没有抽象方法;
抽象类不能直接创建,可以定义引用变量;
接口
定义:一种特殊的类,由全局常量和公共的抽象方法所组成;
类是一种具体实现体,而接口定义了某一批类所要遵守的规范,接口不关心这些类的内部数据,也不关心这些类中方法的实现细节,它只规定这些类中必须提供某些方法;
UML
定义:统一建模语言或标准建模语言,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持;
异常
处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理;
在多重catch块后面,可以加一个catch(Exception)来处理可能被遗漏的异常;
对于不确定的代码,也可以加上try-catc,处理潜在的异常;
尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出;
具体如何处理异常,要根据不用的业务需求和异常类型去决定;
尽量天剑finally语句块去释放占用的资源;
字符串
String对象创建后不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同;
每次new一个字符串就是产生了一个新对象,即便两个字符串的内容相同,使用"=="比较时也为false,若只需比较内容是否相同,应使用eauals()方法;
==和equals()的区别
==判断两个字符串在内存中首地址是否相同,即判断是否同一个字符串对象;
equals:比较存储在两个字符串对象中的内容是否一致;
StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能更高;
包装类
基本类型和包装类之间的对应关系:
包装类提供的两大类
将本类型和其他基本类型进行转换的方法;
将字符串和本类型及包装类互相装换的方法;
装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱;
拆箱:把包装类对象转换程基本类型的值,分为手动拆箱和自动拆箱;
基本类型转换为字符串的三种方法:
使用包装类的toString()方法;
使用String类的valueof()方法;
用一个空字符串加上基本类型,得到的就是基本数据类型对应的字符串;
将字符串转换为基本类型的两种方法:
调用包装类的parseXxx静态方法;
调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱;
时间
调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,即ParseException,因此需要进行异常处理;
使用Date类时需要导入java.util包,使用SimpleDateFormat时需要导入java.text包;
调用Calendar获取月份时,月份是从0开始的;
集合框架
定义:一种工具类,就像是容器,储存任意数量的具有共同属性的对象;
作用
在类的内部,对数据进行组织;
简单而快速的搜索大数量的条目;
有的集合接口,提供一系列排列有序的元素,且可以在序列中间快速插入或者删除有关元素;
有的集合接口,提供映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型;
数组与集合区别
数组长度固定,集合长度可变;
数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象;
Collection接口
是List、Set、Queue接口的父接口;
定义了可用于操作List、Set、Queue的方法–增删改查;
List接口及其实现类–ArrayList
List是元素有序且可重复的集合,被称为序列;
List可以精确控制每个元素的插入位置,或删除某个位置元素;
ArrayList–数组序列,是List的一个重要实现类;
ArrayList底层由数组实现;
Map接口
Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value;
Map中的键值对以Entry类型的对象实例形式存在;
键(key)不可以重复,value可以;
每个键最多只能映射到一个值;
Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法;
Map支持泛型,形如:Map<K,V>;
HashMap类
HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;
HashMap中的Entry对象时无序排列的;
Key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复);