String类、StringBuffer类

一、String类和StringBuffer类所属于的包

两个类都属于java.lang包下,此包由系统默认导入,因此可直接使用。

java.lang
类 String

java.lang.Object
  java.lang.String

public final class String   //最终类,不能被继承
  
  
   
   extends 
   
   Object
  
  
  
  
   
   implements 
   
   Serializable, 
   
   Comparable<
   
   String>, 
   
   CharSequence
  
  
  
  

  
  

java.lang
类 StringBuffer

java.lang.Object
  java.lang.StringBuffer

public final class StringBuffer      //最终类,不能被继承
 
 
  
  extends 
  
  Object
 
 
 
 
  
  implements 
  
  Serializable, 
  
  CharSequence
 
 

二、两个类的比较

1.String类定义的字符串不能改变,StrignBuffer定义的字符串内容可改变;

2.StringBuffer定义的字符串发生变化后,用toString()方法转换成String类,随后,可使用String类下的所有方法进行操作。


三、常用方法

1.String类中常用的方法定义

构造方法:

String(byte[] bytes)  把字节数组转换为String类型


String(byte[] bytes, int offset, int length)  把字节数组转换为String类型,

参数:
bytes - 要解码为字符的字节
offset - 要解码的首字节的索引
length - 要解码的字节数 

String(StringBuffer buffer)  把字符串缓冲区的内容复制成一个String类型的字符串


一般方法:

public boolean equals(Object anObject)

public byte[] getBytes(String charsetName) throwsUnsupportedEncodingException     把String类型的对象转换为byte数组

public int length() 返回此字符串的长度。

public StringtoString() 返回此对象本身(它已经是一个字符串!)。 

 
 

static StringvalueOf(boolean b)          返回boolean 参数的字符串表示形式。
static StringvalueOf(char c)           返回char 参数的字符串表示形式。
static StringvalueOf(char[] data)          返回char 数组参数的字符串表示形式。
static StringvalueOf(char[] data, int offset, int count)          返回char 数组参数的特定子数组的字符串表示形式。
static StringvalueOf(double d)          返回double 参数的字符串表示形式。
static StringvalueOf(float f)          返回float 参数的字符串表示形式。
static StringvalueOf(int i)           返回int 参数的字符串表示形式。
static StringvalueOf(long l)           返回long 参数的字符串表示形式。
static StringvalueOf(Object obj)          返回Object 参数的字符串表示形式。

2.StringBuffer中常用的方法定义

构造方法:

public StringBuffer()     构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
 
 
public StringBuffer(String str)   构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16 加上字符串参数的长度。

一般方法:

public String toString()     返回此序列中数据的字符串表示形式。
 
 
public int length()      返回长度(字符数)。

public int capacity() 返回当前容量。由于StringBuffer处置容量为16,此方法最终返回值为16+new String().length()

StringBufferappend(boolean b)
          将 boolean 参数的字符串表示形式追加到序列。
 StringBufferappend(char c)
          将 char 参数的字符串表示形式追加到此序列。
StringBufferappend(double d)
          将 double 参数的字符串表示形式追加到此序列。
 StringBufferappend(float f)
          将 float 参数的字符串表示形式追加到此序列。
 StringBufferappend(int i)
          将 int 参数的字符串表示形式追加到此序列。
 StringBufferappend(long lng)
          将 long 参数的字符串表示形式追加到此序列。
StringBufferappend(String str)
          将指定的字符串追加到此字符序列。

四、示例

1.在String类中使用“==”和equals方法(重要

class  StringDemo
{
public static void main(String[] args) 
{
String str1 = "abcd";
String str2 = "abcd";
String str3 = new String("abcd");
String str4 = new String("abcd");
String str5 = str2;


System.out.println(str1 == str2);               //true
System.out.println(str2 == str3);               //false
System.out.println(str3 == str4);               //false
System.out.println(str2 == str5);               //true
System.out.println(str1.equals(str2));     //true
System.out.println(str2.equals(str3));     //true 
System.out.println(str3.equals(str4));     //true
System.out.println(str2.equals(str5));     //true
}
}

结果已标出。

小结:

String直接定义的字符串字面值(String str1 = "abcd";)存在于字符串数据区String Poor中,进行定义时先查询String Poor内有没有此字符串,若有,直接把字符串的地址赋值给当前字符串变量;若没有,先在String Poor里生成字符串,再把地址赋值给当前字符串变量;

通过引用定义的字符串变量(String str3 = new String("abcd");)在定义时,首先查询String Poor有没有此字符串,若有,复制一份存在堆内存空间,并把地址赋值给栈中的引用;若无,先在String Poor里生成字符串,再复制一份到堆内存空间,并把地址赋值给当前引用;


2.在StringBuffer类中使用append()方法,在String类中使用“+”连接符

class  StringDemo
{
public static void main(String[] args) 
{
StringBuffer str1 = new StringBuffer("abcd");
str1.append(true).append(false);
str1.append(1);
str1.append("a");
str1.append(1.0);
str1.append(2.0f);

String str2 = str1.toString();
System.out.println(str2); 

str2 += "lpp"+6+"f";

System.out.println(str2); 
}
}

结果:abctruefalse1a1.02.0

     abctruefalse1a1.02.0lpp6f


3.在StringBuffer类中使用String类的方法

class  StringDemo
{
public static void main(String[] args) 
{
StringBuffer str1 = new StringBuffer("abcd");
str1.append(true).append(false);
str1.append(1);
str1.append("a");
str1.append(1.0);
str1.append(2.0f);

String str2 = str1.toString();
//使用String类中的方法
System.out.println(str2); 
System.out.println(str2.intern()); 
System.out.println(str2.length());               // 21
System.out.println(str2.indexOf("abcd"));  // 0

}
}

小结:

使用toString方法把StringBuffer类转换为String类,就可以使用String类定义的方法了。


4.在StringBuffer类中使用capacity方法

class  StringDemo
{
public static void main(String[] args) 
{
StringBuffer str = new StringBuffer("abcd");

System.out.println(str.length());        // 4
System.out.println(str.capacity());     // 20
}
}

结果已标出。

小结:

length()方法返回的是字符串的长度,capacity()方法返回的是字符串所在缓冲区的容量。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值