String、StringBuffer、StringBuilder类的相关知识

String、StringBuffer、StringBuilder类的相关知识

一、String类

1.所属包:java.lang包;

2.继承和实现:直接继承Object类,实现Serializable, CharSequence, Comparable< String>接口;

3.创建对象

3.1直接字符串常量赋值创建对象,如:String s=“abc”,存储于方法区的字符串常量池中;

3.2构造方法创建对象—对象存于堆内存中

3.2.1 String():创建一个空字符序列;

3.2.2String(byte[] bytes):将一个byte数组构建成String对象;

3.2.3String(char[] value):将一个char数组构建成String对象;

3.2.4String(String str):将一个String字符串构建成String对象;

4.常用方法

4.1字符串某一位置

public char charAt(int index)返回字符串中索引对应的char元素

public char codePointAt(int index)返回字符串中索引对应的char元素的code码

4.2字符串长度

public int length()返回当前字符串的长度

4.3截取字符串

public String substring(int beginIndex)将字符串从索引beginIndex开始截取至末尾

public String substring(int beginIndex, int endIndex) 将字符串从索引beginIndex开始截取至endIndex(取不到endIndex对应的元素)

4.4比较字符串:

public int compareTo(String anotherString)当前字符串与另一个字符串比较,当前的字符串大,返回正数,相等则返回0,当前字符串小,返回负数

public int compareToIgnore(String anotherString)同上,只是忽略大小写

public boolean equals(Object anotherObject)判断两个字符串是否值相等,相等返回true,不想等返回false

public boolean equalsIgnoreCase(String anotherString)同上,只是忽略大小写

4.5字符串连接

public String concat(String str)将给定字符串拼接在当前字符串之后

4.6字符串单个字符查找 ch—对应code码

public int indexOf(int ch/String str)从前向后查找子串或字符第一次出现的位置

public int indexOf(int ch/String str, int fromIndex)同上,只是从formIndex开始查找

public int lastIndexOf(int ch/String str) 从后向前查找子串或字符第一次出现的位置

public int lastIndexOf(int ch/String str, int fromIndex) 同上,只是从formIndex开始查找

4.7字符串大小写转换

public String toLowerCase()将当前字符串转换成小写

public String toUpperCase()将当前字符串转换成大写

4.8字符串中字符替换

public String replace(char oldChar, char newChar)将当前字符串中oldChar替换成newChar

public String replaceFirst(String regex, String replacement)替换字符串中第一个符合正则表达式regex规则的子串

public String replaceAll(String regex, String replacement) 替换字符串中所有符合正则表达式regex规则的子串

4.9其他方法

String trim()去除当前字符串中的空格,只去前后,不去中间

boolean statWith(String prefix)比较当前字符串是否以prefix开头

boolean endWith(String suffix) 比较当前字符串是否以suffix结尾

contains(String str)判断当前字符串中是否含有str字符串

String[] split(String regex)按照regex规则分割字符串,返回给String数组

4.10基本类型转换成字符串

static String valueOf(char data[])

static String valueOf(char data[], int offset, int count)

static String valueOf(boolean b)

static String valueOf(char c)

static String valueOf(int i)

static String valueOf(long l)

static String valueOf(float f)

static String valueOf(double d)

二、StringBuilder和StringBuffer

简介:StringBuffer是JDK1.0版本就有,StringBuilder是JDK1.5版本后被推出,两个类内部方法一致,下面仅介绍StringBuilder。

1.所属包:java.lang包

2.继承和实现:直接继承Object类,实现Serializable, Appendable, CharSequence三个接口

3.构造方法

3.1StringBuilder()构建空字符串,长度16

3.2StringBuilder(int capacity)构建一个长度为capacity的空字符串

3.3StringBuilder(String str)构建一个String类型的字符串

3.4StringBuilder(CharSequence seq) 构建一个包含与指定seq相同的字符串

4.常用方法

4.1字符串长度及空间

public int capacity()返回空间大小

public int length()返回当前字符串长度

4.2追加字符串----append方法

public StringBuilder append()方法可传参数,即可追击类型:boolean、char、char[ ]、CharSequence、double、float、int、lang、String、Object、StringBuffer

public StringBuilder appendCodePoint(int codePoint)追加一个code码对应的参数

4.3删除字符串

public StringBuilder delete(int start,int end)删除索引范围字符串

public StringBuilder deleteCharAt(int index)删除对应索引字符串

4.4设置字符串

public void setCharAt(int index,char ch)将对应索引字符设置成ch

public void setLength(int newLength)设置字符串长度

4.5插入字符串

public StringBuilder insert()方法可传参数,即可插入类型:boolean、char、char[ ]、CharSequence、double、float、int、lang、String、Object、StringBuffer

4.6替换

public StringBuilder replace(int start,int end,String str)将当前字符串内索引范围替换成给定字符串

4.7反转

public StringBuilder reverse()将当前字符串反向输出

4.6与String相同的方法

Substring()、indexOf()、lastIndexOf()

三、常见面试题

  1. String、StringBuffer、StringBulider所属的包、继承关系、实现接口

答:所属包:属于java.lang包,都直接继承Object,String实现接口:Serializable,
CharSequence, Comparable< String>,StringBuffer/StringBulider实现接口:Serializable, Appendable, CharSequence

  1. String对象的构建方式和内存结构

答:

1直接字符串常量赋值创建对象,如:String
s=“abc”,存储于方法区的字符串常量池中;

2构造方法创建对象—对象存于堆内存中

2.1 String():创建一个空字符序列;

2.2String(byte[] bytes):将一个byte数组构建成String对象;

2.3String(char[] value):将一个char数组构建成String对象;

2.4String(String str):将一个String字符串构建成String对象;

3 String不可变特性

答:String不可变主要体现在地址、长度和内容不可变,地址不可变是因为String对象的底层存储在一个char数组中,这个char数组被fina关键字所修饰,导致引用地址不可改变,且又是一个数组,长度也不可变,内容不可变主要体现在此数组有被访问修饰符private所修饰,并且没有提供封装的访问方法,外部无法访问到此数组,所以内容无法改变,以上就是String的不可变特性。

  1. String常用方法

见上总结

  1. StringBuffer和StringBulider的区别

答:StringBuffer出现自JDK 1.0版本,属于早期版本,线程同步,安全性较高,执行效率较低;StringBulider出现自JDK1.5版本,属于后期版本,线程不同步,安全性较低,但执行效率相对高。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值