1. 包装类:
(1) 在JAVA当中,JDK为基本数据类型设计了相应的包装类,把基本数据类型变为了一个引用数据类型,那么他就是包装类型
(2) 学习包装类型的过程当中,要观察其规律
① 命名规律:首字母由基本数据类型的小写变为大写,除了Integer和Character之外
② 对于数值,包装类型的构造和方法当中,如果用了不属于数值的书写方式,会报NumberFormatException异常
③ 包装类型的字符串参数构造,不可以把数值类型,例如L,D,F加入字符串
④ 字符的包装类型,只有其本身类型参数的构造,没有字符串类型参数的构造
⑤ 布尔类型的包装类,只有一种情况下才会返回true,就是不区分大小写的true字符串;否则,输入任意其他类型,或null类型,那么结果都为false;
⑥ 包装类型的方法:
1) XxxValue:包装类变为基本数据类型,这是一个普通的方法,即该方法必须通过包装类型的对象来进行调用,每一种包装类型,都有自己各自对应的方法
2) 转字符串的三种方式
3) 字符串变为基本数据类型,调用包装类的静态方法:例如parseInt(Str)、parseLong(Str)……
4) Xxx.valueOf(xxx):把基本数据类型或者字符串变为包装类型
5) 自动装箱和自动拆箱
6) 在某些框架中,会去针对自己的框架设计相应的包装类型,比如hadoop当中TextIntWriteable……
7) 在web工程当中的实体类,其中作为参数的数值类型,通常都是定义为包装类,因为包装类型,有null值
2. 字符串:对该源码感兴趣的同学可以参考openJDK
(1) 字符串直接已双引号赋值,那么该字符串即相当于一个static常量(内存唯一),常量之间是相等的;那么new出来的String对象是存在于堆内存当中的,所以他不可以直接和常量比较
(2) intern():是将当前字符串对象,到常量池当中寻找是否有相同的常量,如果有,则返回该常量,如果没有,则新建一个常量
(3) string的方法:
① 获取字符串长度
② 必须使用equals判断字符串是否相等:
1) 长度相等
2) 字符串的本质其实是一个char类型的数组
3) 依次比较两个字符串的char元素是否相等,只要有一个不等,则返回false
4) 如果存在字符串常量,建议把常量作为方法调用者
③ 操作字符串元素
1) 判断元素位置
2) 截取字符串
3) 清除两端空格
4) 替换元素:replaceAll的匹配规则,可以是正则表达式
5) 切割字符串:“点”“”需要转义
6) 字符串的编码集转换
7) 字符串的本质是数组,那么字符串的拼接效率,请参考ArrayList
8) StringBuffer/StringBuilder:是一种高效扩展string的对象
a. StringBuffer的append是有同步锁的synchronized,在多线程使用的情况下,他是安全的,但是效率相对低
b. StringBuilder是没有同步锁的,所以在多线程使用的情况下,StringBuilder是不安全的
c. 在单线程的情况下,用哪个都一样,在实际的WEB开发当中,我们的应用,通常是被分配到某一个单独的线程里;除非他们处于常量状态,或者单例当中,必须要使用stringBuffer。
3. 时间
(1) 使用java.util.Date对象获取当前系统时间
(2) 定义时间格式
(3) 字符串和时间的转换
(4) GetTime():1970-01-01 00:00:00:000到当前系统时间的毫秒数
(5) 获取年月日
(6) 使用Calendar的原因:
① 因为程序当中,程序的执行,是存在时间消耗的
② 如果用Date,那么在不断new的过程或在对象的传递当中,是会造成同一个对象的时间误差的