今天学习的内容是:
java.lang.String 是字符串类
它的底层就是一个字符数组,所以它的很多特性就是数组的特性
1 字符串一旦创建,这个字符串对象不能更改
2 字符串需要使用 "" 双引号表示
3 为了提高字符串访问效率,提出了一个缓存机制,字符串常量池
因为String一旦创建,字符串对象不可更改,
所以尽量不要使用String进行大量的字符串拼接操作
1 StringBuffer 和 StringBuilder是什么?
是一个可变的字符串缓冲区,适合做拼接操作
底层也是char数组,只不过默认长度是16,而字符串内容多少长度就是多少
2 原理
先定义好长度,以容纳更多字符
如果预留的空间长度不够,会进行自动扩容
默认长度为16,扩大容量为 (当前容量+1) * 2 , 16 -> 34 -> 70
3 StringBuffer 和 StringBuilder 区别
StringBuilder : 非线程安全,在多线程环境下使用,可能出现问题,所以常用于方法中
StringBuffer : 线程安全,在多线程环境下使用,不会出现问题,所以常用于类中
包装类 : 封装了基本数据类型的一些操作,更加方便使用
java中有8中基本数据类型
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
boolean java.lang.Boolean
char java.lang.Character
java1.5开始,引入了自动装箱和自动拆箱
自动装箱 : 把 基本类型 自动转换为对应的封装类类型 就是自动装箱
自动拆箱 : 把 包装类类型 自动转换为对应的基本类型 就是自动拆箱
装箱和拆箱是在编译阶段完成的
深入理解自动装箱和自动拆卸
1 都是编译的操作,和运行无关
2 装箱的时候 在编译时 会把赋值操作转换为 Integer.valueOf(222);
String 还有八种封装类 都覆写了 equals,hashCode,toString方法
整型常量池 : 其实就是一个Integer数组 , 提前创建好256个Integer对象,放到数组中
范围是 -128~127
当我们在进行valueOf() 的时候,先判断这个值是否在 -128~127之间,如果在 直接返回数组对应的Integer对象,不需要再次创建
new SimpleDateFormat(时间格式) : 创建格式化对象并指定格式
public String format(Date date) : 把指定时间按照固定格式进行转换,并返回该时间格式的字符串
public Date parse(String strTime) : 把时间格式的字符串,按照对应的格式转换为 Date对象