String类
字符串常量,创建之后不可改变
字符串字面值存储在字符串池中可以共享。
定义一个name把huaji赋值给他,栈里面的name的地址指向字符串池的huaji,然后再把zhangsan赋值给他,这时并不是把huaji改为了zhangsan,而是在字符串池内重新开辟了一个空间zhangsan,如果原来的huaji没用的话就成垃圾了
可以看出,给字符串赋值时并没有修改数据,而是重新开辟了一个空间(不可变性)
在给字符串赋值时,他会在字符串池里找有没有对应的字符串,如果有就用,如果没有就重新开辟一个空间
这是new的两个对象,他有两个地址。
常用方法
1.public int length():返回字符串长度
2.public char charAt(index) :根据下标获取字符
3.public boolean contains(String str):判断当前字符串是否包含str
4.public char[ ] toCharArray():将字符串转换成数组
5.public int indexOf(String str):查找str首次出现的下标,存在则返回改下标,不存在则返回 -1;
6.public int last IndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
使用:length
输出
使用charAt()
输出第0个字符
输出最后一个字符
如果长度超出了,会出现异常
使用contains,看是否包含某字符
输出
使用toCharArray()
使用indexOf()
使用lastIndexOf()
注:第三行两个参数的第一个表示要找的字符串,第二个参数表示从第几个字符开始查找
输出
7.public String trim():去掉字符串前后的空格
输出
可以看出,中间的空格不会被去掉,字符串前后的空格被去掉了
8.public String toUpperCase():将小写转换成大写
public String toLowerCase(): 将大写转化为小写
输出
9.endsWith(String str):判断是否以str结尾
startWith(str):是否以str开始
输出
10.replace(char oldChar,char newChar):将旧字符串替换成新字符串(可以替换字符也可以替换字符串)
输出
11.split(String str):根据str做拆分,分割字符串
说明:split方法的返回值是一个字符串数组
String [ ] arr = content.split ("(分割的方式)")
然后再做一个for循环遍历
String string:arr
输出string
输出
12. equals: 比较两个字符串是否相等,得到的结果是boolean类型
·compare:比较大小
输出:相等为true不等为false
注:还有一个忽略大小写比较的
则输出为
compare比较大小(97-120)比的第一个,a比x
如果第一个都是a,就比第二个
输出
一下这种情况就是比长度,一样的话就是0
输出3-5
一个String实例题
1.用split方法分割
输出
2.用replace取代
输出
3.在text前加一个easy
在字符串里面并没有insert这样的方法,我们可以用replace,把text用easy text替换
输出
4.每个单词首字母变成大写
将首字母截取,转化成大写然后再串上后面的
拿到每个单词的首字母,把它变成大写然后再合在一起
(说明:substring方法表示从第哪个开始截取,1 就是第二个字符开始截取。)
输出
可变字符串
两个功能是一样的,但效率比String高,比String节省内存
StringBuffer
可变长字符串,运行效率慢,线程安全
1.第一个方法append追加(增)
输出
2.第二个方法insert添加
它可以在某个位置进行添加(位置,添加的数据)
输出
3.replace方法(改)
和String的replace不一样,String只能替换旧的字符或字符串,而这个可以指定位置替换
从第0个到第3个字符,替换为你好,不包含第3个字符
结果
4.delete方法(删)
删除从第几个到第几个字符删除,(从第一个到第二个,不包括第二个)
结果
StringBuilder
可变长字符串,运行效率快,线程不安全,单线程操作
以上StringBuffer的方法在StringBuider依然能用
StringBuffer的功能和StringBuider是一样的。