字符串
1.什么是字符串
java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是一个对象.
a) 字符串常量
如, "你好","bc-cn","12345789"
字符串常量在内存中一但定义,地址空间是不可改变的,直到程序结束.就是说字符串常量在内存中有固定的地址.
b) 声明字符串
String str;
c) 创建字符串
使用String类的构造方法,例如:
str=new String("I like bc-cn.net"); //当然如果没有声明直接创建也是可以的,回忆一下匿名类的概念
声明和创建可以一步完成:
String str=new String("I like bc-cn.net");
也可以用一个已创建的字符串创建另一个字符串,如
String s=String(str);
String类还有两个比较常用的构造方法.
(1)String (char a[]) //用一个字符数组a创建一个字符串对象,如
char a[]={'b','o','y'};
String s=new=new String(a);
上述过程相当于:
String s=new String("boy");
(2)String(char a[],int startIndex,int count)
提取字符数组a中的一部分字符创建一个字符串对象,参数startIndex和count分别指定在a中提取字符的起始位置(例如第一位置从0开始依次类推)和从该位置开始截取的字符个数,例如
char a[]={'s','t','b','u','s','n'};
String s=new String(a,2,3); //从2开始,即第三个位置(b),截取3个字符
上述过程相当于:
String s=new String("bus");
d)引用字符串常量对象
字符串常量是对象,因此可以把字符串常量的引用赋值给一个字符串变量,例如:
String s1,s2;
s1="how are you";
s2="how are you";
分析:"how are you"是个字符串常量,所以在内存中的地址是固定的,赋值给了s1和s2,就说明s1和s2用的是同一个空间
2.字符串的常用方法
1)public int length()
使用String类中的length()方法可以获取一个字符串的长度,如
String s="we are student",tom="我们是学生";
int n1,n2,n3;
n1=s.length(); //n1的值是15
n2=tom.length(); //n2的值是5.
n3="we are student=我们是学生".length();// n3的值是21
2)public boolean equals(String s)
字符串对象调用String类中的equals方法,比较当前字符串对象的实体是否与参数指定的字符串s的实体相同,如:
String tom=new String("we are student");
String boy=new String("We are students");
String jerry=new String(tom);
则:tom.equals(boy)或tom.equals(jerry) 的值都是true 因为比较是是实体,即字符串本身(各个位置的字符与长度是否相同)
注意:如果是tom==jerry或tome==boy 的值就是false,因为new了之后,字符串就是对象,tom,boy,jerry是引用值(地址),因为每个对象在创建后都有自己的内存空间,所以用"=="比较当然会不同喽
字符串对象调用public boolean equalsIgnoreCase(String s) 比较当前字符串对象与参数指定的字符串s是否相同,比较时候忽略大小写.
仔细体会下面的例子:
class E
{ public static void main(String args[])
{ String s1,s2;
s1=new String("we are students");
s2=new String("we are students");
System.out.println(s1.equals(s2));//字符串实体相同,输出结果是true
System.out.println(s1==s2); //对象各自分配的空间不同,输出结果为false
String s3,s4;
s3="how are you";
s4="how are you";
System.out.println(s3.equals(s4)); //同一个空间,结果为true
System.out.println