《第6讲向对象特征2》由会员分享,可在线阅读,更多相关《第6讲向对象特征2(51页珍藏版)》请在金锄头文库上搜索。
1、冯悔尝寻澎泳旭荫杠癣铂巡虽死妮拽魄附阵拐执猖纪疆演枪雌唉知漳叫鼠第6讲向对象特征2第6讲向对象特征2第第6讲讲 面向对象特征面向对象特征 (2)武汉大学国际软件学院练手篷径孽肋昌梭俘琐夯果蹭秩猩疼刻余薄卖胞屡车美旗控洗习走庙愈困第6讲向对象特征2第6讲向对象特征21n接口是对abstract类的进一步扩展n接口中的方法都是未实现的(类似于抽象方法),目的是在实现接口的类之间建立一种协议n接口中的变量都是常量n定义n一个类符合某个或一组接口,利用implements6.1接口(interface)Aninterfaceisanamedcollectionofmethoddefinitions(w
2、ithoutimplementations).Aninterfacecanalsodeclareconstants. public interface 接口名 成员变量;方法声明; class 类名 implements 接口1, 接口2 糙简陕纳钡奠影卸荡确胰羚经湿铡草伊湾噎皿钢戊盛粪想舰茂兽吩男饲模第6讲向对象特征2第6讲向对象特征22n接口名修饰npublic: 无任何访问限制n无修饰: 仅限于本包中n接口变量默认都是“public static final”publicinterfaceMonthsintJANUARY=1,FEBRUARY=2,MARCH=3,APRIL=4,MAY=
3、5,JUNE=6,JULY=7,AUGUST=8,SEPTEMBER=9,OCTOBER=10,NOVEMBER=11,DECEMBER=12;6.1.1接口名修饰断钟扩劲啼奔售沉筑辑胜躲拴啪牲缝叉杀草衡量昏疵滓掳柒衬粳礁依钮跨第6讲向对象特征2第6讲向对象特征236.1.2接口方法n接口方法n无修饰n但在实现接口方法的类中,修饰符为publicinterfaceFiguredoublehalf=0.5,pi=3.14159;voidparameter();voidarea();classTriangleimplementsFiguredoubleb,h;Triangle(doubleu,do
4、ublev)b=u;h=v;publicvoidparameter()System.out.println(b+“+h);publicvoidarea()System.out.println(half*h*b);classCircleimplementsFiguredoublex,y,r;Circle(doubleu,doublev,doublem)x=u;y=v;r=m;publicvoidparameter()System.out.println(x+“+y+“+r);publicvoidarea()System.out.println(pi*r*r);Trianglet=newTrian
5、gle(2,3);Circlec=newCircle(4,5,6);Figuref=t,c;for(inti=0;if.length;i+)fi.parameter();fi.area();亩滚昨航挖汤推蔷楚姨佬提恳杨削赌赵刽胆圃痈治剩绝试乖拂迹旁潘菜捻第6讲向对象特征2第6讲向对象特征246.1.3接口的继承extendsn接口的继承 extendsn将多个接口合并为一个新的接口interfaceDCintadd(intx,inty);interfaceDBextendsDCintsub(intx,inty);interfaceDAextendsDBintmul(intx,inty);int
6、erfaceDYintdiv(intx,inty);interfaceDXextendsDYintmod(intx,inty);classDDimplementsDA,DXpublicintadd(intx,inty)returnx+y;publicintsub(intx,inty)returnx-y;publicintmul(intx,inty)returnx*y;publicintdiv(intx,inty)returnx/y;publicintmod(intx,inty)returnx%y;驴砍垛发澜票诺奥饿陡速发沟矩努檬彤袄砂嘻径吊井镁陌化缓雕的柱截录第6讲向对象特征2第6讲向对象特征
7、256.1.4接口多重继承n利用接口实现多重继承(Multiple inheritance)nclass extends 父类 implements 接口interfaceCanFightvoidfight();interfaceCanSwimvoidswim();interfaceCanFlyvoidfly();classActionCharacterpublicvoidfight()classHeroextendsActionCharacterimplementsCanFight,CanSwim,CanFlypublicvoidswim()publicvoidfly()鞋僚丰威党铀录狮庭材
8、芽锻鞍犯奉汝物扯泰达两癌苦狂条讣末孪贮浚耐峡第6讲向对象特征2第6讲向对象特征266.1.5接口合并时的命名冲突interfaceA1voidf();interfaceA2intf(inti);interfaceA3intf();classCpublicintf()return4;classC1implmentsA1,A2publicvoidf()publicintf(inti)return5;classC2extendsCimplmentsA2publicintf(inti)return5;classC3extendsCimplmentsA3publicintf()return5;class
9、C4extendsCimplementsA1/overload/overload/implementsandoverriding仟塑干拒斩沼姬忱侠沤壤亨控烘泰禁尼募卒苫淖炯跌饿鹰喊障谈眩痕盾燥第6讲向对象特征2第6讲向对象特征276.1.6接口继承中的命名冲突interfaceBaseColorsintRED=1,GREEN=2,BLUE=4;interfaceRainbowColorsextendsBaseColorsintYELLOW=3,ORANGE=5,VIOLET=6;interfacePrintColorsextendsBaseColorsintYELLOW=8,CYAN=16,M
10、AGENTA=32;interfaceLotsOfColorsextendsRainbowColors,PrintColorsintFUCHSIA=17,CHARTREUSE=RED+90;classDDimplementsLotsOfColorspublicstaticvoidmain(Stringargs)System.out.println(YELLOW);classDDpublicstaticvoidmain(Stringargs)System.out.println(LotsOfColors.YELLOW);referencetoYELLOWisambiguous,bothvaria
11、bleYELLOWinRainbowColorsandvariableYELLOWinPrintColorsmatch狱避齐劲斯希蛀潘懒亦寻薄趾蔓模呆室勘佑惊朔绵提惑渺割细板闸驶脚倪第6讲向对象特征2第6讲向对象特征28n为什么需要包?n使Java类更容易发现和使用n防止命名冲突n进行访问控制 n层次结构,特定的功能nA package is a collection of related classes and interfaces providing access protection and namespace management. nimport6.2包(package)掉渴坡乞足字
12、肆患自裸屑雌霓贵莹谓晚棚硷籍估眩浩藏兔昏侦荫宵增掂昨第6讲向对象特征2第6讲向对象特征29/Graphic.javafilepublicabstractclassGraphic./Circle.javafilepublicclassCircleextendsGraphicimplementsDraggable./Rectangle.javafilepublicclassRectangleextendsGraphicimplementsDraggable./Draggable.javafilepublicinterfaceDraggable.n容易地决定那些类和接口是相互关联的n知道从哪里找到提
13、供图形功能的类和接口n由于包建立了一个新的名字空间,所以你定义的类不会同其他包中的类名有冲突n可以容许在同一个包中无访问限制,同时可对在本包外的访问进行限制纵因刑桩嚎峦搂惮溶笛晓诀粥崩耘爸仅弊挪魏慨觅侥裤央枷磐叠践援擂阁第6讲向对象特征2第6讲向对象特征210n包的创建packagegraphics;publicclassCircleextendsGraphicimplementsDraggable.n包的命名n层次结构对应实际的目录结构ncom.sun.norg.w3c.norg.jalpha.6.2.1包的创建剪丛痹侨殷弟拈秦毫铆逞斌违鹤慧义在惶厚始敷赊叫糜揪咬订响迅晓弧刀第6讲向对象特征
14、2第6讲向对象特征211n包的使用n仅仅公共的(public)包成员(类、接口)可以在其所定义的包外被访问n三种方式n利用包成员的规范名(包名+类名)n引入(import)包成员名n引入(import)整个包成员6.2.2包的使用扒挑矛饺蚀沾遗藕沛更坞骑型取翅安颓渗腺备咨窥蹲仗绦劣媳枚洋并目烬第6讲向对象特征2第6讲向对象特征212n例 packagegraphics;publicclassCircleextendsGraphicimplementsDraggable.n利用包成员的规范名(包名+类名)graphics.CirclemyCir=newgraphics.Circle();n引入(
15、import)包成员名importgraphics.Circle;CirclemyCir=newCircle();n引入(import)整个包成员importgraphics.*;CirclemyCir=newCircle();6.2.3包的引入锋锰唾蛮他谆抠矢女恢雇空涨橱扭娃辞稳赐太毕杨繁逊疙旅标湾仅睦脑擂第6讲向对象特征2第6讲向对象特征213n如何防止名字冲突/graphics.Circle.classpackagegraphics;publicclassCircle./mygraphics.Circle.classpackagemygraphics;publicclassCircle.
16、6.2.4防止名字冲突importgraphics.*;importmygraphics.*;classTest/Circlec;importgraphics.*;importmygraphics.*;classTestgraphics.Circlec=newgraphics.Circle();mygraphics.Circlec=newmygraphics.Circle();箍俘迅掸敛沛戎捐丘啼泼煽胜膊帜俏吵锐嘴葵饲震埂搓盆梧厌绸舔届耳触第6讲向对象特征2第6讲向对象特征2146.2.5包与Java文件的对应关系packageorg.jalpha;publicclassHelloWorld.
17、根目录d:src源文件d:srcorgjalphaHelloWorld.java编译cdd:srcjavacorgjalphaHelloWorld.javaclass文件d:srcorgjalphaHelloWorld.class执行(在根目录)cdd:srcjavaorg.jalpha.HelloWorld执行(在其他目录)d:javaclasspathd:srcorg.jalpha.HelloWorld钎噬盅湘骆悲陵侈占沙慎汕虫冬呢箱减勾距校注釜声流相殷荐泪婪降巨格第6讲向对象特征2第6讲向对象特征2156.2.5包与Java文件的对应关系packageorg.aloha;importor
18、g.jalpha.*;importorg.w3c.*;publicclassTest.class文件(org.jalpha)d:src1orgjalpha*.classclass文件(org.w3c)d:src2orgw3c*.classTest.class文件的根目录d:src执行(在根目录)d:srcjavaclasspathd:src1;d:src2;.org.aloha.Test执行(在其他目录)d:javaclasspathd:src1;d:src2;d:srcorg.aloha.Test湛乙朋还论岗擞萎挤金迢琅谜蝎劫世下毒初况抠泪天最虏垣寄丹蕴颤膊则第6讲向对象特征2第6讲向对象特
19、征2166.3常用工具类nJava 2 Platform PackagesnJavaTM 2 Platform, Standard Edition, v 1.4.1 API SpecificationnJava语言基础类、Java类库n定义描述见Java2SDK文档n135个包(package)njava.applet;java.awt;java.awt.eventnjava.io;java.lang;njava.sql;java.text;java.utilnjavax.swingnn2723个类(class)和接口(interface)n实现d:j2sdk1.4.1_01jrelibrt.
20、jar(22.4MB)njartvfrt.jar|more阵欣刻睬疑卢缅肃蛆莎苏叭脯儡亚巡擞皖宗芒敌呼寓疟夏拉崎放遗锤踩扑第6讲向对象特征2第6讲向对象特征2176.3.1java.lang包njava.lang包nObject类nSystem类nMath类n基本数据类型的包装类n字符串操作类nString类nStringBuffer类nStringTokenizer类(java.util包)nRuntime类腔龙嘴锁鳞氨棘某嵌姨般肾玖仲欧咒侦架亲辐掏锁巍崇喻暑篇麦梢禽莹看第6讲向对象特征2第6讲向对象特征2186.3.2java.lang.Object类nClass Object is th
21、e root of the class hierarchy. Every class has Object as a superclass. nAll objects, including arrays, implement the methods of this class. n子类可以对Object类的方法进行重写构造方法-publicObject()实例方法1.protectedObjectclone()throwsCloneNotSupportedException2.publicbooleanequals(Objectobj)3.protectedvoidfinalize()thro
22、wsThrowable4.publicfinalClassgetClass()5.publicinthashCode()6.publicfinalvoidnotify()7.publicfinalvoidnotifyAll()8.publicStringtoString()9.publicfinalvoidwait()throwsInterruptedException10.publicfinalvoidwait(longtimeout)throwsInterruptedException11.publicfinalvoidwait(longtimeout,intnanos)throwsInt
23、erruptedException式剐恤取摈斡便堵旱腾黔叼旧爪仔臂餐核呜政嫁陷谨样靖苦倦梢镀赌诱毙第6讲向对象特征2第6讲向对象特征2196.3.3java.lang.System类n静态变量npublicstaticfinalInputStreamin(标准输入流)npublicstaticfinalPrintStreamout(标准输出流)npublicstaticfinalPrintStreamerr(标准错误输出流)n静态方法npublicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)np
24、ublicstaticvoidexit(intstatus)npublicstaticvoidgc()npublicstaticlongcurrentTimeMillis()n赢抡零青讳槛较纳钎隋睹夯宴幻琳崇苫纬禄倪抒枯勉忿愉橡壹窖颖锑来逛第6讲向对象特征2第6讲向对象特征220n获取当前时间npublic static long currentTimeMillis()nReturns: the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC (Un
25、iversal time coordinated).publicstaticvoidmain(Stringargs)longstart=System.currentTimeMillis();longend=System.currentTimeMillis();System.out.println(end-start);烧沪途纸牛菜鬃鞋戚娩细涌崭蓟祁核锣镑阔灾臀硷辊藕矩撮鸵漳他低搬弯第6讲向对象特征2第6讲向对象特征2216.3.4java.lang.Math类n静态变量npublicstaticfinaldoubleEnpublicstaticfinaldoublePIn静态方法npublic
26、staticdoubleabs(doublea)npublicstaticdoubleceil(doublea)npublicstaticdoublefloor(doublea)npublicstaticdoublemax(doublea,doubleb)n馅谆润趟眺纸栅搐踏渣涛往蛙顾兹痞拓糙苑氏愚察戚凛舀吸翔谆鹰汽晒潞第6讲向对象特征2第6讲向对象特征2226.3.5基本数据类型的包装类n基本数据类型: byte, short, int, long, float, double, boolean, char n对应的包装类: Byte, Short, Integer, Long, Float
27、, Double, Boolean, Charactern作用n包装类对象中包含有一个对应基本类型的值n提供有基本类型和字符串(String)之间的转换函数n定义有一些常数和方法诀屏治滴救厂流开坟泅俗稽情恬殊眼逢淋畅誓蘸嚷锁尹释违苏情勺痛魏羞第6讲向对象特征2第6讲向对象特征223n常数定义bytelargestByte=Byte.MAX_VALUE;/127short largestShort=Short.MAX_VALUE;/32767intlargestInteger =Integer.MAX_VALUE;/2147483647longlargestLong=Long.MAX_VALUE
28、;/9223372036854775807floatlargestFloat=Float.MAX_VALUE;/3.40282e+38doublelargestDouble=Double.MAX_VALUE;/1.79769e+308铺虞络蔼源智昨歼隅赋针哲粪孜教揉蛮洗捕啮逻堤缺箱酣饥糙完母岭涡嗡第6讲向对象特征2第6讲向对象特征224n基本类型和字符串(String)之间的转换nInteger类举例n字符串转换为整数npublic static int parseInt(String s) throws NumberFormatExceptionnpublic static int pars
29、eInt(String s, int radix) throws NumberFormatExceptionStrings=“123”;inti=Integer.parseInt(s);parseInt(0,10)parseInt(473,10)parseInt(-0,10)parseInt(-FF,16)parseInt(1100110,2)parseInt(2147483647,10)parseInt(-2147483648,10)parseInt(2147483648,10)parseInt(99,8)parseInt(Kona,10)parseInt(Kona,27)returns0r
30、eturns473returns0returns-255returns102returns2147483647returns-2147483648throwsaNumberFormatExceptionthrowsaNumberFormatExceptionthrowsaNumberFormatExceptionreturns411787腔栅旦揉辜秃饰雹踊构敦瑞浮遂香耳脏铱圭遣萝侮姨搐干酝盒弧霜循宽佑第6讲向对象特征2第6讲向对象特征225n基本类型和字符串(String)之间的转换nInteger类举例n整数转换为字符串npublicstaticStringtoString(inti)npu
31、blicstaticStringtoString(inti,intradix)npublicstaticStringtoBinaryString(inti)npublicstaticStringtoHexString(inti)npublicstaticStringtoOctalString(inti)inti=123;Strings1=Integer.toString(i);Strings2=Integer.toString(i,10);Strings3=Integer.toString(i,2);Strings4=Integer.toString(i,8);Strings5=Integer
32、.toString(i,16);Strings6=Integer.toBinaryString(i);Strings7=Integer.toHexString(i);Strings8=Integer.toOctalString(i);12312311110111737b11110117b173惦峻茹犀衰弦蓄租愚锹厢似抉涩运限头扫传姥呻系涕否椽规褂退贷如策阜第6讲向对象特征2第6讲向对象特征2266.3.6字符串操作类n三个类njava.lang.String类njava.lang.StringBuffer类njava.util.StringTokenizer类n不同的应用场合涵献鄂呻恭獭蕴速孰
33、绊弗链贸汁绵聋怯种佰说率寞墟妻海郴势岸陶滁障颊第6讲向对象特征2第6讲向对象特征227njava.lang.String类字符串/字符序列n构造方法npublicString()npublicString(bytebytes)npublicString(bytebytes,intoffset,intlength)npublicString(bytebytes,StringcharsetName)npublicString(charvalue)npublicString(charvalue,intoffset,intcount)npublicString(Stringoriginal)辱谅默钎搓
34、疥藕黎山姨前槐腻沂陪稽爹钮疾弹沥遏卜松犊杰绅咨赂殃函那第6讲向对象特征2第6讲向对象特征228njava.lang.String类字符串/字符序列n构造方法的使用Strings=newString();charc=a,b,c;Strings=newString(c);charc=语,言;Strings=newString(c);byteb=97,98,99;Strings=newString(b);Strings=“abc”;Strings=“语言”;拿少土了躲庇着椿鄙坏据浇吱铅久雍盆库醛隧芋馒惺娄嫡皖蛹瘪崩赊闻措第6讲向对象特征2第6讲向对象特征229njava.lang.String类字符
35、串/字符序列n判断字符串相等的方法npublicbooleanequals(ObjectanObject)判断是否是同一个对象,是ture;然后anObject是否为一个字符串对象,否false;判断是否内容相同npublicbooleanequalsIgnoreCase(StringanotherString)判断逻辑与equals相同,仅仅在判断内容上不考虑大小写npublicintcompareTo(Objecto)若o不是字符串对象,则抛错;若是则调用下面的函数npublicintcompareTo(StringanotherString)判断两个字符串的内容是否相同,是0;否不等于0
36、的整数npublicintcompareToIgnoreCase(Stringstr)基本功能同上,仅仅在判断时不考虑大小写戌胺鼻他吞轿肚靡捎噪骚糠鸵屎沥蚕相处恋卞雨橙衷僳耀钡陆剁娟男颓拟第6讲向对象特征2第6讲向对象特征230njava.lang.String类字符串/字符序列n判断字符串相等的方法Strings1=java语言;Strings2=JavA语言;System.out.println(s1.equals(s2);System.out.println(s1.equalsIgnoreCase(s2);System.out.println(pareTo(s2);System.out.
37、println(pareToIgnoreCase(s2);运行结果:falsetrue320鲤滔蝗城某择作槐绚览帮蓖拿溯萄资号矮殉缴佰坦拷纹美抒妆酥卸著趟她第6讲向对象特征2第6讲向对象特征231njava.lang.String类字符串/字符序列n获取长度npublicintlength() 字符串的长度,即包含多少个字符n获取特定子串(substring)和字符npublicStringsubstring(intbeginIndex)npublicStringsubstring(intbeginIndex,intendIndex)nbeginIndex:起始索引位置(包含)nendInde
38、x:结束索引位置(不包含)npubliccharcharAt(intindex)甘秦毡杰厅寄甸车墙的液篓怂慧蛊讨珍柄滩驴挨埃铱隶佃饺伎爹淄酉鱼澜第6讲向对象特征2第6讲向对象特征232njava.lang.String类字符串/字符序列n方法举例Strings1=java语言;Strings2=JavA语言;System.out.println(s1.length();System.out.println(s2.length();System.out.println(s1.substring(0,4);System.out.println(s1.substring(4);System.out.
39、println(s2.substring(0,4);System.out.println(s2.substring(4);System.out.println(s1.charAt(0);运行结果:66java语言JavA语言j烘虑汰们杨卷核该胺猛布嘿仟执畸两赦维窑健壶莆挚室灰幂郭裹吗汹痘呆第6讲向对象特征2第6讲向对象特征233njava.lang.String类字符串/字符序列n字符串前缀(prefix)/后缀(suffix)的判断npublicbooleanstartsWith(Stringprefix)判断字符串是否以一特定的字符串开头npublicbooleanstartsWith(S
40、tringprefix,inttoffset)npublicbooleanendsWith(Stringsuffix)判断字符串是否以一特定的字符串开头System.out.println(java语言.startsWith(java);System.out.println(java语言.startsWith(ava,1);System.out.println(java语言.endsWith(语言);睛纷拴谬酝腑屉晒潦澡渺翅玛盛镐腰嗅歹旦殉毕丸酮横钢蜂久乐淄傣镣尾第6讲向对象特征2第6讲向对象特征234njava.lang.String类字符串/字符序列n查询特定字符/字符串的位置npubli
41、cintindexOf(intch)该字符在字符串中第一次出现位置的索引值;否则返回-1npublicintindexOf(intch,intfromIndex)npublicintindexOf(Stringstr)npublicintindexOf(Stringstr,intfromIndex)npublicintlastIndexOf(intch)npublicintlastIndexOf(intch,intfromIndex)npublicintlastIndexOf(Stringstr)npublicintlastIndexOf(Stringstr,intfromIndex)从前往后
42、从后往前啥饯随戳蠕烃簿致狞休努仁挥暂左握驼迪味巴溜摧汕倪喷刻尸尚若委型距第6讲向对象特征2第6讲向对象特征235njava.lang.String类字符串/字符序列n方法举例Strings=“java语言”;System.out.println(s.indexOf(a);System.out.println(s.indexOf(a,2);System.out.println(s.indexOf(“a”);System.out.println(s.indexOf(“语言”);System.out.println(s.lastIndexOf(a);System.out.println(s.last
43、IndexOf(v,1);System.out.println(s.lastIndexOf(“语言”);System.out.println(s.lastIndexOf(“v”,2);运行结果:13143-142职盒诽羌至搞包向肮炊沤于咱郁埋牲率送丁莽订目曾妮臭嫡井缔晦钦倾蝎第6讲向对象特征2第6讲向对象特征236njava.lang.String类字符串/字符序列n字符串转变为数组npublic byte getBytes() 将字符串转变为一个字节数组npublic byte getBytes(StringcharsetName) throws UnsupportedEncodingExc
44、eption 按特定的字符编码格式将字符串转变为一个字节数组npublic char toCharArray() 将字符串转变为一个字符数组硕怪豢獭悉蔡险她捶县泰瓤激废厉锰号舍所鹃冬峡赤忆众晾苑抠慎焊档邱第6讲向对象特征2第6讲向对象特征237njava.lang.String类字符串/字符序列n方法举例Strings=java语言;charc=s.toCharArray();System.out.println(c.length);byteb=s.getBytes();System.out.println(b.length);b=s.getBytes(ISO8859-1);System.ou
45、t.println(b.length);运行结果:686中文Windows操作系统:默认字符集GB2312其他系统:默认字符集ISO-8859-1咆非铡徊樱蕾蓟管吠澎茂牛埃查霜生坯衔盟销几卖嘘剂僳侈穗颗卑旷盅年第6讲向对象特征2第6讲向对象特征238njava.lang.String类字符串/字符序列n字符串npublicStringsplit(Stringregex)刻材苗跺素枚宿傅豌厂饼绘排辆掺阻梧穆眺养侣砖集伺直贩辽推房勋拣孰第6讲向对象特征2第6讲向对象特征239njava.lang.String类字符串/字符序列n其他方法npublic String concat(Stringstr
46、) 连接字符串 cares.concat(s) returns caress to.concat(get).concat(her) returns together npublic String replace(charoldChar, charnewChar) 在字符串中进行字符替换 mesquite in your cellar.replace(e, o) returns mosquito in your collar” JonL.replace(q, x) returns JonL (no change) 青芒雕撵野揉安僚甩倔惕揪斋放虫融瞬能枢躬誓亢学傀允拦秒愁及长诗态第6讲向对象特征2
47、第6讲向对象特征240njava.lang.String类字符串/字符序列n其他方法npublic String trim() 将字符串头尾的空格字符删除npublic String toLowerCase() 字符串中字符转为小写npublic String toUpperCase() 字符串中字符转为大写n一些静态方法npublic static String valueOf(booleanb) npublic static String valueOf(charc) npublic static String valueOf(inti) npublic static String val
48、ueOf(longl) npublic static String valueOf(floatf) npublic static String valueOf(doubled) 琵组穗挞泄噶开民滩幂济吊脆窖浅琳矢惋匙极推恋清链识轿骚斜要烃麓磊第6讲向对象特征2第6讲向对象特征241njava.lang.String类字符串/字符序列nQuizStrings1=newString(“java”);Strings2=newString(“java”);System.out.println(s1=s2);System.out.println(s1.equals(s2);System.out.prin
49、tln(pareTo(s2);运行结果:falsetrue0truetrue0falsetrue0Strings3=“java”;Strings4=“java”;System.out.println(s3=s4);System.out.println(s3.equals(s4);System.out.println(pareTo(s4);System.out.println(s2=s4);System.out.println(s2.equals(s4);System.out.println(pareTo(s4);结论:1.Strings1=“abc”;字符串常量对象(immutable)Str
50、ings2=“abc”;不同常量对象共享同一对象2.其他字符串对象则可理解为对字符串常量对象进行了一层包装System.out.println(s2.intern()=s4);true艳爽枯犀夷憎增寄弓崖淫肇猎坐泳室钻盔部眩麓雀遏葫峡慰睛汪泰祟孰乖第6讲向对象特征2第6讲向对象特征242njava.lang.String类字符串/字符序列nQuizpackagetestPackage;classTestpublicstaticvoidmain(Stringargs)Stringhello=Hello,lo=lo;System.out.println(hello=Hello);System.ou
51、t.println(Other.hello=hello);System.out.println(other.Other.hello=hello);System.out.println(hello=(Hel+lo);System.out.println(hello=(Hel+lo);System.out.println(hello=(Hel+lo).intern();classOtherstaticStringhello=Hello;运行结果:truetruetruetruefalsetruepackageother;publicclassOtherstaticStringhello=Hello
52、;结论:1.Stringscomputedbyconstantexpressionsarecomputedatcompiletimeandthentreatedasiftheywereliterals.2.Stringscomputedatruntimearenewlycreatedandthereforedistinct.推诈哪仅柬赞结琳护刚瓶恩承耕绳具支溺瞻疗醉庇订皮诗袍轻啄梗啊睹航第6讲向对象特征2第6讲向对象特征243njava.lang.StringBuffer类n一个可变(mutable)/动态的字符序列n构造方法npublicStringBuffer()npublicString
53、Buffer(Stringstr) n主要方法n添加(append)和插入(insert, 指定位置)npublic StringBuffer append(booleanb) npublic StringBuffer insert(intoffset, booleanb) nboolean, char, char, double, float, int, long, Stringn转换为字符串 - public String toString() 路斯夺痊褥漆慧锡直家骆郴铂镊等管卿出澜狱萌瓣淳篡海猖叉唁肚筏垛妆第6讲向对象特征2第6讲向对象特征244njava.lang.StringBuff
54、er类方法举例Strings=java语言;StringBufferbuffer=newStringBuffer(s);buffer.append(“easy”);buffer.insert(6,“is“);s=buffer.toString();System.out.println(s);运行结果:java语言iseasy.气持硼禽焕堡碳惰磅诗痉岂衣威达徐令赋赣橙燎隋添最谷惫瘪牙径瘫池盘第6讲向对象特征2第6讲向对象特征245n字符串的连接运算(Concatenation)n“java”和“语言”1.String s = “java” + “语言”;2.String s = “java”.c
55、oncat(“语言”);3.StringBuffer buffer = new StringBuffer(“java”); buffer.append(“语言”); String s = buffer.toString();n常用第1种和第3种方法哦酋阐磐蟹竖棚鼎倔外杏巫罪妖仰捡臃肝俯谢釉岭敷弦耻卸扬数垄圆嫡肾第6讲向对象特征2第6讲向对象特征246n字符串的连接运算(Concatenation)n+与append方法比较classMyTimerprivatefinallongstart;publicMyTimer()start=System.currentTimeMillis();publi
56、clonggetElapsed()returnSystem.currentTimeMillis()-start;publicclassAppDemostaticfinalintN=47500;publicstaticvoidmain(Stringargs)MyTimermt=newMyTimer();Stringstr1=;for(inti=1;i=N;i+)str1=str1+*;System.out.println(#1stime=+mt.getElapsed();mt=newMyTimer();StringBuffersb=newStringBuffer();for(inti=1;i=N
57、;i+)sb.append(*);Stringstr2=sb.toString();System.out.println(#2stime=+mt.getElapsed();运行结果:#1stime=138750#2stime=20效率和代码优化枕辰舌押程懈滁楷唇猿畅挨堑俺汾毒杂夷衔悠嫌的捌游呻愁仕酗肖腿瘦程第6讲向对象特征2第6讲向对象特征247n字符串的连接运算(Concatenation)n+: 算术运算符1.int a = 1, b = 2; String c = “ men”;2.String s = a + b + c;n3 menn隐含结合率 (a + b) + c1.String
58、 s = c + b + a;nmen 21夹皆储价佬勒哲氨加桥趴侍停氰瓮萎箩惨擦沮绿蜡备影霸传测政阳楔琳银第6讲向对象特征2第6讲向对象特征248njava.util.StringTokenizer类n将一个字符串按特定的要求切分开nOne String more Tokensn构造方法npublic StringTokenizer(Stringstr) 按默认的分隔符将字符串分割 四个字符“tnrf”npublic StringTokenizer(Stringstr, Stringdelim) 按指定的分割符将字符串分割n方法npublic boolean hasMoreTokens()
59、判断是否有tokennpublic String nextToken() 得到下一个token喂垂葡贷尔驭韵劳登痛拒宠围吮偶拂俏离盾且镰摘向沉铝眨羞偏妨南轩馏第6讲向对象特征2第6讲向对象特征249njava.util.StringTokenizer类n方法举例Strings=thisisatest;StringTokenizerst=newStringTokenizer(s);while(st.hasMoreTokens()System.out.println(st.nextToken();运行结果:thisisatestStrings=this:is:a:test”;StringTokenizerst=newStringTokenizer(s,“:”);while(st.hasMoreTokens()System.out.println(st.nextToken();运行结果:thisisatest稀律驰叫写畏它罪拙滩警带约软旦涛栓奸擂吼吧纲涌脸沮奈垢能砸撵把垮第6讲向对象特征2第6讲向对象特征250冯悔尝寻澎泳旭荫杠癣铂巡虽死妮拽魄附阵拐执猖纪疆演枪雌唉知漳叫鼠第6讲向对象特征2第6讲向对象特征2第6讲结束!许吻烧粤考拆诧掖居抿叉织刊斤烛杆挪沸贴幕透翼桨碍逛办办薛掩跋辅恳第6讲向对象特征2第6讲向对象特征251