字符串是Java程序中经常处理的对象,如果字符串运用的不好,将影响到程序运行的效果。在Java中国字符串作为String类的实例来处理。以对象的方式处理字符串,将使字符串更加灵活、方便。了解字符串上可用的操作,可以节省程序编写与维护的时间。
一:String类
char类型只能表示单个字符,不能表示由多个字符连接而成的字符串。在Java语言中将字符串作为对象来处理,可以通过Java.lang包中的String类来创建字符串对象。
1、声明字符串
在Java语言中字符串必须包含一对双引号(" ")之内。
例如:" 23.56","aincidnfn","好的"
这些都是字符串常量,字符串常量是系统能够显示的任何文字信息,甚至是单个字符。
注意:在Java中有双引号(" ")号包围的都是字符串,不能作为其他数据类型类来使用,如" 1+2 "的输出结果不是3;
可以通过以下语法格式来声明字符串变量:String str=[null];
String str = "5";
/**
* String:指定该类变量为字符串类型。
* str:任意有效的标识符,表示字符串变量的名称。
* 如果不赋值,表示str变量是未初始化的状态
*/
String str1;
2、创建字符串
在Java中将字符串作为对象来管理,因此可以向创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。String类的常用构造方法如下:
*String(char[])方法:
例如:用一个字符数组a创建String对象,实例代码如下:
char [] a={'g','o','o','d'};
String s=new String(a); 等价于 String s=new String("good");
*String(char a[],int offset,int length)方法:
char [] a={'g','o','o','d'};
String s=new(a,1,3); 等价于 String s=new String("ood");
提取字符数组a中的一部分创建一个字符串对象。参数offset表示开始截取的位置,length表示截取字符串的长度。
*String(char [] value)方法:
构造方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果。
char [] a={'s','t','u','d','e','n','t'};
String s=new String(a); 等价于 String s=new String("student");
除通过以上几种使用String类的构造方法来创造字符串变量外,还可通过字符串常量的引用赋值给一个字符串变量。
例:引用字符串常量来创建字符串变量,代码如下:
String str1,str2;
str1="We are student ";
str2="We ate student ";
此时str1和str2引用相同的字符串常量,内存都指向:We are student 。
二:连接字符串
对于已声明的字符串,可以对其进行相应的操作。连接字符串就是字符操作中较简单的一种。可以对多个字符串进行连接,也可以使字符串与其他数据类型进行连接。
1、连接多个字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个运算符并产生一个String 对象。
String str2=new String("Hello");
String str3=new String("student");
String s6=str2+" "+str3;
System.out.println(s6);
注意:Java中一句相连的字符串不能分开在两行中写。例如
System.out.println("I like
Java ");
这种写法是错误的,如果一个字符串太长,为了便于阅读,可以将这个字符串分在两行上书写。
此时就可以使用“+”将两个字符串连起来,之后在加号处换行。因此,上面的语句可以修改为:
System.out .println("I like "+
"Java");
2、连接其他数据类型
字符串也可同其他基本数据类型进行连接,如果将字符串同这些数据类型进行连接,会将这些数据直接转换成字符串。
例:
int booktime=4;
float practice=2.5f;
System.out.println("我每天花费"+booktime+"小时看书;"
+practice+"小时上机练习");
效果是:我每天花费4小时看书;2.5小时上机练习
本案列实现的是将字符串常量与整列变量booktime 和浮点型变量practice相连后的结果输出。在这里booktime 和practice都不是字符串,当他们与字符串相连时会自动调用toString()方法,将其转换长字符串形式,然后参与连接。
注意:只要“+”运算符的一个操作数是字符串,编译器就会将另一个操作数转换成字符串形式,所以应该谨慎的将其他数据类型与字符串相连,以免出现意想不到的结果。
如果将上例中的输出语句修改为:
System.out.println("我每天花费"+booktime+"小时看书;"
+(practice+booktime)+"小时上机练习");
效果是:我每天花费4小时看书;6.5小时上机练习
为什么会这样?这是由于运算符是有优先级的,圆括号的优先级较高,所以先被执行,然后在将结果与字符串相连。
三:获得字符串信息
字符串作为对象,可通过相应的方法获取字符串的有效信息,如获得某字符串的长度,某个索引位置的字符等。
1、获取字符串长度
使用String 类的length()方法可获得声明的字符串对象的长度。
语法如下:
str.length();
其中,str为字符串对象。
例:获得字符串长度,实例代码如下:
String str="We are student ";
int size=str.length();
上段代码是将字符串str的长度赋值给int型变量size ,此时变量size的值为16,这表示length()方法返回的字符串的长度包括字符串中的空格。
2、字符串查找
String类提供了两种查找字符串的方法,即indexOf()和lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。indexOf()方法返回的是搜索的字符或字符串首次出现的位置,lastIndexOf()方法返回的是搜索的字符或字符串最后一次出现的位置。
(1)indexOf(String s)
该方法用于返回参数字符串s在指定字符串中首次出现的索引位置。当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法的返回值是-1;
语法如下:
str.indexOf(substr)
*str:任意字符串对象
*substr:要搜索的字符串
例:查找字符a在字符串str中的索引位置,实例代码入下:
String str="We are student ";
int size =str.indexOf("a"); //变量size的值是3
理解字符串的索引位置,要对字符串的下标有所了解。在计算机中String对象是用数组表示的。字符串的下标是0---(length()-1) .
(2)lastindexOf(substr)
该方法用于返回指定字符串最后一次出现的索引位置。当调用字符串的lastIndexOf()方法时,会从当前字符串的开始位置检索参数str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回-1。
语法如下:
str.lastindexOf(substr)
*str:任意字符串对象
*substr:要搜索的字符串
String str="We are student ";
int size =str.lastindexOf("t"); //变量size的值是13
说明:如果lastIndexOf()方法中得参数是空字符串“”(注意没有空格),则返回的结果与调用该字符串length()方法的返回结果相同。
3、获得指定索引位置的字符
使用charAt()方法可将指定的索引处的字符返回。
语法如下:
str.charAt(int index)
*str:任意字符串
*index:整型值,用于指定要返回字符的下标。
四:字符串操作
String类中包含了很多方法,允许程序员对字符串进行操作来满足实际编程中得需要。
1、获取子字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符标的进行截取,且应该明确字符串下标是从0开始的。
substring()方法被两种不同的方法重载,来满足不同的需要。
(1)substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串
语法如下:
str.substring(int beginIndex)
其中,beginIndex指定从某一索引开始截取字符串。
注意:在字符串中空格占用一个索引位置。
(2)substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的字串。
语法如下:
substring(int beginIndex,endIndex)
*beginIndex:开始截取子字符串的索引位置
*endIndex:子字符串在整个字符串中得结束位置
2、去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。(就是忽略前面空格和后面空格的意思)
例:
String str1=" Hello word ";
System.out.println(str1.length());//返回值是22
System.out.println(str1.trim().length());//返回值是13
3、字符串替换
replace()方法可实现将指定的字符或者字符串替换成新的字符或字符串。
语法如下:
str.replace(char oldChar,char newChar)
*oldChar:要替换的字符或字符串
*newChar:用于替换原来字符串的内容
replace()方法返回的结果是一个新的字符串。如果字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。
例如:
String str1=" Hello word ";
String newstr=str1.replace("w", "W");
效果如下: Hello Word
说明:如果要替换的字符oldChar在字符串中重复出现多次,replace()方法会将所有oldChar全部替换成newChar。
另外,要替换的字符oldChar的大小写要与原字符串中字符的大小写保存一致,否则不能成功的替换。