4[1].2字符串与字符串缓冲区讲稿.doc

上传人:ni****g 文档编号:562012524 上传时间:2022-12-01 格式:DOC 页数:28 大小:148.01KB
返回 下载 相关 举报
4[1].2字符串与字符串缓冲区讲稿.doc_第1页
第1页 / 共28页
4[1].2字符串与字符串缓冲区讲稿.doc_第2页
第2页 / 共28页
4[1].2字符串与字符串缓冲区讲稿.doc_第3页
第3页 / 共28页
4[1].2字符串与字符串缓冲区讲稿.doc_第4页
第4页 / 共28页
4[1].2字符串与字符串缓冲区讲稿.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《4[1].2字符串与字符串缓冲区讲稿.doc》由会员分享,可在线阅读,更多相关《4[1].2字符串与字符串缓冲区讲稿.doc(28页珍藏版)》请在金锄头文库上搜索。

1、4.2字符串相和字符串缓冲区1.字符串:指的是类java.lang.String的实例对象。(包 java.lang 提供利用 Java 编程语言进行程序设计的基础类,是可以自动导入的软件包,不需import语句导入这个包。)Java.lang.String的实例对象一旦创建,则它所包含的字符序列就不能发生变化。2.字符串缓冲区类java.lang.StringBuffer与字符串类java.lang.String相似,不过类java.lang.StringBuffer的实例对象所包含的字符序列可以被修改。可以简写为:String和StringBuffer一、String1.构造字符串对象的方

2、法(四种)1)直接采用字符串直接常量的方式例如:“abc”,是包含字符a、b、c的字符序列。2)构造字符串实例对象New String(构造方法的调用参数列表);一些常用的构造方法:a)java.lang.String的构造方法 public string()java.lang.String的构造方法 public string()String s1;s1=new String(hello there);String s1=new String();/s1指向一个空字符串对象String s2=null;/s2不指向任何一个字符串对象b) java.lang.String的构造方法 publi

3、c string(byte bytes)创建一个字符串对象其中字节数组bytes指定该字符串对象所包含的字符序列c) java.lang.String的构造方法 public string(char value)创建一个字符串对象其中字符数组value指定该字符串对象所包含的字符序列d) java.lang.String的构造方法 public string(String original)创建一个字符串对象,新创建的字符串对象复制一份与字符串original完全相同的字符序列。这里的original不允许为null。e) java.lang.String的构造方法 public string

4、(StringBuffer buffer)创建一个字符串对象,新创建的字符串对象拥有一份与字符串缓冲区buffer相同的字符序列。3)通过成员方法生成java.lang.String的实例对象在java语言中,任何一种类型的数据都可以转化成字符串类型的数据。对于基本数据类型的数据,可以功过类java.lang.String的成员方法将相应的数值转换成为字符串。这些成员方法创建新的字符串对象,它所包含的字符序列对应这些方法参数指定的值:(1)public static string valueof(boolean b)(2) public static string valueof(char c

5、)(3) public static string valueof(int i)(4) public static string valueof(long l)(5) public static string valueof(float f)(6) public static string valueof(double d)例如:String s1=String.valueof(true);创建一个包含字符t、r、u、e的字符串对象String s1=String.valueof(12);创建一个包含字符1、2的字符串对象对于引用类型的数据,可以通过类java.lang.String的成员方法

6、Public static string valueof(object obj)将参数obj指定的数据转换为字符串。转换的结果生成一个新的字符串对象。如果参数obj为null,则新生成的字符串对象包含字符n、u、l、l。如果obj的值不是null,则新生成的字符串对象实际上是方法调用“obj.toString()”返回的结果。在java语言中,任何一个类都含有成员方法Public string toString():该成员方法通常根据当前对象创建一个对应的字符串对象,并返回该字符串对象的引用值。如果调用该成员方法的对象是字符串对象,则该成员方法并不创建一个新的字符串对象,而是直接返回当前对象的

7、引用。4)通过运算符”+”创建字符串对象String s1=”123”+”456”;注意:混用情况String s1=”123”+45+678/s1与”12345678”相同String s2=123+45+”678”;/s2与“168678相同”二、类Java.lang.String 的成员方法(1)length( ), 返回 String 的长度如果是字符串的话,求长度只能是.length()方法,不是.length 因为这将被认为是对象的属性,字符串没有.length属性,而数组使用数组具有length属性,通过它得到数组的长度。(2)charAt(int index) :获得字符串指定

8、位置的字符例如:用charAt(int index)方法 和length()方法在一个字符串中判断一个字符是否存在,若存在则返回其所在位置class Main public static void main(String args) String str=abcdefg;/有一个字符串str /下面我们在字串str中寻找字符e for(int i=0;istr.length();i+)/从字符串第一个字符找起,注意是从0开始算 if(str.charAt(i)=e)/如果找到字符e,打印出在第几位 System.out.println(i); break; else if(i=str.leng

9、th()-1)/如果到最后一位还不存在,打印不存在 System.out.println(不存在); (3)getChars( ):方法,将字符从此字符串复制到目标字符数组。getChars(int srcBegin, int srcEnd, char dst, int dstBegin) 要复制的第一个字符在索引 srcBegin 处;要复制的最后一个字符在索引 srcEnd-1 处(因此要复制的字符总数是 srcEnd-srcBegin),要复制到 dst 子数组的字符从索引 dstBegin 处开始。例如:class main public static void main(String

10、 args)String s1;char charArray;s1=new String(hello there);charArray=new char5;s1.getChars(0,5,charArray,0);for (int i=0;icharArray.length;i+)System.out.print(charArrayi);*字符串比较:.= 运算符:当用于基本数据类型时,用于判别是否相等.当用于引用数据类型时,用来判别引用是否指向相同的对象(string1=string2):但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false,Java中必须使用strin

11、g1.equals(string2)来进行判断(“=是比较两个对象的地址(栈里的内容)” ,string1.equals(string2)比较两个对象的内容(堆里的内容)例如:string s1=new String(Hello); string s2=new String(Hello); (用new创建的s1和s2分别引用了两个”Hello”String对象)则(s1=s2)=false 如果: string s1=Hello; string s2=Hello; (s1和s2引用同一个对象“Hello”)则(s1=s2)=true; /*对于java程序中的字符直接量,JVM会使用一个字串池

12、来保存它们。当第一次使用某个字符串直接量时, JVM会将它放入字符串池中进行缓存。在一般情况下,字符串池中的字符串对象不会被垃圾回收。 当程序再次需要使用该字符串时,无需重新创建一个新的字符串就可以直接让引用变量直接指向字符串池中已有的字符串。 而使用new操作创建的字符串对象不指向字符串池中的对象。*/class main public static void main(String args)String s1,s2;boolean t;s1= hello;s2 = new String( hello );t=s1 = hello; / trueSystem.out.println(t);

13、t=s2 = hello;/falseSystem.out.println(t);class main public static void main(String args)boolean t;String s1 = asd; String s2 = asd;t=s1=s2;System.out.println(t);/*程序运行结果是true,String比较特殊,它一旦初始化了之后,值就不会再改变了,所以为了节约内存空间,如果初始化的字符串在内存空间中是存在的,则其引用直接指向该字符串,所以你前面有了一个String s1 = asd;当声明s2的时候发现内存中有了一个asd了,就不再开

14、辟内存空间,直接将s2指向了开头得asd,所以s1和s2实际上是指向了同一块堆内存,所以结果是true*/*字符串(String)比较方法:boolean equals(Object anObject) 比较当前的字符串与指定的对象内容是否相同s1.equals(s2)比较结果为真当且仅当给定的参数不为空,并且具有完全相同的字符序列。 例如: public class string5public static void main(String args)String s1=abc,s2=a b c,s3;s3 = new String( abc );System.out.println(s1.

15、equals(s2);/falseSystem.out.println(s1.equals(s3);/trueboolean equalsIgnoreCase(String anotherString)判别相等,但不区分大小写例如: 在不区分大小写情况下, “hello”与“HELLO”相等public class string6public static void main(String args)String s1=abc,s2=a b c,s3;s3 = new String( ABC );System.out.println(s1.equalsIgnoreCase(s2);/falseSystem.out

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号