版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编写字符界面应用(下)单击此处编辑副标题样式版权声明华清远见教育集团版权所有;未经华清远见明确许可,不得为任何目的以任何形式复制或传播此文档的任何部分;本文档包含的信息如有更改,恕不另行通知;华清远见教育集团保留所有权利。2目录掌握Math类中常用的方法掌握String/StringBuffer/StringBuilder的用法掌握几种常用集合类的用法掌握文件操作熟练掌握正则表达式掌握日期和时间处理了解DeprecationMath类Math类中包含了一组数学函数截取:ceil、floor、round变量的max、min、abs三角函数:sin、cos、tan、asin、acos、atan、toDegrees和toRadians对数指数:log和exp其它:sqrt、pow、random常数:PI、EMath示例publicclassTestMath{ publicstaticvoidmain(String[]args){ //得到一个随机数
doubled=Math.random(); System.out.println(d); //计算半径为10的圆的周长
doublep=2*Math.PI*10; System.out.println(p); } }String类String对象代表一组不可改变的Unicode字符序列它的方法可用来创造新的字符串:concat、replace、substring、toLowerCase、toUpperCase和trim。查找字符的方法:endsWith、startsWith、indexOf、lastIndexOf。比较字符的方法:equals、equalsIgnoreCase、compareTo。其它:charAt、length()String对象的创建方式比较法一:Strings1=newString(“hello”);Strings2=newString(“hello”);法二:Strings3=“hello”;Strings4=“hello”;hellos1s3s4hellohellos2hello字符串创建方式比较示例public
classStringCompare{public
static
voidmain(String[]args){Stringstr1="Hello";Stringstr2="Hello";Stringstr3=newString("Hello");Stringstr4=newString("Hello");System.out.println("str1==str2:"+(str1==str2));System.out.println("str1==str3:"+(str1==str3));System.out.println("str3==str4:"+(str1==str4));System.out.println("str1.equals(str2):"+str1.equals(str2));System.out.println("str1.equals(str3):"+str1.equals(str3));System.out.println("str3.equals(str4):"+str3.equals(str4));}}str1==str2:truestr1==str3:falsestr3==str4:falsestr1.equals(str2):truestr1.equals(str3):truestr3.equals(str4):true字符串搜索示例public
classSearchStr{
public
static
voidmain(String[]args){Stringname="mary@";intindex1=name.indexOf('.');intindex2=name.indexOf('@');if(index1!=-1&&index2!=-1&&index1>index2){System.out.println("该电子邮件地址有效");
}else{System.out.println("该电子邮件地址无效");
}}}字符串截取示例public
classSubstr{public
static
voidmain(String[]args){Strings="Hello";Strings1="howareyou?";System.out.println("indexofl="+s.indexOf('l'));System.out.println("lastindexofl="+s.lastIndexOf('l'));System.out.println("indexof('o',3)="+s.indexOf('o',3));System.out.println(s.substring(0,5));System.out.println(s.concat(s1));System.out.println(s.replace('',','));System.out.println(s.trim());}}indexofl=2lastindexofl=3indexof('o',3)=4HelloHellohowareyou?Hello,HelloStringBuffer类StringBuffer对象代表一组可改变的Unicode字符序列构造器:StringBuffer()创建一个空的字符缓冲,长度为16个字符容量;StringBuffer(intcapacity)用指定的初始容量创建一个空的字符缓冲;StringBuffer(StringinitString)创建包含initString的字符缓冲,并加上16个字符的备用空间。字符串缓冲的修改操作:append、insert、reverse、setCharAt、setLength。public
classMyStringBuf{public
static
voidmain(String[]args){StringBufferbuf=newStringBuffer("today");buf.append("Monday");
intindex=6;buf.insert(index,"is");
index=0;buf.setCharAt(index,'T');
intstart=9;
intend=12;buf.replace(start,end,"satur");Strings=buf.toString();//转换为字符串
System.out.println(s);}}todaybuftodayMondaytodayisMondayTodayisMondayTodayissaturdayStringBuffer示例StringBuilderStringBuilder和StringBuffer一样,也是表示的是一个字符缓存,具有和StringBuffer一样的方法StringBuilder和StringBuffer的区别在于,StringBuilder的方法是非线程安全的,而StringBuffer的方法是线程安全的如果不会产生多线程问题,则使用StringBuilder效率会更高一些关于线程,见后续内容StringBuilder/StringBuffer/String都是CharSequence的子类,因此在接受CharSequence的地方,都可以使用者三者之一13Collections(集合)API一个collection(集合)是用一个对象来代表一组对象,其中的每个对象作为collection的一个元素。在CollectionAPI中,代表对象集合的接口有:Collection抽象的集合SetCollection的子接口,一个无序无重复集ListCollection的子接口,一个有序可重复集CollectionAPI层次结构<<interface>>Collection<<interface>>SetHashSet<<interface>>ListArrayListVectorList(1)List:List是Collection的子接口,它用于保存有序的可重复的对象,它增加了对于索引的定义,放置在List内的对象被有序排列,可以通过一个整数索引来访问其中的对象,索引的值从0开始。常用方法:add(intidx,Objectobj):将指定对象obj插入到List中指定索引idx的位置,原来位于该位置的对象和其后的对象依次后移;add(Objectobj):addAll(intidx,Collectioncol):将Collection参数col中的所有子对象依次插入到List中指定索引idx的位置,原来位于该位置的对象和其后的对象依次后移。set(intidx,Objectobj),可以用来将指定索引idx的对象替换成obj,并返回被替换的对象。16List(2)ArrayList可以将其想象成一种可以自动增加容量可以存放不同类型对象的数组方法:add(Objecto)/get(intindex)/size()Vector:和ArrayList类似,但Vector是线程安全的无论ArrayList还是Vector,都是使用数组来实现的,因此,插入元素时,该位置后的元素都需要往后移;删除元素时,该元素之后的元素都需要往后移动LinkedList使用链表实现。因此当插入/删除元素时,并不需要移动元素,只是改变相关元素的指针指向即可。17List(3)LinkedList不支持快速随机访问,无论访问哪个元素,都需要从头开始遍历如果内容频繁更新,应该选择LinkedList;如果内容更新操作很少,且追求快速的访问速度,应该用ArrayList/Vector18List例子importjava.util.*;publicclassListExample{publicstaticvoidmain(String[]args){List<Object>list=newArrayList<Object>();list.add("one");list.add("second");list.add("3rd");list.add(newInteger(4));list.add(newFloat(5.0F));list.add("second");list.add(newInteger(4));System.out.println(list);}}可以加入重复的值Set(1)Set表示的是不重复的对象集合。如果试图向Set中加入一个已经在它里面存在的对象,将不会成功HashSet:是一个无序的集,但是它能够快速的查找指定的对象,这是因为它采用了能够适应这个需求的散列码(hashcode)LinkedHashSet20Set(2)Hashcode可以理解成唯一标识一个对象的ID,不同的对象,其hashcode是不同的可以通过Object的hashCode()方法来获得对象的hashcode,也可以根据需要,覆盖hashCode()方法,实现自己的hashCode()如果该类要被放到HashSet/LinkedHashSet中,那么,必须同时定义自己的hashCode()方法和equals()方法,并且这两个方法必须遵循如下的法则:对于MyObject类的实例x和y,如果x.equals(y),那么x.hashCode()必须和y.hashCode()相等。21Set(3)hashCode()的定义方式:参见hashCode.txt22Set(4)TreeSet:TreeSet是一个有顺序无重复的集。我们可以用任何的顺序向TreeSet中加入对象,但是,当使用iterator()方法进行遍历时,我们可以得到一个有序的结果。因为放到TreeSet中的对象需要相互比较大小从而排出顺序,因此,它们之间必须是可以比较大小的,这里是要求对应的类必须实现Comparable接口,且实现其compareTo(Objectobj)方法,在这个方法中定义对象的排序规则,它应该返回一个整数值,根据这个值的是大于0、小于0还是等于0可以确定两个对象的顺序。23Set例子importjava.util.*;publicclassSetExample{publicstaticvoidmain(String[]args){Set<Object>set=newHashSet<Object>();set.add("one");set.add("second");set.add("3rd");set.add(newInteger(4));set.add(newFloat(5.0F));set.add("second");set.add(newInteger(4));System.out.println(set);}}set中只会有一个second值Iterators(遍历器)Iteration是指取得集合中每一个元素的过程Listlist=newArrayList();Iteratorelements=list.iterator();while(elements.hasNext()){ System.out.println(elements.next());}Collections类(1)Collections类包含了许多对集合进行运算的专用静态方法,这些运算包括对集合进行排序、混排、查找和比较等。下面列出一些常用的方法。排序(Sort)根据元素的自然顺序对指定列表按升序进行排序。列表中的所有元素都必须可相互比较(即对于列表中的任何e1和e2元素,pareTo(e2)不得抛出ClassCastException)。混排(Shuffling)使用默认随机源随机更改指定列表的序列,即打乱原来列表中顺序,可以用来实现碰运气抽奖游戏。在生成测试案例时是十分有用的。26Collections类(2)反转(Reverse)使用reverse()方法可以根据元素的自然顺序对指定列表按降序进行排序。复制(Copy)copy()方法用于实现列表的复制。27Map(1)映射表(Map)用于存储元素对(它们分别称作“键”和“值”)一个映射不能包含重复的键,每个键最多只能映射一个值在Map中键和值的保存顺序和它们的插入顺序无关Map用put(key,value)方法来添加一个值,用get(key)方法获取与key键相关联的值。28Map(2)Map接口的keySet()方法返回一个Set,因为Map中的key是不可重复的,所以得到所有key的keySet()方法返回一个Set对象,values()方法返回一个值的集合。如果想同时查看所有的键和值,可以使用Map接口中包含的Map.Entry接口,一个Map.Entry就是Map中的一个关键字/值对。Map接口中的entrySet()方法返回了一个集合对象,其中每一个元素都实现了Map.Entry接口。containsKey(Objectkey)用来判断某个Key是否存在。29泛型泛型的作用和意义:泛型的主要好处就是让编译器保留参数的类型信息,执行类型检查,执行类型转换操作:编译器保证了这些类型转换的绝对无误。典型场景:在容器类中,提前对容器所能装载的内容进行限制:List<Cellphone>box=...;Cellphonecp=box.get(0);练习:将前面的集合类相关的代码改成使用泛型的方式泛型使用泛型自定义泛型publicMyGenerics<T>{...}受限制的泛型:让类型参数继承一个类或者实现接口publicMyGenerics<TextendsXclass/Yinterface>{...}31新的for循环用于遍历数组或者集合for(typevariable:数组或者集合){…}例:List<String>namesList=newArrayList<String>();namesList.add(“mary”);namesList.add(“tom”);…for(Stringname:namesList){System.out.println(name);}枚举使用enum关键字定义枚举类型publicenumGender{MALE,FEMALE}File类java.io.File类封装了文件对象创建文件对象FilemyFile;myFile=newFile(“lzs.mp3”);myFile=newFile(“lyrics”,”lzs.txt”);在Java中,没有表示文件路径(目录)的类,而是将文件路径也当作文件来处理File对象常用方法(1)和文件名相关StringgetName()StringgetPath()StringgetAbsolutePath()StringgetParent()booleanrenameTo(FilenewName)文件检测booleanexists()booleancanWrite()booleancanRead()booleanisFile()booleanisDirectory()booleanisAbsolute()File对象常用方法(2)获取常规文件信息longlastModified()longlength()booleandelete()目录操作booleanmkdir()String[]list()文件过滤通过在File中的list()方法中加入FileNameFilter参数,可以只将满足条件的文件列出来FileNameFilter是一个接口,只有一个accept()方法需要实现正则表达式正则表达式(RegularExpression)是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用于描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。38正则表达式主要用途搜索和替换(SearchandReplace)验证(Verification)检查某个字符串是否符合特定的匹配模式。例如,对Email地址的格式、电话号码的格式进行验证等;解析(Parse)解析就是从一个文本中获取有用信息的过程,比如,从HTML文件中提取超链接。模式(1)文字:表达式内任何不具有特殊意义的字符都被看作是一个文字,并与自身匹配。量词:某些字符或表达式,它们被用来计算一个文字或分组可以在字符序列中出现的次数,以便该序列与表达式匹配。分组是由圆括号内的一组字符指定的?:表示出现一次或根本不出现;*:表示出现零次或一次以上(含一次);+:表示出现一次或多次;{n}:刚好出现n次;{m,}:至少出现m次;{m,n}:出现m~n次。模式(2)字符类一个字符类就是方括号内的一个字符集,其中,匹配可以是括号内的任意一个字符\d:数字(0到9)\D:非数字\s:空白字符,如制表符或换行符\S:非空白字符\w:单字字符(a到z、A到Z、0到9以及下划线)\W:非单字字符(其它任意字符)[abcdef]*:只包含字母“a”、“b”、“c”、“d”、“e”、“f”的任意字符序列41模式(3)Posix字符类字符类仅在用于US-ASCII比较时才有效\p{Lower}:小写字符\p{Upper}:大写字符\p{ASCII}:所有ASCII字符\p{Alpha}:字母字符(\p{Lower}与\p{Upper}相结合)\p{Digit}:从0到9的数字\p{Alnum}:Alpha和number,字母数字字符42模式(4)范围:使用短线“-”来指定包括一定范围字符的字符类。例如,[A-Z]表示从A到Z的大写字母否定:脱字符(^)否定字符类的内容。例如,[^A-Z]表示除A到Z之外的任何字符。边界:表示匹配的边界^:表示输入的开始$:表示输入的结束\b:字边界\B:非字边界\A:输入的开始\z:输入的结束43模式(5)逻辑表示表达式之间的操作X|Y:X或者Y中的字符XY:X中的任何字符后面紧跟着Y组表示将几个表达式组成一个整体。它只有一个操作符“()”(X):表达式为一组。例如,(X)是一个组。而(X(Y)),是表示嵌套的组,它可以分解成几个组,各个组都用索引来唯一指定,整个组的索引一定为0。组的索引(或者顺序)是从左到右、从外到内的。上面的(X(Y))包含了两个组:(X(Y))本身(索引为0)以及(Y)(索引为1)。44典型的用处验证邮件地址格式是否正确将文章中的URL地址自动转换成链接将文章中的数字变成电话在一个字符串中搜索特定格式的字符串...45Java中使用正则表达式Pattern类:封装模式Matcher类:匹配类DeprecationDeprecation关键字可用于标记类、属性和方法,表明这些类,属性或方法已过时、不再提倡使用Deprecation成分均存在相应的替代类、属性或方法,这些替代者可能采用了更标准化的命名惯例、或功能更适用在移植Java代码时,可使用–Xlint:deprecation选项获得有关的详细信息:javac–Xlint:deprecationTest.java如果想让某个类、属性、方法变成“不建议使用”,可以在类/属性/方法定义前面加上@Deprecated,如:@Deprecatedpublicvoidmethod()...日期处理(1)Date类的问题:设计时候考虑不周,存在诸多问题,大部分方法和构造器已经Deprecated,不推荐使用Calendar类:用来在大部分场合替代Date类Calendar是一个抽象类,用来表示日历的概念通过Calendar的静态方法getInstance()来获得一个Calendar实例Calendar常用方法:intadd(intfield,intvalue):改变对应的field的值,注意在这里之所以是“改变”而不是“增加”,是因为除了增加外,还可以减少对应field的值,只要给它一个负值就可以了。日期处理(2)Calendar常用方法:voidroll(intfield,intvalue):和add()方法类似,区别在于,即使加上value后对应的field值已经超出了它所能表示的最大范围,也不会改变更大的field的值intget(intfield):根据指定的field,返回相应的时间值。通常,参数field使用Calendar的静态常量来表示,例如:想得到当前的月份,可以使用方法get(Calendar.MONTH)来获得intgetActualMaximum(intfield):获得指定的时间字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025下半年广东江门市城市地理信息中心招聘高频重点提升(共500题)附带答案详解
- 2025下半年安徽省马鞍山市博望区事业单位招聘8人历年高频重点提升(共500题)附带答案详解
- 2025下半年四川自贡市事业单位高频重点提升(共500题)附带答案详解
- 2025上半年广东省广州市增城区应急管理局及下属事业单位招用16人历年高频重点提升(共500题)附带答案详解
- 2025上半年北京市门头沟区事业单位招聘169人历年高频重点提升(共500题)附带答案详解
- 矿产资源矿山采矿施工合同
- 城市绿化道路节能路灯合同模板
- 医疗卫生项目诚信承诺书
- 冷冻库施工合同零售业
- 仓储物流资产保管办法
- 山东省济南市历下区2023-2024学年八年级上学期期末语文试题
- 火灾事故中的通风与烟气控制
- 2024年完整离婚协议书下载-(含多款)
- 蒙牛数字化 营养世界
- 2024年度医院烧伤科接诊统计报告课件
- 《英国教育》课件
- 人教版2023-2024学年四年级数学上册典型例题系列 第四单元:面积问题专项练习(解析版)
- W红茶加工与品质形成红茶加工工艺与品质形成w红茶加工与品质形成红茶加工工艺与品质形成
- 【伦理课件】死亡与安乐死
- 肾造瘘护理查房
- 历代反腐完整
评论
0/150
提交评论