写在前面
不知道为什么,最近感觉自己越来越懒了,每天早上八九点才起床,晚上熬到凌晨。自己明明没有任何理由去熬夜,有的时候不知道在期待着什么,很多时候明明知道自己应该干什么,不应该干什么,刷抖音,打游戏,浪费了大把时光,可当时我明知道是错误的,可还是不愿意立马去做该做的事情,一拖再拖,知道必须去干为止。是累了?是睡眠不足?是吃不饱?不是吧。现在,我到底想要什么呢,自己的心思好像不太集中了,我最后要干什么?我...最后能去哪,我能干什么,我会和谁一起?我...我到底该怎么办?
今日所学
不变性
字符串中的值,一旦确定,则不可修改。
内存中的值不可修改。
常量池
String常量:使用双引号直接创建的字符串,称为String常量,即字符常量。
字符常量被存在内存的常量池中。
常量池中不会被gc回收,即gc不会清理。
多次出现相同的字符常量值,只会在常量池中创建一个String对象。
四、StringBuffer和StringBuilder
1.简介
String是不可变字符串,不可修改。
频繁对String进行修改时会在内存中产生出许多对象,垃圾数据。
String类中提供许多“增删改”等操作方法。
如果需要频繁对字符串进行修改操作,建议使用StringBuffer和StringBuilder,它们是可变字符串。
这两个类的API基本一致。
2.用法
append() | 向末尾添加 a.append("aaa") |
insert() | 增加 a.insert(1,"ddd") |
delete() | 删除 a.delete(3,5)[3,5) |
deleteCharAt() | 删除单个字符 a.deleteCharAt(2) |
setCharAt() | 改 a.setCharAt(1,'x') |
setLebgth() | 截取 a.setLebgth(5) |
reversed() | 反转 a.reversed() |
toString() | 将StringBuffer转换String |
3.区别
StringBufer
线程安全(多个人同时访问一个字符串,不会出现问题)
效率低
StringBuilder
线程不安全 (多个人同时访问一个字符串,可能会出现问题)
效率高
五、包装类
1.简介
基本数据类型功能比较简单,不具有面向对象的特性
Java中为每个数据类型都提供了一个对应的包装类,使其具有面向对象的特性。
基本数据类型 | 对立的包装类 |
byte | Byte |
int | Integer |
short | Short |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2.基本数据类型和包装类型的转换。
装箱和拆箱
将基本数据类型转换为包装类,称为装箱。
将包装类转换为基本数据类型,称为拆箱。
3.基本类型和String的转换
拼接字符串:a+""