您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > JavaSE-字符串基本操作1
JAVA基础课程-字符串基本操作JAVA基础课程-字符串基本操作String是不可变对象•java.lang.String使用了final修饰,不能被继承;•字符串底层封装了字符数组及针对字符数组的操作算法;•字符串一旦创建,对象永远无法改变,但字符串引用可以重新赋值;•Java字符串在内存中采用Unicode编码方式,任何一个字符对应两个字节的定长编码。JAVA基础课程-字符串基本操作String常量池•Java为了提高性能,静态字符串(字面量/常量/常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串;•对于重复出现的字符串常量,JVM会首先在常量池中查找,如果存在即返回该对象。JAVA基础课程-字符串基本操作String常量池/**测试String常量池*/publicvoidtestConstantPool(){Stringstr1=Hello;//不会创建新的String对象,而是使用常量池中已有的HelloStringstr2=Hello;System.out.println(str1==str2);//输出?//true//使用new关键字会创建新的String对象Stringstr3=newString(Hello);System.out.println(str1==str3);//输出?//false}JAVA基础课程-字符串基本操作内存编码及长度String在内存中采用Unicode编码,每个字符占用两个字节;任何一个字符(无论中文还是英文)都算1个字符长度,占用两个字节。/**获取String对象的长度*/publicvoidtestLength(){Stringstr1=Hello;System.out.println(str1.length());//5Stringstr2=你好,String;System.out.println(str2.length());//9}JAVA基础课程-字符串基本操作使indexOf实现检索indexOf方法用于实现在字符串中检索另外一个字符串String提供几个重载的indexOf方法String还定义有lastIndexOf方法JAVA基础课程-字符串基本操作使indexOf实现检索/**在一个字符串中检索另外一个字符串*/publicvoidtestIndexOf(){Stringstr=Icanbecauseithinkican;intindex=str.indexOf(I);System.out.println(index);//0index=str.indexOf(can);System.out.println(index);//2index=str.lastIndexOf(can);System.out.println(index);//24index=str.indexOf(can,6);System.out.println(index);//24index=str.lastIndexOf(Can);System.out.println(index);//-1}JAVA基础课程-字符串基本操作使用substring获取子串•substring方法用于返回一个字符串的子字符串。•substring常用重载方法定义如下:JAVA基础课程-字符串基本操作使用substring获取子串/**在一个字符串中截取指定的字符串*/publicvoidtestSubstring(){Stringstr==str.substring(11,17);System.out.println(subStr);//oraclesubStr=str.substring(7);System.out.println(subStr);//}JAVA基础课程-字符串基本操作tirm(查阅API)/**去掉一个字符串的前导和后继空字符*/publicvoidtestTrim(){StringuserName=goodman;System.out.println(userName.length());//12userName=userName.trim();System.out.println(userName.length());//8System.out.println(userName);//goodman}JAVA基础课程-字符串基本操作charAt(查阅API)String中定义有charAt()方法/**遍历一个字符串中的字符序列*/publicvoidtestCharAt(){Stringname=Whatisjava?;for(inti=0;iname.length();i++){charc=name.charAt(i);System.out.print(c+);}//Whatisjava?}JAVA基础课程-字符串基本操作startsWith和endsWith(查阅API)/**检测一个字符串是否以指定字符串开头和结尾*/publicvoidtestStarWithAndEndWith(){Stringstr=Thinkinginjava;System.out.println(str.endsWith(java));//trueSystem.out.println(str.startsWith(T));//trueSystem.out.println(str.startsWith(thinking));//false}JAVA基础课程-字符串基本操作大小写变换(查阅API)/**转换字符串中英文字母的大小写形式*/publicvoidtestToUpperCaseAndToLowerCase(){Stringstr=我喜欢Java;str=str.toUpperCase();System.out.println(str);//我喜欢JAVAstr=str.toLowerCase();System.out.println(str);//我喜欢java}JAVA基础课程-字符串基本操作valueOf(查阅API)/**将其他类型转换为字符串类型*/publicvoidtestValueOf(){doublepi=3.1415926;intvalue=123;booleanflag=true;char[]charArr={'a','b','c','d','e','f','g'};Stringstr=String.valueOf(pi);System.out.println(str);str=String.valueOf(value);System.out.println(str);str=String.valueOf(flag);System.out.println(str);str=String.valueOf(charArr);System.out.println(str);}JAVA基础课程-字符串基本操作StringBuilder封装可变字符串StringBuilder分装可变的字符串,对象创建后可以通过调用方法改变其封装的字符序列。StringBuilder有如下常用构造方法:publicStringBuilder();publicStringBuilder(Stringstr);Stringsql=“select*fromuserInfowhere1=1”;If(username!=null){sql=sql+“andusername=”+username;}If(password!=null){sql=sql+“andpassword=”+password;}JAVA基础课程-字符串基本操作StringBuilder常用方式JAVA基础课程-字符串基本操作StringBuilderStringBuilder的很多方法的返回值均为StringBuilder类型。这些方法的返回语句均为:returnthis.由于改变封装的字符序列后又返回了该对象的引用。可以按照如下简洁的方式书写代码:buf.append(ibm).append(java).insert(3,oracle).replace(9,13,JAVA);System.out.println(buf.toString());JAVA基础课程-字符串基本操作append方法(查阅API)/**测试StringBuilder的append方法*/publicvoidtestAppend(){StringBuilderbuf=newStringBuilder(ProgrammingLanguage);buf.append(java).append(cpp).append(c#).append(objective-c);System.out.println(buf.toString());}JAVA基础课程-字符串基本操作insert(查阅API)/**测试StringBuilder的insert方法*/publicvoidtestInsert(){StringBuilderbuf=newStringBuilder(javacppc#objective-c);buf.insert(9,php);System.out.println(buf);}JAVA基础课程-字符串基本操作delete(查阅API)/**测试StringBuilder的delete方法*/publicvoidtestDelete(){StringBuilderbuf=newStringBuilder(javaoraclecpp#php);buf.delete(4,4+6);System.out.println(buf);}JAVA基础课程-字符串基本操作StringBuilder总结•StringBuilder是可变字符串。字符串的内容计算,建议采用StringBuilder实现,这样性能会好一些;•java的字符串连接的过程是利用StringBuilder实现的Strings=AB;Strings1=s+DE+1;Strings1=newStringBuilder(s).append(DE).append(1).toString();•StringBuffer和StringBuilder-StringBuffer是线程安全的,同步处理的,性能稍慢-StringBuilder是非线程安全的,并发处理的,性能稍快JAVA基础课程-字符串基本操作StringBuffer•StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。•所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。•由于StringBuffer是线程安全的,关于线程的概念后续有专门的章节进行介绍,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。JAVA基础课程-字符串基本操作StringBuffer对象初始化•StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。StringBuffers=newStringBuffer();//这样初始化出的StringBuffer对象是一个空的对象。如果需要创建带有内容的StringBuffer对象,则可以使用:StringBuffers=newStringBuffer(“abc”);//这样初始化出的StringBuffer对象的内容就是字符串”abc”。。JAVA基础课程-字符串基本操作StringBuffer与String之间相互转换Strings=abc;StringB
本文标题:JavaSE-字符串基本操作1
链接地址:https://www.777doc.com/doc-1387264 .html