String常用类和StringBuilder (Java)

String常用类

String类的下述方法能创建并返回一个新的String对象:
String()
	创建一一个空字符的 String对象
String(String original)
	创建一个String对象为original的拷贝
String(char[] value)
	用一个字符数组创建一个String对象
String(char[] value, int offset, int count)
	用一个字符数组从offset开始的count个字符序列创建一个String对象
String(byte[] bytes)   // 使用int 自动转char   如 97 对应 字符 'a'
	用一一个byte数组创建一个 String对象
String(byte[] bytes,int offset,int length)
	用一个byte数组从offset项开始的length个字符序列创建一个 String对象
String 常量池
public class test2 {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";
        String str3 = new String("abc");
        System.out.println("字符串比较地址:"+(str1==str2));
        System.out.println("字符串比较地址:"+(str2==str3));
    }
}
// 运行结果:
字符串比较地址:true
字符串比较地址:false
String类的下述方法能创建并返回一个新的String对象:

concat, replace, substring, toLowerCase, toUpperCase, trim

提供查找功能的有关方法: endsWith, startsWith, indexOf,,lastIndexOf

index0f(int ch)      //  使用int 自动转char   如 97 对应 字符 'a'
index0f(int ch, int fromIndex )  //  fromIndex 是下标开始对比,包括下标
index0f(String str)
index0f(String str,int fromIndex )

提供比较功能的方法: equals, equalsIgnoreCase, compareTo ,equalsIgnoreCase() // 忽略大小写的equal()

其它方法: charAt ,length

public static String valueOf(…) 可以将基本类型数据转换为字符串

valueOf(int i)
value0f(char c)
value0f(long 1)
value0f(float f )
value0f(double d)
value0f(boolean b)
value0f(char[] data)
valueOf(char[] data, int offset, int count )
value0f(0bject obj)


 System.out.println(String.valueOf(123)); 
 // 运行结果:
 123
// 得到字节型数组的3个方法
byte[]  getBytes ()

byte[]  getBytes(Charset charset )

byte[]  getBytes (String charsetName)


byte[] bs = new byte[];
bs = "你我他".getBytes("GBK");

StringBuilder类

StringBuilder() //创建一个不包含字符序列的“空”的StringBuffer对象。 
StringBuffer(String str) //创建一个StringBuffer对象,包含与String对象str相同的字符序列。
public StringBuilder append()// 可以为该StringBuilder 对象添加字符序列,返回添加后的该StringBuilder对象引用。 

public StringBuilder delete(int start,int end) //可以删除从start开始到end-1为止的一段字符序列,返回修改后的该StringBuilder对象引用。 

public StringBuilder deleteCharAt(int index)// 移除此序列指定位置上的 char。 

public StringBuilder insert()// 可以为该StringBuilder 对象在指定位置插入字符序列,返回修改后的该StringBuilder对象引用 

public StringBuilder setCharAt(int index,char ch) //设置指定位置和 String 类含义类似的方法 
    
public StringBuilder reverse()// 用于将字符序列逆序,返回修改后的该 StringBuilder对象引用。 

public String toString()// 返回此序列中数据的字符串表示形式。
    
public int indexOf(String str)    // 没有 index0f(int ch)  
public int indexOf(String str,int fromIndex) 
public String substring(int start) 
public String substring(int start,int end) 
    

String和StringBuffer和StringBuilder使用要点

String使用的陷阱:String一经初始化后,就不会在改变其内容了。对String字符串

的操作实际上对其副本(原始拷贝)的操作,原来的字符串一点都没有改变。

String s="a"; //创建了一个字符串 
s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。

如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

相反,StringBuffer类是对原字符串本身操作的,可以对字符串进行修改而不产生副本拷贝。可以在循环中使用。

String StringBuffer StringBuilder 对比

String:不可变字符序列

StringBuffer:可变字符序列,并且线程安全,但是效率低

StringBuilder:可变字符序列,线程不安全,但是效率高(一般用他!)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值