一.自定义异常
前提:自定义异常都会直接或间接的继承Exception,运行时期异常必须直接或者间接的继承自RuntimeException
throw:制造异常
throws:抛出异常,处理异常的一种方式
二.String,StringBuilder,StringBuffer的区别
执行效益:stringbuilder>stringbuffer>string
stringbuilder:一个可变的字符列表,效率最快但线程不安全(单线程 )
stringbuffer:一个可变的字符列表,效率较慢但线程安全(多线程)
string:不可变长的字符序列(单线程)
推荐使用:
String: 单线程,对字符串没有大量改变内容,灵活操作字符串推荐使用
StringBuilder:单线程,对字符串进行大量的改动操作,推荐使用StringBuilder
StringBuffer: 多线程,对字符串进行大量的改动操作,推荐使用StringBuffer
三.包装类和基础类
基础类 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
boolean | Boolean |
char | Character |
float | Float |
double | Double |
转换问题:
自动拆装箱
自动装箱: 从基本类型--->包装类型
自动拆箱: 从包装类型--->基本类型
有了int为什么包装类型Integer?
1.Integer类,类中提供很多功能,可以灵活操作数据
2.容器等内部只能存储引用数据类型的数据,自动装箱使用可以的非常灵活
3.从数据库中拿到的数据...
有了Integer为什么还要int?
引用数据类型存储对象类型数据,new的数据在堆中,对象数据比较消耗资源,考虑效率问题使用基本数据类型更合适,并且两者之间转换自动拆装箱非常方便
四.枚举类
定义:一个事物的所有可能
java所有中的枚举类都隐式的继承自java.lang.Enum
定义枚举类,不适用class,使用enum关键字定义
枚举类中的字段,相当于当前枚举类型的一个实例
枚举类中的字段,相当于被 public static final修饰