类的管理以及常用工具类

上传人:知**** 文档编号:252308361 上传时间:2024-11-14 格式:PPTX 页数:27 大小:139.15KB
返回 下载 相关 举报
类的管理以及常用工具类_第1页
第1页 / 共27页
类的管理以及常用工具类_第2页
第2页 / 共27页
类的管理以及常用工具类_第3页
第3页 / 共27页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,#,类的管理以及常用工具,类,2020年5月31日星期日,第1章程序设计语言概述,第2章程序设计语言的基本成分,第3章程序设计方法概述,第4章面向对象语言基础,第5章类的管理及常用工具类,第6章异常处理和断言,第7章线程,第8章GUI编程基础和applet,第9章I/O流,第10章网络通信,第11章泛型与集合框架,第5章类的管理及常用工具类,5.1包,5.2包装器类和,本章重点,1.全面完整理解并掌握类,自动装箱/拆箱,及成员的存取权限;,5.3枚举,5.4数组的高级应用,5.5字符串的高级应用,补:随机数类,2.掌握包装器类引入原因,和基本使用方式;理解,和掌握自动拆箱/自动,装箱机制;,3.理解紧凑型for循环和,正则表达式。,5.1包,包,包的声明和导入,访问权限,5.1包,包是类/接口的管理机制,包是存放类/集合的目录或压缩包。包与类的关,系,类似于目录/压缩包与文件;,Java类库大多以压缩包形式存储,如*.jar,实际上,lib目录下的ct.sym也是压缩包,包名格式示例:,Java是面向网络的语言,需要借助包来区分放置,于不同主机上的类、类库或对象。如JavaRMI,(RemoteMethodInvocation)机制.,5.1包,声明包,声明包,就是告知编译器,要将该文件编译后产,生的所有.class文件,均放入指定的包中。,其中若包不存在,则会自动创建。,格式:,package包名1.包名2.包名3.;,如:packageaa.bb.cc;,语法限定,:一个Java源文件中只能声明一个包,,且声明语句只能作为源文件的第一条指令。,5.1包,导入包,背景:使用包中的类,可用全名或相对名,如,相对名:Scanner,需要导入包,导入包,就是设定类的搜索路径。,格式:,import,包名1.包名2.类名|接口名|*,importaa.EnumDemo;,importjava.util.*;,importjava.util.Scanner;,5.1包,注意事项,无法导入其它包中的非public类;,要正确设置classPath环境变量,让编译器能找到,系统包。Java编译器会自动导入包java.lang。如,System、String、,Math,等均在此包。,导入包不包含被导入包的子包;,如import,java.*,;不能导入类,对大型项目,导入时尽量指明具体类,而不要用,.*的方式,后者会极大影响编译速度。,5.1包,无名包问题,无名包:若源文件中未用package声明,则编译,后产生的.class文件自动放置于无名包。例如:,好的编程习惯:,A.class位于无名包,为每个类都指定一个包;导入,;B.class位于包X,影响:无名包中的类无法被导入。换言之,无名,包中的类无法被其它包中的类使用。,时,导入类而不是导入包。,A.java,B.java,packageX;,publicclassA,publicclassB,5.1.3访问权限,类的访问权限,缺省:该类只能被同一包中的类访问,public:该类可被包外的类访问,当然,访问前需要导入,或者使用包名+类名格式,A.java,C.java,packagep1,publicclassA,classB,packagep2,publicclassC,classD,A、B、C、D可,以访问哪些类?,5.1.3访问权限,对同一类而言,成员相互间可,对同处一包的类,类中成员的访问权限,A若类、B,A、,A不能访问,B分处不同包,,BA只能访问B,成员的访问权限:四种,的,任意访问,无权限之分。,private,注意:纵向看,只有两种:能访问、不能访问,成员,,其余均可访问。,的public成员,,其余均不能访问。,修饰符,同一类,同一包,不同包的子类,所有类,public,protected,缺省,private,5.1.3访问权限,试分析下面各类之间相互访问的可能,packageX;,packageY;,publicclass,A,importX.A;,publicclass,C,class,D,publicintx1;,protectedintx2;,extendsA,intx3;,privateintx4;,class,B,5.2包装器类和自动装箱/拆箱,包装器类的引入背景,包装器类的构造函数,包装器类的常用方法,自动装箱和自动拆箱,5.2包装器类和自动装箱/拆箱,背景:提供与基本类型相关的常用功能操作,基本类型使用频繁,需用汇编/C等单独实现;,why?,基本绑定的操作方法太少,功能不强。,这6种均属Number类的子类,包装器类:为基本型配备的对应类。,Byte、Short、Integer、Long、Float、Double、,Character、Boolean,包装器类主要实现了两种功能:,实现基本类型与引用类型之间的自动转换。,实现基本类型与String类型之间的相互转换。,5.2包装器类和自动装箱/拆箱,字符串转Double:Doubled=Double.valueOf(1.2);,字符串转,包装器类的使用,double:doubled=Double.parseDouble(1.2);,double,构造函数:,转字符串:Strings=Double.toString(3.14);,包装器类名(基本类型值)或,double转包装器类名byte:byteb=(newDouble(3.14).byteValue();(基本类型值的字符串),常用方法,Integeri1=newInteger(5);基本类型xxxValue();/转成特定数值型,Integeri2=newInteger(5);staticxxxparseXxx(Strings);/String,转基本型,xxx,Integeri3=newInteger(1.25);/staticWvalueOf(Strings);/String运行时报错,转包装器型,W,Doubled=i1;/编译错,Booleanb=newBoolean(ture);/正确,Booleanb=newBoolean(TRUE);/正确,5.2包装器类和自动装箱/拆箱,自动装箱和拆箱,自动装箱:基本型自动转换为对应包装器型,自动装箱:包装器型自动转换为对应基本型,如:Doublea=1.2;doubleb=a;,自动装箱、拆箱可能隐含错误,例如:Integeri=null;intj=i;/运行时错,等同于:Integeri=null;intj=i.intValue();,注意:jDK1.5才引入对Boolean的自动拆箱,如:Booleanb=newBoolean(ture);,if(b)-此句在JDK1.5之前环境中发生编译错,5.3枚举,1、,枚举(,publicstaticEvalues(),JDK1.5新增机制),,返回一个枚举型数组,包含,所有枚举常量,各常量位置按声明顺序存储,格式:enum枚举类型名枚举常量表,2、,publicstaticEvalueOf(Stringname),该类是一个泛型类,任何类都不能直接扩展该类。,enumWeekMONDAY,TUESDAY,WEDNESDAY,THURSDAY,返回枚举常量枚举常量按定义顺序分别对应索引值name;若该常量未定义则运行时抛出异常0、1、2、等,,并,自动具备,FRIDAY,SATURDAY,SUNDAY;,public、static、final等属性,。,。,Weekw;w=Week.FRIDAY;编译器为枚举型附加两静态方法(类Enum中无此方法),w=SUNDAY;/编译错,:,示例详见:ch_5_5.java,5.4数组的高级应用,紧凑型for循环结构,拷贝数组,Arrays工具类,5.4数组的高级应用,for-each循环结构(JDK1.5新增),格式:for(Tyepe:exp)S;,其中exp是数据集对象(,必须是数组或实现了,Iterable,voidf(),接口的对象,)。e是循环变量(相当于exp,中的元素)。执行方式为:,inta=1,2,3,4,5;,1.)int从exp,i,=0;中取出下一个元素赋值给e,执行语句S;,2.)for(若exp,i,:a)System.out.print(+i);/所有元素均已迭代,则循环结束;否则,转编译错,1)。,for(,intj,:a)System.out.print(+j);/正确,注意:,e不能在for-each结构之外定义,。,5.4数组的高级应用,arraycopy:位于System类,用于数组复制,voidarraycopy(Objectsrc,intp1,Objectdest,intp2,intlen),将srcp1.p1+len-1复制到destp2.p2+len-1中,Arrays是数组的工具类,存于java.util包中,Arrays提供了用于处理数组的常用静态方法,包,括排序sort、binarySearch(前提是数组必须要有序,)、比较数组元素是否相等,示例详见Ch_5_6.java,equals,、Ch_5_7.java,、填充数组元素,fill等。,5.5字符串的高级应用,StringBuffer和StringBuilder,正则表达式,字符串的高级应用,5.5字符串的高级应用,引入,期望引入大容量、可更改的字符串存储对象。,StringBuffer类,该类对象可看作是一个用于存储字符串的数据块,,可反复修改,重复使用。,示例详见Ch_5_8.java,StringBuilder类,JDK1.5版新增,功能与StringBuffer几乎一样,执,行更高效,但在线程中使用不安全。,5.5字符串的高级应用,正则表达式,是一种能够刻画某种词法规则的字符串。,0Xx(0-9a-fA-F)+,表示,十六进制数,,含义为:以0作,开头,后接X或x,再后面就是若干个(至少1个)数,字、字母(a-f或A-F)。,a-zA-Z_+(w)*:表示C的标识符,,标识含义见后,。,应用:如何识别下面字符串中的十六进制数:,08+AF-0 x98AF-Bc*0XA93bf,2包装器类和自动装箱/拆箱,class文件,均放入指定的包中。,执行方式为:inta=1,2,3,4,5;,(RemoteMethodInvocation)机制.,的任意访问,无权限之分。,print(+i);/所有元素均已迭代,则循环结束;,包是类/接口的管理机制,包装器类:为基本型配备的对应类。,试分析下面各类之间相互访问的可能,时,导入类而不是导入包。,voidarraycopy(Objectsrc,intp1,)、比较数组元素是否相等示例详见Ch_5_6.,注意:参数rp不支持正则表达式,StringBuilder类,Integeri1=newInteger(5);基本类型xxxValue();/转成特定数值型,java正则表达式的常用描述符号,java,元字符描述:表达特定含义,正则表达式的常用描述符号,量词描述:表达重复次数,元字,正则表达式示例:,含义元字,含义,量词,含义,符,符,aeiou匹配a、e、i、o、u中的任何一个字符,表示X至多重复1次(即,abc匹配a、b、c之外的任何一个字符,d,数字,D,数字以外的字符,X?,X要么不出现,要么出,现1次),.,a-cA,任何一个字,-c匹配a、b、c、A、B、,X*,C中的任一字符,表示X重复多次(0次),a,s,-c0,空白字符,-2匹配a、b,字、下划线),、c、0、1,X+,、2,表示,之外的任一字符,X重复多次(1次),(abc)3,要查找的字,匹配abcabcabc,W
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!