一 字符串
Java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是类类型变量,是一个对象。
1 字符串常量 如,“你好”,“1234.987”,“weqweo”
2 声明字符串 String s
3 创建字符串 使用String类的构造方法。
例如
s=new String("we are students")
也可以写成
s="we are students"
声明和创建可用一步完成
String s=new String("we are students");
或
String s="we are students";
也可以用一个已创建的字符串创建另一个字符串,如
String tom=String(s);
相当于
String tom="we are students"
String类还有两个较常用构造方法
1 String(char a[])用一个字符数组a创建一个字符串对象,如
char a[3]={'b','o','y'};
String s=new String(a);
上述过程相当于
String s="boy";
2 String(char a[],int startIndex,int count) 提取字符数组a中的一部分字符创建一个字符串对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个 数,例如
char a[]={'s','t','b','u','s','n'};
String s=new String(a,2,3);
上述过程相当于
String s="bus";
二 怎样获取字符串的长度
使用String 类中的length()方法可以获取一个字符串的长度,如
String s="we are students",tom="我们是学生";
int n1,n2;
n1=s.length();
n2=tom.length();
那么n1的值是15,n2的值5。
字符串常量也可以使用length()获得长度,如"你的爱好".length()的值是4。
三 字符串比较
1 equals方法
字符串对象调用String类中的public boolean equals(String s)方法比较当前字符串对象的实体是否与参数指定的字符串s的实体相同,如
String tom=new String("we are students");
String boy=new String("We are students");
String jerry=new String("we are students");
tom.equals(boy)的值是false,tom.equals(jerry)的值是true。
注:tom==jerry的值是false。因为字符串是对象,tom,jerry是引用。内存示意如图:
2 equalsIgnoreCase 方法
字符串对象调用public boolean equalsIgnoreCase(String s)比较当前字符串对象是否与参数指定的字符串s是否相同,比较时忽略大小写。如
String tom=new String("ABC");
Jerry=new String("abc");
tom.equalsIgnoreCase(Jerry)的值是true。
3 startsWith,endsWith方法
字符串对象调用public boolean startsWith(String s)方法,判断当前字符串对象的前缀是否是参数指定的字符串s,如
String tom="220302620629021",jerry="21079670924022";
tom.startsWith("220")的值是true,jerry.startsWith("220")的值是false。
可以使用public boolean endsWith(String s)方法,判断一个字符串的后缀是否是字符串s,如
String tom="220302620629021",jerry="21079670924022";
tom.endsWith("021")的值是true,jerry.endsWith("021")的值是false。
例子2:
import java.applet.*;import java.awt.*;
public class Example5_2 extends Applet
{
String tom;
public void init()
{
tom="220302620629021";
}
public void paint(Graphics g)
{
if((tom.startsWith("220302"))&&(tom.endsWith("1")||tom.endsWith("3")))
g.drawString("tom是吉林人,男性",10,10);
}
}
4 regionMatches方法
字符串调用
public boolean regionMatches(int firstStart,String other,int ortherStart,int length)方法,从当前字符串参数firstStart指定的位置开始处,取长度为length的一个子串,并将这个子串和参数other指定的一个 子串进行比较,其中,other指定的子串是从参数otherStart指定的位置开始,从other中取长度为length的一个子串。如果两个子串相 同该方法就返回true,否则返回false。
使用该方法的重载方法
public boolean regionMatches(boolean b,int firstStart,String other,int otherStart,int length)
可以通过参数b决定是否忽略大小写,当b取true时,忽略大小写。
在下面的例子中,我们判断一个字符串中共出现了几个“en”
例子3:
class Example5_3
{
public static void main(String args[])
{
int number=0;
String s="student;entropy;engage,english,client";
for(int k=0;k
{
if(s.regionMatches(k,"en",0,2))
{
number++;
}
}
System.out.println("number="+number);
}
}
5 compareTo,compareToIgnoreCase方法
字符串对象可以使用String类中的public int compareTo(String s)方法,按辞典序与参数s指定的字符串比较大小。如果当前字符串与s相同,该方法返回值0,如果当前字符串对象大于s,该方法返回正值,如果小于s,该 方法返回负值。例如
String str="abcde"
str.compareTo("boy")小于0,str.compareTo("aba")大于0,str.compareTo("abcde")等于0.
按辞典序比较两个字符串还可以使用public int compareToIgnoreCase(String s)方法,该方法忽略大小写。
下面的例子一个字符串数组按字典序重新排列。
例子4:
class Example5_4
{
public static void main(String args[])
{
String a[]={"boy","apple","Applet","girl","Hat"};
for(int i=0;i
{
for(int j=i+1;j
{
if(a[j].copareTo(a[i])<0)
{
String temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(int i=0;i
{
System.out.print(" "+a[i] );
}
}
}
四 字符串检索
1 搜索指定串出现的位置
· public int indexOf(String s) 字符串调用该方法从当前字符串的头开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回值是-1.
· public int indexOf(String s,int startpoint ) 字符串调用该方法从当前字符串的startpoint位置处开始检索字符串s,并返回首次出现s的位置。如果同有检索到字符串s,该方法返回值是-1.
· public int lastIndexOf(String s) 字符串调用该方法从当前字符串的头开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回的值是-1.
· public int lastIndexOf(String s,int startpoint) 字符串调用该方法从当前字符串的startpoint位置处开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回的值是-1.
例如:
String tom="I am a good cat"
tom.indexOf("a"); //值是2.
tom.indexOf("good",2); //值是7.
tom.indexOf("a",7); //值是13.
tom.indexOf("w",2); //值是-1.
2 搜索指定字符出现的位置
· public int indexOf(int char) 字符串调用该方法从当前字符串的头开始检索字符char,并返回首次现在char的位置。如果没有检索到字符char,该方法返回的值是-1.
· public int indexOf(int char,int startpoint) 字符串调用该方法从当前字符串的startpoint位置处开始检索字符char,并返回首次出现char的位置。如果没有检索到字符char,该方法返回的值是-1.
· public int lastIndexOf(int char ,int startpoint) 字符串调用该方法从当前字符串的startpoint位置处开始检索字符char,并返回最后出现char的位置,如果没有检索到字符char,该方法返 回值是-1.
五 字符串的截取
· public String substring(int startpoint) 字符串对象调用该方法获得一个当前字符串子串,该子串是从当前字符串的startpoint处截取到最后所得到的字符串。
· public String substring(int start,int end) 字符串对象调用该方法获得一个当前字符串的子串,该子串是从当前字符串的start处截取到end处所得到的字符串,但不包括end处所对应的字符。
如:
String tom="I love tom";
String s=tom.substring(2,5);
s是lov
六 替换
·public String replace(char oldChar,char newChar) 字符串对象s调用该方法可以获得一个串对象,这个串对象是用参数newChar指定的字符替换s中由oldChar指定的所有字符而得到的字符串。
· public String replaceAll(String old,String new) 字符串对象s调用该方法可以获得一个串对象,这个串对象是通过用参数new指定的字符串替换s中由old指定的所有字符串而得到的字符串。
· public String trim() 一个字符串s通过调用方法trim()得到一个字符串对象,该字符串对象是s去掉前后空格后的字符串。
例如:
String s="I miss sheep";
String temp=s.replace( t , s )
Temp是“I miss sheep”.
String s=" I am a student ";
String temp=s.trim();
那么temp是“I am a student”。
七 字符串转化为相应的数值
1 转化为整型
Java.lang包中的Integer类调用其类方法 public static int parseInt(Strint s)可以将“数字”格式的字符串,如“12387”,转化为int型数据。例如
int x;
String s="6542";
x=Integer.parseInt("6542");
类似地,使用java.lang包中的Byte,Short,Long类调用相应的类方法
public static byte parseByte(String s)
public static short parseShort(String s)
public static long parseLong(String s)
可以将“数字”格式的字符串,转化为相应的基本数据类型。例如
int x;
String s="6542";
x=Integer.parseInt("6542");
2 转化为float型或double型
java.lang包中的Float类调用其类方法
public static int parseFloat (String s)
可以将“数字”格式的字符串,如“12387.8976”,转化为float型数据。例如
float n=Float.parseFloat("12387.8976")
或
String s=new String("12387.8976");
float n=Float.parseFloat(s)
类似地,使用java.lang包中的Double类调用相应的类方法
public static double parseDouble(String s)
可以将“数字”格式的字符串转化为double型数据。
另外,还可以使用Float类的类方法:public static Float valueOf(String s)
将形如“12334.870”字符串转化为float型数据
例如
float n=Float.valueOf("12334.870").floatValue()
使用Double类的类方法:public static Double valueOf(String s)
将形如“12334.870”字符串转化为double型数据,例如:
double n=Double.valueOf("12334.870").doubleValue()
现在我们举一个求若干个数的平均数的例子,若干个数从键盘输入。
例子5:
public class Example5_5
{
public static void main(String args[])
{
double n,sum=0.0;
for(int i=0;i
{
sum=sum+Double.valueOf(args[i]).doubleValue();
}
n=sum/args.length;
System.out.println("平均数:"+n);
}
}
这是一个应用程序,应用程序中的main方法中的参数args能接受你从键盘键入的字符串,你首先应编译上述源程序
c:/2000/>javac Exampe5_5.java
编译通过后,你要使用解释器java.exe来执行你的字节码文件
c:/2000/>java Example5_5 "123.78" "23324.9" "213214 " (回车)
这时,程序中的args[0],args[1],args[2]分别得到字符串“123.78”“23324.9” “213214”.
在源程序中我们再将这些字符串转化为数值进行运算,得到所需的结果。
八 数值转化为字符串
可以使用String类的下列类方法
public String valueOf byte n
public String valueOf int n
public String valueOf long n
public String valueOf float n
public String valueOf double n
将形如123,1232.98等数值转化为字符串,如
String str=String.valueOf(12313.9876);
float x=123.987f;
String temp=String.valueOf(x);
九 对象的字符串表示
在子类的讲述中我们讲过,所有的类都默认地是java.lang包中Object类的子类或间接子类。Object类有一个public方法toString(),一个对象通过调用该方法可以获得该对象的字符串表示。
例子6:
import java.util.Date;
import java.awt.*;
public class Example5_6
{
public static void main(String args[])
{
Date date=new Date();
Button button=new Button("确定");
System.out.println(date.toString());
System.out.println(button.toString());
}
}