unicorn的java课堂笔记(9)上

作者在 2006-12-17 21:41:00 发布以下内容
第九节课

字符串

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
转帖&&连载 | 阅读 1015 次
文章评论,共1条
海啸南风(作者)
2007-02-25 18:30
1
对不起,误会了,这个不是我的笔记,作者叫unicorn,在编程中国的java论坛上发表的,我只是收集下来而已。
我喜欢java,但我向来不喜欢记笔记:)见笑了
如果喜欢玩java的GUI的话,左边目录里"java开拓"中有一些我在GUI方面的总结。欢迎一起研究
游客请输入验证码