黑马程序员 String类

                                                                   ---------------------- android培训java培训、期待与您交流! ----------------------


Java语言提供了专门处理字符串的类,可以利用这些类,轻松的对字符串进行操作。在Java语言中,所能使用的字符串类可以分为两大类:

*      一类是创建后就不会再改变内容的字符串类String类,一般将其称为不可变字符串类,主要用于存放字符串常量,对于需要进行比较、搜索之类的字符串,就存放于String类中。

*      另一类是在字符串创建后,允许对字符串内容进行更改的字符串类StringBuffer类,一般称为可变字符串类,主要用于存放字符串变量,对于需要进行插入、修改等操作的字符串,都会存放在StringBuffer类中。

需要注意的是,字符串不同于字符,Java语言中规定,凡是用双引号(””)引起的内容都视为字符串,而用单引号(’’)引起的内容都视为字符。

15.1   字符串对象String类

String类是不可变字符串类,因此用于存放字符串常量。一个String字符串一旦创建之后,其长度和内容就不能再被更改了。每一个String字符串对象创建的时候,就需要指定字符串的内容。

15.1.1   String类常用方法

字符串String类的构造方法及描述见表15-1所示。

表15-1                                                  String类的构造方法及描述

构 造 方 法

描     述

String()

用来创建一个空的字符串常量

String(String str)

利用一个已经存在的字符串常量,来创建一个新的String对象

String(StringBuffer buf)

利用一个已经存在的StringBuffer对象,来创建新的String对象

String(char c[])

利用已经存在的字符数组的内容,来创建新的String对象

字符串String类的常用方法及功能见表15-2所示。

表15-2                                                  String类的常用方法及功能

int Length()

用于获得当前字符串对象中字符的个数

boolean startsWith(String str)

用于判断当前字符串的前缀,是否是指定的字符串对象str,若是则返回true,否则返回false

boolean endsWith(String str)

用于判断当前字符串的后缀,是否是指定的字符串对象str,若是则返回true,否则返回false

int indexOf(int a)

用于查找并返回当前字符串中,某个特定字符a第一次出现的位置

int indexOf(int a,int b)

用于从当前字符串中,自b位个字符之后向后查找并返回某个特定字符a第一次出现的位置

boolean

equals(Object o)

用于将当前字符串与方法参数列表中给出的字符串对象o作比较,若相同则返回true,否则返回false,区分大小写

boolean equalsIgnoreCase(String str)

用于将当前字符串与方法参数列表中给出的字符串对象str作比较,若相同则返回true,否则返回false,不区分大小写

int

compareTo(String str)

用于将当前字符串与参数中字符串对象str作比较,若完全相同则返回0;若按字母顺序大于参数字符串,则返回一个大于0的整数;反之,则返回一个小于0的整数

String concat(String str)

用于将字符串str连接在当前字符串的尾部,并返回新的字符串

String

replace(char c1,char c2)

用于将当前字符串中的所有c1指定的字符替换为c2指定的字符,并返回新的字符串

在这里需要再次说明,String类的对象一经创建,就不会再发生改变。但String类中的很多方法,好像是改变了字符串的内容,其实并不是这样,先来看一个代码片断。

……

String s = "Hello!";

System.out.println(s.concat("world"));

System.out.println(s);

......

运行这段代码后,会发现结果是。

Hello!world

Hello!

也就是说,String类是不可变字符串类,调用方法前后,String类对象s的内容并没有发生变化,发生变化的只是s.concat()的值。换句话说,字符串对象s调用了concat()方法后,返回一个新的字符串,而字符串对象s本身是没有变的。

代码15-1中,举例说明String对象的声明、创建方法,以及String类中部分方法的使用。

代码15-1   String类对象的创建及使用StringDemo.java

public class StringDemo

{

       String str1 = "Hello world!This is Java code.";

       //声明并初始化字符串str1

       String str2;                                                            //声明字符串str2

       String str3 = new String("This is Java code.");

       //声明并初始化字符串str3

       public StringDemo()

       {

             str2 = new String("This is Java code.");

              //创建字符串对象str2并初始化

             System.out.println("str1 is: "+str1);

             System.out.println("str2 is: "+str2);

             System.out.println("str3 is: "+str3+"\n");

             System.out.println("Each item of str1 is:");

             for(int i=0;i<str1.length();i++)

             {    //使用charAt()方法得到String字符串中指定位置的字符,并利用循环分别输出

                 char c = str1.charAt(i);

                 System.out.print("\""+c+"\",");

                 if((i+1)%10==0) System.out.println();

             }

             System.out.println();

             byte b[] = str1.getBytes();

             //使用String类的getBytes()方法,得到str1中所有字符对应的Unicode编码,并存入byte
                  型数组b中

             System.out.println("Change each item of str1 to unicode is:");

             for(int i=0;i<b.length;i++)

             {    //利用循环分别输出str1中,所有元素对应的字符的Unicode编码

                 System.out.print(b[i]+",");

                 if((i+1)%10==0) System.out.println();

             }

             System.out.println();

             System.out.print("The result of comparing str2 and str3 is:");

             System.out.println(str2.equals(str3));

             //将字符串对象str2与str3进行比较,并将返回值输出

             System.out.println("\nReplace all charcters \"a\" to \"e\" in str2");

             System.out.println("The result of str2.replace() is:"+str2.replace('a','e'));

             //将字符串str2调用replace()方法的结果输出

             System.out.println("str2 is: "+str2+"\n");

             System.out.print("The result of whether str1 is beginning with \"Hello\":");

             System.out.println(str1.startsWith("Hello"));

             System.out.print("The result of whether str3 is end with \"code.\":");

             System.out.println(str3.startsWith("code."));

       }

       public static void main(String[] args)

       {

             StringDemo stringDemo = new StringDemo();

       }

}



代码15-2中,举例说明String对象中的compareTo()方法、indexOf方法的使用,同时比较使用equals()及equalsIgnoreCase()方法。

代码15-2   String类部分方法测试StringMethodDemo.java

public class StringMethodDemo

{

       public static void main(String[] args)

       {

             String str1 = "abc";

             String str2 = "aab";

             String str3 = "abd";

             String str4 = "abc";

             String str5 = "ABC";

             String str6 = "abcdefgabcde";

             //以上完成字符串的声明及初始化

             int i = str1.compareTo(str2);

             int j = str1.compareTo(str3);

             int k = str1.compareTo(str4);

             //以上调用String的compareTo()方法来比较字符串

             System.out.println("str1 is:"+str1);

             System.out.println("str2 is:"+str2);

             System.out.println("str3 is:"+str3);

             System.out.println("str4 is:"+str4);

             System.out.println("str5 is:"+str5);

             System.out.println("str6 is:"+str6);

             System.out.print("The result of str1 compareTo str2 is:");

             System.out.println(i);

             System.out.print("The result of str1 compareTo str3 is:");

             System.out.println(j);

             System.out.print("The result of str1 compareTo str4 is:");

             System.out.println(k);

             System.out.print("The result of str1 equals str5 is:");

             System.out.println(str1.equals(str5));

             //调用String的equals()方法来比较字符串

             System.out.print("The result of str1 equalsIgnoreCase str5 is:");

             System.out.println(str1.equalsIgnoreCase(str5));

             //调用String的equalsIgnoreCase()方法来比较字符串

             int m = str6.indexOf((int)'d');

             //调用String的indexOf()方法,返回字符'd'第一次出现的位置

             System.out.println("The char \"d\" first appear position is :"+m);

             int n = str6.indexOf((int)'d',4);

             //调用String的indexOf()方法,返回字符'd'从第四位后,首次出现的位置

             System.out.println("After 4th position The char\"d\"appear position is:"+n);

       }

}




---------------------- android培训java培训、期待与您交流!

 ----------------------详细请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值