String类、StringBuffer类和StringBuilder类

String类

创建String类的对象的两种方式

(1)""直接赋值法

(2)new关键字法

new String("abc")创建了几个对象?

答:两个对象,首先会先检查字符串常量池中存不存在abc这个字符串对象,如果不存在就会创建,如果存在就返回内存地址值。创建了出来之后,new String这个语句就会在堆内存中开辟一个字符串对象。总共两个对象。

常用方法

获取方法

int length()  获取字符串的长度

char charAt(int index) 获取特定位置的字符 (角标越界)

int indexOf(String str) 获取特定字符的位置(overload)

int lastIndexOf(int ch) 获取最后一个字符的位置

判断方法

boolean endsWith(String str) 是否以指定字符结束

boolean isEmpty()是否长度为0 如:“” null V1.6

boolean contains(CharSequences) 是否包含指定序列 应用:搜索

boolean equals(Object anObject) 是否相等

boolean equalsIgnoreCase(String anotherString) 忽略大小写是否相等

转换方法

String(char[] value) 将字符数组转换为字符串

String(char[] value, int offset, int count)

   offset: 指定从数组中那个索引值开始解码。

   length: 要解码多个元素。

Static String valueOf(char[] data)  返回 char 数组参数的字符串表示形式。

static String valueOf(char[] data, int offset, int count)  返回 char 数组参数的特定子数组的字符串表示形式。

char[] toCharArray()  将字符串转换为字符数组

byte[] getBytes();  将字符串转换为字节数组

其他方法

String replace(char oldChar, char newChar) 替换

String[] split(String regex) 切割

String substring(int beginIndex)

String substring(int beginIndex, int endIndex)截取字串

String toUpperCase() 转大写

String toLowerCase() 转小写

String trim() 去除空格

StringBuffer类

由于String是不可变的,所以导致String对象泛滥,在频繁改变字符串对象的应用中,需要使用可变的字符串缓冲区类。StringBuffer 其实就是一个存储字符的容器。

特点:

  1. 默认缓冲区的容量是16。
  2. StringBuffer  : 线程安全的所有的缓冲区操作方法都是同步的,效率很低。

使用Stringbuffer无参的构造函数创建一个对象时,默认的初始容量是多少?如果长度不够使用了,自动增长多少倍?

   答:StringBuffer 底层是依赖了一个字符数组才能存储字符数据的,该字符串数组默认 的初始容量是16, 如果字符数组的长度不够使用,自动增长1倍。

添加方法

StringBuffer("jack")     在创建对象的时候赋值

append()              在缓冲区的尾部添加新的文本对象

insert()                在指定的下标位置添加新的文本对象

查看方法

toString() 返回这个容器的字符串

indexOf(String str, int fromIndex) 查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。

lastIndexOf(String str)查找指定的字符串最后一次出现的索引值

substring(int start) 从开始的位置开始截取字符串

capacity() 查看当前字符数组的长度。

length()获取字符串的长度

charAt(int index) 获取特定位置的字符 (角标越界)

toString() 把字符串缓冲类的内容转成字符串返回。

修改方法

replace(int start int end String str)  使用给定 String 中的字符替换此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符

setCharAt(int index char ch)  指定索引位置替换一个字符

delete(int start, int end) 删除从start到end-1的字符

reverse() 把字符串反序输出

StringBuilder

StringBuilder 是JDK1.5之后提出的,线程不安全,但是效率要高。用法与StringBuffer类似。StringBuffer 与 StringBuilder的相同处与不同处:

相同点:

    1. 两个类都是字符串缓冲类。

    2. 两个类的方法都是一致的。

不同点:

    1. StringBuffer是线程安全的,操作效率低 ,StringBuilder是线程非安全的,操作效 率高。

    2. StringBuffer是jdk1.0出现 的,StringBuilder 是jdk1.5的时候出现的。  

推荐使用: StringBuilder,因为操作效率高。

猜你喜欢

转载自blog.csdn.net/qq_29807203/article/details/83059892
今日推荐