java课件-02类库2字符串处理_第1页
java课件-02类库2字符串处理_第2页
java课件-02类库2字符串处理_第3页
java课件-02类库2字符串处理_第4页
java课件-02类库2字符串处理_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JDK类库字符串处理上一章回顾Object类2本章节授课目标String类StringBuffer类StringBuilder类3String类4String类概述Java中的String类用于处理字符串常量。String类位于java.lang包,属于final类型修饰符。String类使用utf-16编码格式存储字符串数据。5String类构造方法String()构造一个指向空字符串(“”)的空字符串。因String指向的数据不可变,因此很少需要使用无参数构造函数。String(byte[]bytes)根据传入的字节数组构造一个字符串对象。String(char[]value)使用一个字符数组构造一个新的字符串对象。byte[]bytes={97,98,99};Strings=newString(bytes);System.out.println(s);输出abcchar[]chrs={'a','中','文','s','t','r','i','n','g'};Strings=newString(chrs);6String类构造方法String(Stringstr)根据传入的构造函数参数字符串创建出来一个新的字符串对象。String(StringBufferbuffer)根据一个StringBuffer类实例构造一个新的字符串对象。String(StringBuilderbuilder)根据一个StringBuilder类实例构造一个新的字符串对象。Stringsource="唐山启奥实训";Stringtarget=newString(source);System.out.println(source==target);输出false7字符串常量除了使用构造方法创造新的字符串对象以外,还可以使用字符串常量构造新的字符串对象。示例:Stringsource="唐山启奥实训“;8字符串常量字符串常量与编译器优化StringA=“启奥实训“;StringB=“启奥实训“;StringC=“ABC“;System.out.println(A==B);内存变量true9下面的代码输出什么?StringA="启奥实训";StringB=A;A="aaa";System.out.println(B);String是引用类型String值是常量10字符串常量与String构造函数StringA="启奥实训";StringB="启奥实训";StringD=newString(A);System.out.println(A==D);false内存11valueOf方法通过其它数据创造String类实例:String包含大量的重载的valueOf方法用来构造新的字符串实例数据valueOf(boolean)valueOf(char)valueOf(int)valueOf(long)valueOf(float)valueOf(double)示例:Strings=String.valueOf(100);System.out.println(s);12length()方法取字符串长度length()方法可以通过调用length()方法取得字符串长度值。示例:Strings=“TESTSTRING";System.out.println(s.length());13isEmpty方法判断字符串是否包含数据isEmpty()方法isEmpty()方法用于判断字符串是否含有字符数据,注意什么都不含有是相当于有一个0长度的字符串,不是null状态。示例:Strings="";System.out.println(s.isEmpty());System.out.println(null==s);falsetrue14isEmptyisEmpty的另外一个示例:结果15charAt(x)方法返回字符串中某一个位置的字符数据charAt(intindex)charAt用于返回字符串中某一位置的字符数据,如果字符串中不包含传入的位置对应的字符数据,会抛出异常。示例:Strings="1234";System.out.println(s.charAt(2));System.out.println(s.charAt(4));3报错第一个元素是从0开始的16getBytes()方法可以使用getBytes()方法将字符串中的数据转成字节数组使用,例如用来保存到硬盘中或通过网络传递等。getBytes()按照JVM平台缺省的字符集去做字符串到字节数组的转换。getBytes(字符集)按照指定的的字符集去做字符串到字节数组的转换。示例:Strings="将会写到硬盘的字符串数据.";byte[]bytes=s.getBytes();java.io.FileOutputStreamfos=newFileOutputStream(newFile("d://test.txt"));fos.write(bytes);fos.close();17getBytes()方法getBytes与字符集的关系缺省平台字符集编码格式时Iso-8859-1字符集编码格式时18equals如何判断两个字符串内容是否完全相同?equals方法可以判断两个字符串对象的等同性,即包含的字符串内容值是否相同。equals方法判断的过程是区分大小写的。示例:Strings1="abc";Strings2="Abc";Strings3="abc";System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));输出false输出true19equalsIgnoreCase如何不区分大小写的判断两个字符串内容是否相同?equalsIgnoreCase方法用于忽略大小写去判断两个字符串是否具有等同性,即忽略大小写的情况是否相同。示例:Strings1="abc";Strings2="Abc";System.out.println(s1.equals(s2));System.out.println(s1.equalsIgnoreCase(s2));输出false输出true20startsWith判断字符串是否以某一字符串开始startsWith用于判断字符串的启始内容是否以某一字符串开始的,是的话返回true,否则返回false。示例:Strings1="欢迎来到河北唐山启奥实训基地";System.out.println(s1.startsWith("欢迎"));21endsWith判断某一字符串是否以某一个字符串结尾的endsWith判断字符串是否以某一个字符串结束,如果是返回true,否则返回false。示例:Strings1="欢迎来到河北唐山启奥实训基地";System.out.println(s1.endsWith("基地"));22indexOf返回某一个字符子串的首次出现位置indexOf在字符串中查找第一次出现子串的位置,如果找不到返回-1示例:Strings1="欢迎来到河北唐山启奥实训基地";System.out.println(s1.indexOf("启奥"));System.out.println(s1.indexOf("启奥科技"));输出8第一个元素是从0开始的输出-123lastIndexOf返回最后一次出现某一个字符子串的位置lastIndexOf返回在字符串中最后一次出现某一个子串的位置,如果没有出现过子串返回-1。示例:Strings1="欢迎启奥学生来到河北唐山启奥实训基地";System.out.println(s1.indexOf("启奥"));System.out.println(s1.lastIndexOf("启奥"));System.out.println(s1.lastIndexOf("启奥科技"));输出2输出12输出-124substring(int)截取字符串内容substring(intbeginIndex)用于从某一起始位置截取到末尾的字符串内容,如果传入的起始位置非法会报错。示例:Strings1="欢迎来到河北唐山启奥实训基地";System.out.println(s1.substring(4));System.out.println(s1.substring(20));输出:河北唐山启奥实训基地报错25substring截取部分字符串substring(intbeginIndex,intendIndex)用于截取知道起始位置到指定结束位置的字符串,如果给定的位置无效则报错。示例:Strings1="欢迎来到河北唐山启奥实训基地";System.out.println(s1.substring(8,10));System.out.println(s1.substring(0,100));启奥报错26concat连接两个字符串concat用于连接两个字符串后形成一个新的字符串。示例:Strings1="欢迎来到";Strings2="启奥实训基地";Strings3=s1.concat(s2);System.out.println(s3);更多的情况是使用+来拼接出一个新的字符串出来。27split字符串分割String[]split(Stringregex)用于按照regex指定的分隔符分割字符串到一个数组中,即把一个很长的字符串按照指定的分隔符拆分到不同的短小字符串组成的数组中。示例:Strings1="a,b,c";String[]sArrays=s1.split(",");for(Strings:sArrays){System.out.println(s);}Strings1="a#b#c";String[]sArrays=s1.split("#");for(Strings:sArrays){System.out.println(s);}28大小写转换大小写转换toLowerCase将字符串转换为小写形式。toUpperCase将字符串转换为大写形式。示例:Strings1="aBcDef";Strings2=s1.toLowerCase();Strings3=s1.toUpperCase();System.out.println(s2);System.out.println(s3);abcdefABCDEF29去空格去空格trim()去除字符串两端的空格,返回去空格以后的结果字符串。示例:Strings1="abc";Strings2=s1.trim();System.out.println(s2);输出:abc,注意字符间有空格30字符串内容替换部分字符串内容替换replaceFirst(Stringregex,Stringreplacement)按照regex提供的正则表达式值,替换第一次出现的匹配内容变成replacement值。示例:Strings1="abcb";Strings2=s1.replaceFirst("b","e");System.out.println(s2);输出:aecb31replaceAll替换所有匹配的字符串内容到某一字符串replaceAll(Stringregex,Stringreplacement)根据regex的正则表达式去匹配字符串内容,把所有匹配的内容替换为replacement的值。示例:Strings1="abc,abcd,abcde";Strings2=s1.replaceAll("bc","gg");System.out.println(s2);32正则表达式正则表达式涉及的知识点太多,这里不展开进行讲述,请同学们课余时间自己了解与正则表达式相关的知识。33字符串转换34其它数据类型转为字符串类型一般是通过toString()方法实现。示例:IntegerI=newInteger(100);Stringstr=I.toString();java.util.Dated=newDate();System.out.println(d.toLocaleString());如果有额外的向字符串类型转换的方法,也都接近于toString35StringBuffer与StringBuilder类36String类是用来处理字符串常量的,即String对象所处理的是不可改变的字符串常量,如果需要处理变长的字符串操作,可以使用如下两个类:StringBufferStringBuilder各种操作字符串的类特性比较表格名称类型执行速度线程安全适用场合String字符串常量慢-少量字符串StringBuffer字符串变量快安全大量串,多线程StringBuilder字符串变量最快不安全大量串,单线程37StringBuffer使用StringBuffer类常用方法介绍StringBuffer()按照默认初始缓冲大小创造一个新的实例,缺省缓冲区大小为16,即在保存前16个字符时涉及不到重新的缓冲大小分配。StringBuffer(intcapacity)按照指定的大小设置初始缓冲区大小。StringBuffer(Stringstr)按照指定的字符串内容构造初始缓冲区内容并预留16个字符的额外缓冲可用空间(为了提升操作效率)。38StringBuffer使用追加字符串内容append(Stringstr)追加str内容到缓冲区末尾。注意append()有多达13种重载形式,可以追加的数据类型有很多。示例:StringBuffersb=newStringBuffer(2);sb.append("天气");sb.append("不错");System.out.println(sb.toString());输出:天气不错39StringBuffer使用插入字符串内容insert()有12种重载的insert方法,基本形式都是在指定的位置插入待插入内容。insert示例:StringBuffersb=newStringBuffer();sb.append("小明是个程序员");sb.insert(4,"好学的");System.out.println(sb.toString());输出:小明是个好学的程序员40StringBuffer使用修改字符串内容replace(intstart,intend,Stringstr)替换字符串内容,从start开始的位置,到end的位置结束,不替换end位置上的字符内容。示例:StringBuffersb=newStringBuffer();sb.append("abcde");sb.replace(0,2,"@");System.out.println(sb.toString());输出:@cde41获取字符串内容获取StringBuffer中的字符串内容toString()方法用于获取StringBuffer中的字符串内容。示例:StringBuffersb=newStringBuffer();sb.append("孩儿立志出乡关,学不成名誓不还");System.out.println(sb.toString());42线程安全线程安全与线程不安全示例:43publicclassShinowTestThreadextendsThread{//staticStringBuildersb=newStringBuilder();staticStringBuffersb=newStringBuffer();publicvoidrun(){while(true){sb.append("aa");sb.delete(0,sb.length());if(sb.length()>0){System.out.println("someinfo");}}}publicstaticvoidmain(String[]args){newShinowTestThread().start();newShinowTestThread().start();newShinowTestThread().start();newShin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论