JAVA_(StringBuilder、 StringBuffer、 String、常量池)

StringBuilder:可变字符串类型
注:字符串:底层是字符数组,及其对数组的操作。
特点:
(1)此类型是final修饰的
(2)没有重写equals方法
(3)此类型提供的大多数方法都带有返回值,即: return this 返回同一个地址。

构造器:
StringBuilder()
构造了一个空的StringBuilder对象,初始容量为16。
StringBuilder(String str)
创建一个指定字符串的StringBuilder对象。

常用方法:
int length():
返回有效字符的长度。

StringBuilder append(Type a):
将参数a追加到StringBuilder对象里,返回此对象。

StringBuilider insert(int index,Type a);
将参数a插入到对象的下标index处 。

StringBuilder delete(int start,int end);
删除此对象里的部分字符,从start开始,到end结束,注意:包前包后。

StringBuilder replace(int start,int end,String str);
使用str替换此对象从start开始到end结束的子串。

StringBuilder reverse():
将StringBuilder对象的内容进行翻转。

StringBuffer:此类与StringBuilder用法一模一样。
在线程安全上考虑:
StringBuffer线程安全
StringBuilder线程不安全
在执行效率上:
StringBuffer效率低
StringBuilder效率高

String类型:(底层是字符数组+对数组的操作)
特点:
(1)是不可变的字符串类型,(不可变:对象的内容不能更改)
(2)final修饰的类型
(3)字符下标(索引/index)从0开头
(4)重写了equals方法和toString方法
(5)默认使用的是unicode字符集,任意字符都占两个字节。

构造器: 想解码用构造器,编码用方法。
String():
创建一个空字符序列的字符串对象

String(byte[] bs)
创建一个字符串对象。使用默认字符集进行解码的字符串。

String(byte[] bs,String charset)
将字节数组使用指定字符集进行解码成相应的字符串对象

String(char[] ch)
将字符数组转换成字符串对象

String(String str)
指定一个字符串字面量创建一个字符串对象

常用方法:
int length():
返回字符串对象的字符个数

char charAt(int index):
返回此字符序列中指定索引处的字符

String concat(String another):
将指定字符串another拼接到此字符序列的末尾,返回新对象

boolean stratsWith(String prefix)/endsWith(String suffix)
查看此字符序列是否以prefix为前缀/以suffix为后缀

byte[] getBytes():
将此字符串按照默认字符集编码成字节序列,返回一个新的字节数组

byte[] getBytes(String charset)
将此字符串按照指定的字符集编码成字节序列,返回新的字节数组

查找字符串中的字符/子字符串的位置
int indexOf(int ch)
返回字符ch在此字符串中第一次出现的下标(索引/位置)

int intexOf(int ch,int fromIndex):
返回字符ch从此字符串fromIndex下标开始,往后第一次出现的位置

int indexOf(String str):
int indexOf(String str,int fromIndex):
注意:返回-1,说明要找字符/子字符串 不存在查找序列中

int lastIndexOf(int ch);
int lastIndexOf(String str)
int lastIndexOf(int ch,int endIndex)
int lastIndexOf(String str,int endIndex)
查找字符/子字符串截止到某一下标时,最后一次出现的位置。

注:上述四个方法:查找字符/子字符串在此字符序列中最后一次出现的位置,找不到返回-1。

截取子字符串的方法:
String substring(int beginIndex)
从此字符序列的beginIndex开始截取,截取到最后
String substring(int beginIndex,int endIndex)
从此字符序列的beginInde开始截取,截取到endIndex,包前不包后。

字符串转成字符数组的方法:
char[] toCharArray()
将此字符序列变成字符数组

字符串中的字母转成大写/小写
String toUpperCase()
将字符串中的字母都变成大写,返回新字符串
String toLowerCase()
将字符串中的字母都变成小写,返回新字符串

前后去空格的方法:
String trim()
去掉此字符序列的前与后的空格

将任意参数变成字符串对象
static String valueOf(Type v);
将参数v变成字符串对象

equals方法与==的区别
==:用来比较是不是同一个对象
equals:用来比较两个对象的内容是否相同
String类型中重写了equals方法

常量池:
1、概念:
jvm在使用字符串类型时,为了提高内存的使用率,当使用字面量(常量)进行给变量赋值时,在方法区内提供了用于存储字面量对象的一个常量池。jdk1.7以后,由于方法区内存相对较小,将常量池移至堆中。

2、原理:
当使用字面量赋值时,先去方法区内的常量池中查询是否有相同字面量的对象,如果有,就返回常量池中对象的地址,没有的话,在常量池中创建此字面量的对象再返回。

总结:
String,StringBuilder,StringBuffer
(1)都是final修饰的。
(2)String是不可变字符串类型,其他两个是可变字符串类型。
(3)String重写了equlas方法,其他两个没有重写equlas方法。
(4)StringBuilder线程不安全,效率高。
(5)StringBuffer线程安全,效率低。
(6)如果涉及大量的字符串拼接操作,尽可能使用前两个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值