String对象

一、Java中将字符串作为String类型对象来处理。当创建一个String对象时,被创建的字符串是不能被改变的。每次需要改变字符串时都要创建一个新的String对象来保存新的内容。原始的字符串不变。之所以采用这种方法是因为实现固定的,不可变的字符串比实现可变的字符串更高效。对于那些想得到改变的字符串的情况,有一个叫做StringBuffer的String类的友类,它的对象包含了在创建之后可以改变的字符串。

       String类和StringBuffer类都在java.lang中定义。因此它们可以自动的被所有程序使用。两者均被说明为final,这意味着两者均不含子类。

 

二、String构造函数

       (1)String(), 默认构造函数,无参数

       String  s1 = new  String();      

       (2)String( char chars[]) ,传入字符数组

              char[] myChars={'a', 'b', 'c'};

              String  s2 = new String(myChars)  // 使用字符串“abc”初始化s2

       (3)String( char chars[], int startIndex, int numChars) ,传入一个字符数组,从指定下标位置开始获取指定个数的字符,用这些字符来初始化字符串变量。

              char[] myChars={'h', 'e', 'l', 'l', 'o'};

              String s3 = new String(myChars,1,3);  //使用字符串“ell”初始化s3

       (4)String(String strObj),传入另一个字符串对象,用该字符串对象的内容初始化

              String s4= new String(s3);  // 这是s4也是“ell”了。

       (5)String(byte asciiChars[])

               String(byte asciiChars[], int startIndex, int numChars)

              尽管Java的char类型使用16位(bit)表示Unicode编码字符集,在Internet中,

字符串的典型格式使用由ASCII字符集构成的8位数组,因为8位ASCII字符串是共同的,当给定一个字节(byte)数组时,String类提供了上面两个初始化字符串的构造函数。

例子:

package Examples;

class SubStringConv{

       public static void main(String[] args){

              byte ascii[]={65,66,67,68,69,70};

              String s1=new String(ascii);

              System.out.println(s1);

              String s2=new String(ascii,2,3);

              System.out.println(s2);

       }

}

编译和运行后输出:

ABCDEF

CDE

 

三、

       (1)调用字符串的length()方法可以得到该字符串的长度(字符个数);

      

       (2)前面说明了如何使用new运算符创建一个字符串实例。然而这是一种早期的使用字符串常量的处理方法。对于程序中的每一个字符串常量,Java会自动创建String对象。因此,可以使用字符串常量初始化String对象。例如:

       String s5="abc";

       int  i = "abc".length(); //可以将字符串作为对象来进行操作

       (3)可以使用“+”运算符来将两个字符串连接起来产生一个新的String对象。只要+运算符有一个运算数是字符串(String)实例时,编译器就将另一个运算数转换为它的字符串形式。这种操作是通过调用一个由String类定义的 字符串转换方法valueOf()来完成的。对于简单类型,valueOf()方法返回一个字符串,该字符串包含了该类型的值的字符串。对于对象,valueOf()方法调用toString()方法。每一个类都执行toString()方法,因为它是由Object定义的。toString()方法具有如下一般形式: String toString()   。 toString()方法返回一个String对象(即字符串)。该对象一般是对类的一个描述。

 

四、一些字符串操作

       (1)字符截取

              *char  charAt(int  where) ,注意,这里返回一个char字符例如:

              char a ;

              a="abcde".charAt(2);  //将索引为2 ,即第三个字符赋给a

 

              * void getChars(int sourceStart, int sourceEnd, char target[], int targetStart) ,这里是无返回值方法,指定要截取的子字符串的开始和结束下标,再指定要储存子字符串内字符的数组,和存放这些字符的起始位置。注意,子字符串并不包括位于结束下标的字符。

          

           * byte[] getBytes()    这是getBytes()方法最简单的形式,它实现将字符存放于字节数组中。在将字符串(String)值输出到一个不支持16位Unicode编码的环境时,getBytes

()是最有用的。例如,大多数Internet协议和文本文件格式在文本交换时使用8位ASCII编码。

 

 * char[]  toCharArray()  将字符串中所有的字符转换到一个字符数组的最简当方法,也可以使用getChars()方法实现。

 

(2)字符串比较

    * boolean equals(Object str)  比较两个字符串对象是否相等,

   boolean equalsIgnoreCaseJ(String str)  比较两个字符串对象,且忽略字符的大小写

 

  * regionMatches() 方法允许将一个字符串中指定的区间和另一字符串中指定的区间进行比较,它的重载形式允许在比较时忽略大小写。下面给出这两种方法的一般形式:

   boolean  regionMatches(int startIndex,String str2,int str2StartIndex,int numChars)

boolean  regionMatches(boolean ignoreCase ,int startIndex,String str2,int str2StartIndex,int numChars)

     其中startIndex指定调用此方法的字符串内子字符串的起始位置。

boolean startsWith(String str)    startsWith方法还有第二种形式:

 boolean startWith(String str, int startIndex)

   boolean endsWith(String str)

     上面的方法用来判断一个给定的字符串是否是从指定的字符串开始或结束。

* int compareTo(String str) 方法用于比较两个字符串的大小。字符串比较的结果及其含义:

含义

小于0

调用此方法的字符串小于参数str

大于0

调用此方法的字符串大于参数str

等于0

两个字符串相等

 

(3)其他操作

* 搜索字符串:

int  indexOf( int ch)

int  lastIndexOf( int ch)

int  indexOf(String str)

int  lastIndexOf(String str)

指定搜索的起始点:

int  indexOf( int ch, int startIndex)

int  lastIndexOf( int ch ,int startIndex)

int  indexOf(String str ,int startIndex)

int  lastIndexOf(String str, int startIndex)

 

* 使用 substring()截取子字符串:

       String  substring(int startIndex)    注意substring中string没有大写,截取指定位置后的子字符串。

       String  substring(int startIndex,int endIndex) 截取指定起始位置和结束位置的子字符串。注意截取的字字符串不包括结束位置的字符。

 

* concat() 连接连个字符串,与+ 运算符执行相同功能。

       String concat(String str)

 

              * replace() 用另一个字符取代指定字符串中指定字符:

String replace(char original, char replacement)    例如:

       String s=”Hello”.replace(‘l’,’w’);  //执行后 s =”Hewwo”;

 

             * trim() 返回一个字符串,该字符串是删除调用字符串前后的空白符所得的字符串

      

              * 改变字符串内字符的大小写

               String  toLowerCase() 返回一个所有字母都是小写的字符串

               String  toUpperCase()返回一个所有字母都是大写的字符串

 

 

       * 使用 valueOf()方法实现数据转换

              例如:

String str = String.valueOf(3) ;  //将int类型转换成字符串类型,其他基本数据类型和任何类的对象也可作为参数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值