现在的位置: 首页 > 综合 > 正文

《java中String类,很常用啊》

2018年01月10日 ⁄ 综合 ⁄ 共 7223字 ⁄ 字号 评论关闭

 

String类
Java语言中的字符串属于String类。虽然有其它方法表示字符串(如字符数组),但Java使用String类作为字符串的标准格式。Java编译器把字符串转换成String对象。String对象一旦被创建了,就不能被改变。如果需要进行大量的字符串操作,应该使用StringBuffer类或者字符数组,最终结果可以被转换成String格式。

(1)创建字符串
创建字符串的方法有多种方式,通常我们用String类的构造器来建立字符串。表6.2列出了String类的构造器及其简要说明。

表7.2 String类构造器概要

构造器
说明

String( )
初始化一个新的String对象,使其包含一个空字符串

String(char[ ] value )
分配一个新的String对象,使它代表字符数组参数包含的字符序列

String(char[ ] valu, int offset,int count)
分配一个新的String对象,使它包含来自字符数组参数中子数组的字符

String(Stringvalue )
初始化一个新的String对象,使其包含和参数字符串相同的字符序列

String(StringBufferbuffer )
初始化一个新的String对象,它包含字符串缓冲区参数中的字符序列

【例7.1】使用多种方法创建一个字符串并输出字符串内容。

public class StrOutput {
public static void main(Sring[] args) {
//将字符串常量作为String对象对待,实际上是将一个String对象赋值给另一个
String s1 = "Hello,java!";
//声明一个字符串,然后为其赋值
String s2;
s2 = "Hello,java!";
//使用String类的构造器中的一个。创建一个空字符串,然后赋值给它
String s3 = new String( );
S3 = "Hello,java!";
//将字符串直接传递给String类构造器来创建新的字符串
String s4 = new String("Hello,java!");
//使用String类的构造器中的一个。
//通过创建字符数组传递给String类构造器来创建新的字符串
Char c1[ ] = { ' H', ' i', ' , ' , 'j', 'a', 'v', 'a'};
String s5 = new String(c1 );
//将字符数组子集传递给String类构造器来创建新的字符串
String s6 = new String(c1,0,2 );
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s5);
System.out.println(s6);
}
}

运行结果:

C:\>java StrOutput
Hello,java!
Hello,java!
Hello,java!
Hello,java!
Hi,java
Hi
(2)字符串的操作

Java语言提供了多种处理字符串的方法。表6.3列出了String类常用的方法。

表7.3 String类的常用方法

方法
说明

char charAt(int index)
获取给定的Index处的字符

int compareTo(String anotherString)
按照字典的方式比较两个字符串

int compareToIgnoreCase(String str)
按照字典的方式比较两个字符串,忽略大小写

String concat(String str )
将给定的字符串连接到这个字符串的末尾

static String copyValueOf(char[ ] data)
创建一个和给定字符数组相同的String对象

static String copyValueOf(char[ ]data ,int offset,int count)
使用偏移量,创建一个和给定字符数组相同的String对象

boolean equals(Object anObject)
将这个String对象和另一个对象String进行比较

boolean equalsIgnoreCase(Sting anotherString)
将这个String对象和另一个对象String进行比较,忽略大小写

void getChars(getChars(int strbegin,int strend,char[ ] data,int offset)
将这个字符串的字符拷贝到目的数组

int indexOf(int char)
产生这个字符串中出现给定字符的第一个位置的索引

int indexOf(int ch,int fromIndex)
从给定的索引处开始,产生这个字符串中出现给定字符的第一个位置的索引

int indexOf(String str)
产生这个字符串中出现给定子字符的第一个位置的索引

int indexOf(String str,int fromIndex)
从给定的索引处开始,产生这个字符串中出现给定子字符的第一个位置的索引

int length( )
产生这个字符串的长度

boolean regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len)

检查两个字符串区域是否相等,允许忽略大小写

String replace(char oldChar,char newChar)
通过将这个字符串中的odChar字符转换为newChar字符来创建一个新字符串

boolean starsWith(String prefix)
检查这个字符串是否以给定的前缀开头

boolean starsWith(String prefix,int toffset)
从给定的索引处开头,检查这个字符串是否以给定的前缀开头

String substring(int strbegin)
产生一个新字符串,它是这个字符串的子字符串

String substring(int strbegin,int strend)
产生一个新字符串,它是这个字符串的子字符串,允许指定结尾处的索引

char[ ] toCharArray( )
将这个字符串转换为新的字符数组

String toLowerCase( )
将这个String对象中的所有字符变为小写

String toString( )
返回这个对象(它已经是一个字符串)

String toUpperCase( )
将这个String对象中的所有字符变为大写

String trim( )
去掉字符串开头和结尾的空格

static String valueOf(int i)
将int参数转化为字符串返回。该方法有很多重载方法,用来将基本数据类型转化为字符串。如:

static String valueOf(float f),static String valueOf(long l)等

 

下面结合常用的方法,介绍几种典型的字符串操作。

①字符串的比较

Java语言提供了四种字符串的比较方法,这些方法有些类似于操作符。例如,可以使用equals、equalsIgnoreCase、regionMatches和compareTo方法来实现对字符串的比较。调用形式如下:

s1.equals(s2) ----- 如果s1等于s2,返回true,否则为false。

s1. equalsIgnoreCase (s2) ----- 如果s1等于s2,返回true,否则为false,忽略大小写。

s1. regionMatches(boolean ignoreCase,int toffset,s2,int ooffset,int len ) ----- 如果s1和 s2的子串相等,返回true,否则为false。其中,ignoreCase为忽略大小写设置,true为忽略大小写,false为不忽略大小写,toffset确定s1的起始偏移量,ooffset确定s2的起始偏移量,len确定子串的长度。

s1. compareTo (s2) -----如果s1<s2,则返回小于0的值;如果s1=s2,则返回0;如果s1>s2,则返回大于0的值

【例7.2】比较字符串。

public class StrCompare {

public static void main(Sring[] args) {

String s1="aaaa";

String s2="aaaa";

String s3="AAAA";

String s4="bcd";

if (s1.equals(s2)) {

System.out.println("s1==s2");

}

else {

System.out.println("s1!=s2");

}

if (s1.equalsIgnoreCase(s3)) {

System.out.println(" s1= =s3 when ignoring case");

}

else {

System.out.println(" s1!=s3 when ignoring case");

}

if (s1.regionMatches(true,0,s3,1,3)) {

System.out.println(" s1= =s3 when ignoring case");

}

else {

System.out.println(" s1!=s3 when ignoring case");

}

if (s1.regionMatches(false,0,s3,1,3)) {

System.out.println(" s1= =s3 when not ignoring case");

}

else {

System.out.println("s1!=s3 when not ignoring case");

}

if (s1.compareTo(s4)<0) {

System.out.println(" s1<s4");

}

else if (s1.compareTo(s4)= =0){

System.out.println("s1= =s4");

}

else{

System.out.println("s1>s4");

}

}

}

运行结果:

C:\>java StrCompare

s1= =s2

s1= =s3 when ignoring case

s1= =s3 when ignoring case

s1!= =s3 when not ignoring case

s1<s4

②求字符串长度

使用String类的length方法,调用形式如下:

s1.length( ) ----- 返回s1的长度,其类型为int。

【例7.3】求指定字符串的长度。

public class StrLength

{public static void main(Sring[] args)

{String s1="Hello,Java!";

int i=s1.length();

System.out.println("字符串s1长度为"+i);

}

}

运行结果:

C:\>java StrLength

字符串s1长度为11

③连接字符串

可以使用两种方法将字符串连接起来:+操作符、用String类的concat方法。Concat方法的调用形式如下:

s1.concat(s2) ----- 将两个字符串连接起来。

s1.concat(“字符串常量”) ----- 将字符串和字符串常量连接起来。

【例7.4】使用+和concat方法创建同一个字符串。

public class StrConcat

{public static void main(Sring[] args)

{String s1="Hello";

String s2=s1+",";

String s3=s2.concat(" Java");!

String s4=new String(" ! ");

String s5=s4.concat(s4);

System.out.println(" 连接而成的字符串是"+s5);

}

}

运行结果:

C:\>java StrConcat

连接而成的字符串是Hello,Java!

④拷贝字符串

可以有四种方法将一个字符串复制到另一个字符数组或String对象中:copyValueOf、getChars、toCharArray、substring。调用形式:

s1.copyValueOf(data) ----- 将数组data中的内容全部拷贝到字符串中。

s1.copyValueOf(data,int offset,int count) ----- 将数组data中以offset起始,长度为count的内容拷贝到字符串中。

s1.getChars(int strbegin,int strend, data,int offset) ----- 将s1的全部或部分内容拷贝到数组data中。其中,strbegin为字符的起始,strend 为字符的终止,offset为字符数组的起始。

data=s1.toCharArray( ) ----- 将s1中的全部内容拷贝到一个字符数组data中。

s2=s1.substring(int strbegin) ----- 将s1中以stregin起始的内容拷贝到s2中。

s2=s1.substring(int strbegin,int strend) ----- 将s1中以stregin起始,以strend结束之间的内容拷贝到s2中。

【例7.5】拷贝字符串。

public class StrCopy

{public static void main(Sring[] args)

{

String s1=new String( );

char data[ ]={ 'a', 'b', 'c', 'd', 'e', 'f'};

s1=s1.copyValueOf(data);

System.out.println(" s1="+s1);

s1=s1.copyValueOf(data,2,3);

System.out.println(" s1="+s1);

s1.getChars(1,2, data,0)

System.out.println(" data="+data);

data=s1. toCharArray( );

System.out.println(" data="+data);

String s2=new String( );

String s3=new String( );

s2=s1.substring(0);

System.out.println(" s2="+s2);

s3= s1.substring(1,2);

System.out.println(" s3="+s3);

}

}

运行结果:

C:\>java StrCopy

s1=abcdef

s2=cde

data=decdef

data=cde

s2=cde

s3=de

⑤在字符串中查找字符和子串

在字符串中查找字符和子串,确定它们的位置,有几种常用的方法:charAt、indexOf、lastIndexOf。调用形式如下:

s1.chatAt(int index)--------返回s1中index所对应的字符。其中,index是下标号。

s1. indexOf (int char)--------返回s1中字符char在字符串中第一次出现的位置。

s1. lastIndexOf (int char)--------返回s1中字符char在字符串中最后一次出现的位置。

s1. indexOf (s2)--------返回s2在s1中第一次出现的位置。

s1. lastIndexOf (s2)--------返回s2在s1中最后一次出现的位置。

【例7.6】查找字符和子串。

public class StrSearch

{public static void main(Sring[] args)

{

String s1="Javav";

char c=s1.charAt(2);

System.out.println("c=",+c);

int i=s1.indexOf('a');

System.out.println("fistchar=",+i);

int j=s1.lastIndexOf('a');

System.out.println("lastchar=",+j);

i= s1.indexOf("av");

System.out.println("fiststring=",+i);

j=s1.lastIndexOf("av");

System.out.println("laststring=",+j);

}

}

运行结果:

C:\>java StrSearch

c=v

firstchar=1

lastchar=3

firststring=1

laststring=3

⑥修改字符串

修改字符串的常用方法有:replace、toLowerCase、toUpperCase、trim。调用形式如下:

s1.replace(oldchar,newchar)--------用新字符newchar替代旧字符oldchar,若指定字符不存在,则不替代。

s1.toLowerCase( )--------将s1中的所有大写字母转换为小写字母。

s1.toUpperCase( )-------- 将s1中的所有小写字母转换为大写字母。

s1.trim( )--------删除s1中的首、尾空格。

【例7.7】修改字符串。

public class StrModify

{public static void main(Sring[] args)

{

String s1="Java";

s1=s1.replae('a', 'b');

System.out.println("s1=",+s1);

String s2=s1.toLowerCase( );

String s3=s1. toUpperCase ( );

System.out.println("s2=",+s2);

System.out.println("s3=",+s3);

s2= s1.trim( );

System.out.println("s2=",+s2);

}

}

运行结果:

C:\>java StrModify

s1= Jbvb

s2= jbvb

s3= JBVB

s2= jbvb

抱歉!评论已关闭.