第十课基于文本的应用教学课件

上传人:公**** 文档编号:586724220 上传时间:2024-09-05 格式:PPT 页数:75 大小:405.53KB
返回 下载 相关 举报
第十课基于文本的应用教学课件_第1页
第1页 / 共75页
第十课基于文本的应用教学课件_第2页
第2页 / 共75页
第十课基于文本的应用教学课件_第3页
第3页 / 共75页
第十课基于文本的应用教学课件_第4页
第4页 / 共75页
第十课基于文本的应用教学课件_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《第十课基于文本的应用教学课件》由会员分享,可在线阅读,更多相关《第十课基于文本的应用教学课件(75页珍藏版)》请在金锄头文库上搜索。

1、第十课:基于文本的应用第十课:基于文本的应用周甫 学习目标学习目标 命令行参数命令行参数 1 系统属性系统属性 2 操作文件操作文件3 数学类数学类 4www.ITwww.IT学习目标学习目标 String和和StringBuffer类类 5 集合、列表、迭代器、映射集合、列表、迭代器、映射 6 排序排序 7www.ITwww.IT1 程序交互的几种方式程序交互的几种方式 v程序在运行的时候,我们要给程序输入数据,程序根据输入的数据作出响应。常见的输入方式有:w命令行参数w系统属性w标准的输入w从文件读入www.ITwww.IT实例分析实例分析 1v问题的描述:通过命令行参数给程序输入数据v解

2、决方案:当一个Java应用程序从终端启动时,用户可以提供零个或多个命令行参数。这些命令行参数都是字符串,这些字符串可以是独立的记号(如:arg1),也可以是引号之间的多个符号(another arg)。参数序列跟在程序类的名字后面输入;然后被存放在String 对象的数组中,传递给main 方法。www.ITwww.IT实例分析实例分析 1(续一续一)v代码如下:class TestArgs public static void main(String args) for (int i = 0; i args.length ; i+)System.out.println(argsi); www

3、.ITwww.IT实例分析实例分析 1(续二续二)v结果www.ITwww.IT实例分析实例分析 2v问题描述:通过系统属性给程序传入数据v解决方案:系统属性是另外一种在运行时向程序传递参数的机制。每个属性都是一个属性名和属性值的映射对。属性名和属性值都是字符串。Properties 类表示这样的映射。System.getProperties方法返回系统的属性对象。System.getProperties(String)方法返回String属性的值。 System.getProperties(String, String)方法允许你在属性名不存在时返回默认值。你可以使用递归调用Property

4、Names方法遍历全部属性名的集合;对每个属性名调用getProperty方法得到所有属性的值。www.ITwww.IT实例分析实例分析 2(续一续一)v代码如下:import java.util.*;class TestSP / System Properties public static void main(String args) Properties p=System.getProperties(); /第4行Enumeration e=p.propertyNames(); /第5行while(e.hasMoreElements() String name=(String)e.nex

5、tElement(); if(name.equals(aaa) String value=p.getProperty(name); System.out.println(name: +name+ value: +value); 分析:第4行取得系统属性的集合,第5行从属性集合中得到属性名的枚举.www.ITwww.IT实例分析实例分析 2 (续二续二)v结果:运行: java -Daaa=345 TestSP /-D后面是属性的名字,=后面是属性的值 ,注意是大写的D www.ITwww.IT实例分析实例分析 3v问题描述:标准的输入v解决方案:多数应用都会发生人机交互。人机交互经常通过控制台

6、文本输入/输出来完成。Java 2 SDK 用公有类java.lang.System支持控制台I/O。System.out是一个PrintStream对象,它指向运行Java应用程序的终端窗口。System.in是一个InputStream对象,它指向用户的键盘。www.ITwww.IT实例分析实例分析 3(续一续一)v代码:import java.io.*;class TestKI /Keyboard Inputpublic static void main(String args) String s;/进行字符串的包装,就可以读取一行字符串InputStreamReader isr = n

7、ew InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);System.out.println(按 ctrl+c 键或者输入exit 退出程序!);www.ITwww.IT实例分析实例分析 3(续二续二)trys = br.readLine( );while( s != null & !s.equals(exit) )System.out.println(Read: + s);s = br.readLine();br.close();catch(IOException e)e.printStackTr

8、ace(); www.ITwww.IT实例分析实例分析 3(续三续三)v运行:www.ITwww.IT实例分析实例分析 4v问题的描述:在程序中实现文件的创建,读,写v解决方案:Input/Output(I/O)是程序中最重要的元素之一。Java技术包含了一套丰富的I/O流。这一节我们要讲解文件中字符数据的读写。我们将讲述:创建文件对象。操作文件对象。读写文件流。www.ITwww.IT实例分析实例分析 4(续一续一)v创建一个新的File对象File类提供了若干处理文件和获取它们基本信息的方法。在java技术中,目录也是一个文件。你可以创建一个代表目录的文件,然后用它定义另一个文件:File

9、 myFile;myFile = new File(FileName); myFile = new File(/, FileName);File myDir = new File(/);myFile = new File(myDir, FileName);*www.ITwww.IT实例分析实例分析 4(续二续二)v文件测试和工具 当你创建一个File对象后,你可以使用下面任何一种方法来获取有关文件的信息:文件名:String getName()String getPath()String getAbsolutePath()String getParent()boolean renameTo(F

10、ile newName) 目录工具:boolean mkdir()String list()www.ITwww.IT实例分析实例分析 4(续三续三)文件测试:boolean exists()boolean canWrite()boolean canRead()boolean isFile()boolean isDirectory()boolean isAbsolute()通用文件信息和工具: long lastModified()long length()boolean delete()www.ITwww.IT实例分析实例分析 4(续四续四)v代码:import java.io.*;class

11、 TestReader public static void main(String args) /读取当前目录下的,该类的原文件File f = new File(TestReader.java);/输出到当前目录下的out.java,系统会自动创建该文件File f1= new File(out.java);FileReader fr = null ;FileWriter fw = null;BufferedReader br = null;PrintWriter pw = null;www.ITwww.IT实例分析实例分析 4(续五续五)tryfr = new FileReader(f)

12、;br = new BufferedReader(fr);fw = new FileWriter(f1);pw = new PrintWriter(fw,true);/true 代表自动刷新到磁盘里String ss = br.readLine();while(ss != null & !ss.equals(exit) pw.println(ss); ss = br.readLine();catch(Exception e)e.printStackTrace();www.ITwww.IT实例分析实例分析 4(续六续六)finally/不管发生不发生异常,都要进行IO流的关闭try/防止发生空指

13、针异常,也就是说在创建文件IO流之前发生异常。if(br != null)br.close();if(pw != null)pw.close();catch(Exception e) e.printStackTrace();/ 以上是关闭IO流最完整的代码www.ITwww.IT实例分析实例分析 5v问题的描述:通过控制台写数据到文件里v解决方案:1,建立控制台的输入流2,建立文件的输出流www.ITwww.IT实例分析实例分析 5(续一续一)v代码如下: import java.io.*;class TestKWFpublic static void main(String args)Fil

14、e file = new File(keyout.java);BufferedReader br = null;/要习惯性的给声明的引用类型变量初始化为nullPrintWriter pw = null;www.ITwww.IT实例分析实例分析 5(续二续二)trybr = new BufferedReader(new InputStreamReader(System.in) ); pw = new PrintWriter(new FileWriter(file) ); System.out.println(按 ctrl+c 键 或者输入exit 退出程序!); Strings = null;

15、 s = br.readLine();/如果按 ctrl+c 键,那么s=null,所以要先进行s!=null判断,不然/会出现空指针异常(调用s.equals(exit))while( s != null & !s.equals(exit) )pw.println(s);s = br.readLine();www.ITwww.IT实例分析实例分析 5(续三续三)catch(IOException e)e.printStackTrace();finallytryif(br != null)br.close();if(pw != null)pw.close();catch(Exception e

16、)e.printStackTrace(); www.ITwww.IT 2 Math类类 vMath类是用来支持数学计算的,它打包在类是用来支持数学计算的,它打包在java.lang包中,包含一组静态方法和两个常数,包中,包含一组静态方法和两个常数,是终态(是终态(final)的,它不能被实例化。它主要包)的,它不能被实例化。它主要包括下列方法:括下列方法:v分割 int ceil(double d):返回不小于d的最小整数。 int floor(double d):返回不大于d的最大整数。 int round(float f) :返回最接近f的整数(int)。 long round(doubl

17、e d) :返回最接近d的整数(long)。 www.ITwww.IT2 Math类类(续一续一)极值、绝对值: double abs(double d):返回d的绝对值。对于float,int,long有类似的函数。 double min(double d1,double d2):返回d1与d2中的小者.对于float,int,long有类似的函数。 double max(double d1, double d2) :返回d1与d2中的大者。对于float,int,long有类似的函数。三角函数: double sin(double d):返回d正弦。对于余弦和正切有类似的函数cosine,

18、tangent。 double asin(double d):返回d反正弦。对于反余弦和反正切有类似的函数acos,atan。 double toDegrees(double r):将弧度换算成度。 double toRadians(double d):将度换算成弧度。www.ITwww.IT2 Math类类(续二续二)对数、指数 double log(double d):返回d的自然对数。 double exp(double d):返回以e为底的指数。 其它函数 double sqrt(double d):返回d的平方根。 double pow(double d1, double d2):返

19、回d1的d2次幂。 double random():返回0 至 1 的随机数。 常数 PI:圆周率,double。 E:自然对数的底,double.www.ITwww.IT课堂练习课堂练习v比较2个随机数的大小。要求:分别比较整数,单精度浮点数和双精度浮点数。www.ITwww.IT3 String的方法的方法vString concat(String s):返回一个新的String,即,在原来的String后面追加上s。vString replace(String old, String new):返回一个新的String,将原来的String中的old替换成new。vString subs

20、tring(int start, int end):返回一个新的String,它是原来的String中从start到end的一部分。vString toLowerCase():返回一个新的String,它将原来的String中的大写字母变成小写。vString toUpperCase():返回一个新的String,它将原来的String中的小写字母变成大写。 www.ITwww.IT3 String的方法的方法(续一续一)v查找方法:vboolean endsWith(String s):如果原来的String以s为结尾,则返回true。vboolean startsWith(String s

21、) :如果原来的String以s为开始,则返回true。vint indexOf(String s):返回String中第一次出现s偏移量。类似有lastindexOf,从串尾开始查找。vint indexOf(int ch):返回String中第一次出现ch偏移量。类似有lastindexOf,从串尾开始查找。vint indexOf(String s, int offset):返回String中从offset开始查找,第一次出现s的偏移量。类似有lastindexOf,从串尾开始查找。vint indexOf(int ch, int offset) 返回String中从offset开始查找

22、,第一次出现ch的偏移量。类似有lastindexOf,从串尾开始查找。 www.ITwww.IT3 String的方法的方法(续二续二)v比较方法:vboolean equals(String s):如果原String与s逐字符比较都相等,则返回true。vboolean equalsIgnoreCase(String s):如果在忽略大小写的情况下,原String与s逐字符比较都相等,则返回true。vint compareTo(String s):进行词汇比较,如果原String 小于s则返回负数;如果原String 大于s则返回正数;如果原String 等于s则返回零。v其它方法:vc

23、har charAt(int index):返回index处的字符。vint length():返回String的长度。www.ITwww.IT4 StringBuffer类类vStringBuffer对象是一个可以改变的统一编码字符串。String与StringBuffer之间没有继承关系。v构造函数StringBuffer():创建一个空的StringBuffer. StringBuffer(int capacity) :创建一个空的StringBuffer,容量是capacity。 StringBuffer(String initialString) :创建一个StringBuffer,

24、其内容是initialString。www.ITwww.IT4 StringBuffer类类(续一续一)v修改方法StringBuffer append(String s):在原来的StringBuffer后面追加上s。对于下列参数类型有重载的方法:boolean,char,char,double,float,int,long,Object。StringBuffer insert(int offset, String s):在原来的StringBuffer的offset处插入s.对于下列参数类型有重载的方法:boolean, char, char, double, float, int, lo

25、ng, Object。 StringBuffer reverse():颠倒原StringBuffer中字符的顺序. void setCharAt(int index, char ch):将StringBuffer中的index处设为ch。 void setlength(int newLength):设定StringBuffer的长度.*www.ITwww.IT5 StringBuffer与与String的区别的区别v主要是效率上的区别。它们都可以表示一个字符串对象,只不过String类型的字符串对象,只要值改变,存储的空间也会改变,而StringBuffer是在原来的空间上进行修改的。所以要进

26、行大量的字符串操作,要用StringBuffer.而如果不是频繁操作字符串对象,两者都可以,只不过String 更方便些,因为用两个双引号就可以表示一个Sting对象。www.ITwww.IT实例分析实例分析 6v问题的描述:String 类的使用v解决方案:String 对象是一个不可变的统一编码字符串。该类是JDK中最特殊的一个类。只要一个String对象值改变,系统会在内存堆里寻找新的空间来存放改变后的值。www.ITwww.IT实例分析实例分析 6(续一续一)v代码分析:class TestStringpublic static void main(String args) Strin

27、g s1 = abc;String s2 = abc;/在内存中只生成了一个对象。/*如果 String s2 = new String(abc); 会在内存中再生成一个abc对象那么将第一次将输出!=如果要想输出= 把(s1 = s2)改成(s1.equals(s2)=只能判断基本类型的值和引用类型的地址相等不相等equals方法可以判断引用类型的值相等不相等。*/if(s1 = s2) /地址相等的判断 System.out.println(=);else System.out.println(!=);www.ITwww.IT实例分析实例分析 6(续二续二)s2 = s2+d; /改变对象

28、abc的值if(s1 = s2) /地址相等的判断,如果输出!= 说明s2的地址改变了。System.out.println(=);elseSystem.out.println(!=);v编译和运行的结果为:=!=www.ITwww.IT6 集合类的使用集合类的使用v收集API收集(或容器)是代表一个对象组的单个对象,其它对象被认为是它的元素。收集用于处理多种类型对象的问题,所有的类型都有一个特殊的种类(也就是说,它们都是从一个共同父类继承来的)。Java编程语言支持收集类Vector,Bits, Stack,Hashtable ,LinkedList等等。例如,Stack实现后进先出(LIF

29、O)的顺序,Hashtable提供一个相关的对象数组。收集可用于保存,处理Object类型的对象。这允许在收集中贮存任何对象。它还可以,在使用对象前、从收集中检索到它之后,使用正确的类型转换为我们所需要的对象类型。www.ITwww.IT6 集合类的使用集合类的使用(续一续一)v收集API典型地由将对象保持为下述情况的接口而组成:(Collection)收集-没有具体顺序的一组对象(Set)设定-没有复制的一组对象(List)列表-有序对象组,允许复制API还包括诸如HashSet, ArraySet, ArrayList, LinkedList和Vector等等的类,它们实现这些接口。API

30、还提供了支持某些算法的方法,如:排序,二进制搜索,计算列表中的最小和最大等。www.ITwww.IT6 集合类的使用集合类的使用(续二续二)vCollections API的体系结构集合是代表一组对象的单个对象。集合中的对象叫元素。我们在程序设计中经常会用到各种各样的数据结构,如:表、映射、清单、树、集合等。显然,这些数据结构都满足集合的定义。为了方便我们处理各种各样的数据结构,Java在Java.util包中提供了一组API。这组API中的大部分类都实现了Collection接口,因此,被称作Collections API。根据它们处理的不同种类的数据结构,Collections API可分

31、为三类:Collection:一组没有顺序的对象,允许重复相同的元素.Set:一组没有顺序的对象,不允许重复相同的元素.List:一组有顺序的对象,允许重复相同的元素.www.ITwww.IT6 集合类的使用集合类的使用(续三续三)vCollections API包括诸如HashSet, ArraySet, ArrayList, LinkedList和Vector等等的类。Collections API支持常用算法:排序,二进制搜索,求最小值和最大值等等。vCollection接口和类的体系结构有助于我们理解Collections APIwww.ITwww.IT实例分析实例分析 7v问题的描述

32、:Set容器的使用v解决方案:在下面的例题中,程序声明了一个Collections API的Set 型对象,并且用它的子类HashSet初始化它。然后向Set中添加元素,打印结果。www.ITwww.IT实例分析实例分析 7(续一续一)v代码分析:importjava.util.*;public class TestSetpublic static void main(String args)Set set = new HashSet();set.add(abc);set.add(abd);set.add(abe);set.add(new Integer(4);set.add(abe);/插入

33、了相同的数据,所以会失败set.add(new Integer(4);/同上System.out.println(set);www.ITwww.IT实例分析实例分析 7(续二续二)v编译和运行的结果为:4,abd,abc,abe从结果可以看出Set容器的特点:不能保存重复的数据,而且保存的是无序的数据.v请思考下面的问题:这里的重复数据是根据什么判断两个数据是否是同一个数据?是由对象的hashCode()和equals()方法共同决定的。请看下例:www.ITwww.IT实例分析实例分析 7(续三续三)import java.util.*;class TestSet1public static

34、 void main(String args) HashSet hs = new HashSet();/保存了10个数据for(int i = 0;i 10;i+) hs.add(new Data();/只打印一个数据,如果Data没有覆盖其中一个方法,那么会输出10个数据System.out.println(hs); www.ITwww.IT实例分析实例分析 7(续四续四)class Data/覆盖hashCode()方法,得到一样的hashcodepublic int hashCode()return 12;/覆盖equals()方法,是每个对象比较相等public boolean equ

35、als(Object o)return true;v输出结果为: Datacwww.ITwww.IT实例分析实例分析 8v问题的描述:List 容器的使用v解决方案:在下面的例题中,程序声明了一个Collections API的List 型对象,并且用它的子类ArrayList初始化它。然后向List中添加元素,打印结果。 注意:List允许重复的元素。 www.ITwww.IT实例分析实例分析 8(续一续一)v代码分析:import java.util.*;class TestList public static void main(String args) /建立一个List类型的容器Li

36、st al = new ArrayList();/放11个数据,其中有重复的for(int k = 0;k 10;k+)al.add(abc+k);al.add(abc+4);/打印出容器里的数据System.out.println(al); 编译和运行的结果为:abc0,abc1,abc2,abc3,abc4,abc5,abc6,abc7,abc8,abc9,abc4从结果可以看到List容器的特点:有序的数据,可重复的数据www.ITwww.IT实例分析实例分析 9v问题的描述:迭代器的用法v解决方案:可以用迭代扫描一个集合。基本的Iterator接口可以向前扫描任何集合。对于一个Set来

37、说,它的迭代是没有顺序的。对于一个List来说,它的迭代的顺序与List中元素的顺序相同,只能向前,不能后退。此外,List对象还支持ListIterator接口,允许迭代向后移动。www.ITwww.IT实例分析实例分析 9(续一续一)v代码分析:Import java.util.*;public class TestList2public static void main(String args)Listlist = new ArrayList();list.add(one);list.add(second);list.add(third);list.add(new Integer(4);

38、list.add(new Float(5.0F);list.add(second);/truelist.add(new Integer(4);/true/使用迭代器,来迭代容器里的所以数据,我们把Iterator叫做迭代器Iterator iterator=list.iterator(); while(iterator.hasNext()System.out.println(iterator.next(); www.ITwww.IT实例分析实例分析 9(续二续二)v运行结果:onesecondthird45.0second4 上面例子只用了Iterator,这种迭代器只能向后迭代容器里的数据,

39、有时候需要向前迭代数据,那么就的用ListIterator(列表迭代器),它可以前后滚动容器里的数据。请看下面的例子:www.ITwww.IT实例分析实例分析 9(续三续三)Import java.util.*;public class TestList3 public static void main(String args) List list = new ArrayList();list.add(one);list.add(second);list.add(third);list.add(new Integer(4);list.add(new Float(5.0F);list.add(s

40、econd);/truelist.add(new Integer(4);/trueListIterator iterator=list.listIterator();System.out.println(向下迭代容器里的数据:);while(iterator.hasNext()System.out.println(iterator.next();System.out.println(向上迭代容器里的数据:);while(iterator.hasPrevious()System.out.println(iterator.previous();www.ITwww.IT实例分析实例分析 9(续四续四

41、)v输出结果为:向下迭代容器里的数据:onesecondthird45.0second4向上迭代容器里的数据:4second5.04thirdsecondonewww.ITwww.IT实例分析实例分析 9(续五续五)v用迭代器还可以修改容器里的数据,只不过只能用当前的迭代器修改,不能两个迭代器同时修改一个容器里的数据!v请看下面示例:public class TestList4public static voidmain(String args)Listlist = new ArrayList();list.add(one);list.add(second);list.add(third);l

42、ist.add(new Integer(4);list.add(new Float(5.0F);list.add(second);/truelist.add(new Integer(4);/truewww.ITwww.IT实例分析实例分析 9(续六续六)ListIterator listIterator = list.listIterator();Iterator iterator = null;iterator = list.iterator();iterator.next();iterator.remove();/会删除该next()返回的元素。/用另个迭代器操作上一个迭代器改变后的数据w

43、hile(listIterator.hasNext()System.out.println(listIterator.next(); v会发生如下异常:java.util.ConcurrentModificationException www.ITwww.IT实例分析实例分析 10v问题的描述:映射(Maps)的用法v解决方案:映射这种数据结构含有两个部分:关键字和值。对于每个关键字都有一个值,也就是说,一个关键字映射一个值。映射允许通过关键字访问数据结构。 Java 在Collections API的Map接口中声明了一对一的映射。当向映射中插入一对关键字和值时,如果出现关键字重用,则用新值

44、替换映射中原有的值,不在映射中增加一个元素。www.ITwww.IT实例分析实例分析 10(续一续一)v代码分析:importjava.util.Map;importjava.util.HashMap;public class TestMappublic static void main(String args)Mapmap = new HashMap();map.put(abc,new Integer(5);map.put(abd,new Integer(6);map.put(abf,new Integer(7);/会覆盖原来的值7map.put(abf,new Integer(8);Sys

45、tem.out.println(map.get(abf); v编译和运行的结果为:8www.ITwww.IT实例分析实例分析 10(续二续二)v在应用中可以把该容器里关键字单独取出来放到一个实现Set接口的容器里,然后过滤出你所需要的关键字,然后根据这个关键字把对应的值取出来。 import java.util.Map;import java.util.*;public classTestMap1public static void main(String args)Map map = new HashMap();map.put(abc,new Integer(5);map.put(abd,n

46、ew Integer(6);map.put(abf,new Integer(7);map.put(abf,new Integer(8); www.ITwww.IT实例分析实例分析 10(续三续三)/得到关键字的集合Set s = map.keySet();Iterator i = s.iterator();String str = null;while(i.hasNext()str = (String)i.next();if(str.equals(abf)System.out.println(map.get(str);结果还是8注意:这里的关键字对象还是由hashCode()和equals()

47、方法共同决定的.www.ITwww.IT实例分析实例分析 11v问题的描述:排序的用法v解决方案:对于复杂的应用,尤其是生成报表时,排序是一种必不可少的基本操作。在Java 2 Collections API中,已经实现了几种排序。给数组排序可以使用Arrays对象的一套sort方法。对于boolean以外的基本类型,Arrays.sort有两种变化:Arrays.sort( array)用来为整个数组排序。Arrays.sort( array, int fromIndex, int toIndex)用来为数组的一部分排序。 www.ITwww.IT实例分析实例分析 11(续一续一)对于引用类

48、型,Arrays.sort有四种种变化:Arrays.sort(Object array)用默认的比较器为整个数组排序。Arrays.sort(Object array, int fromIndex, int toIndex)用默认的比较器为数组的一部分排序。Arrays.sort(Object array, Comparator comparator)为整个数组排序。Arrays.sort(Object array, int fromIndex, int toIndex, Comparator comparator)为数组的一部分排序。www.ITwww.IT实例分析实例分析 11(续二续二

49、)v由于排序算法必须比较两个对象,所以使用Arrays.sort方法时要传递比较器参数。比较器有两种类型:一种是实现Comparable接口的, 另一种是实现Comparator接口的。Comparable接口定义了一个方法:int compareTo(element, Object)。这个方法比较 Object 与element。如果Object小于element,则返回负值;如果Object大于element,则返回正值;如果Object等于element,则返回零。 www.ITwww.IT实例分析实例分析 11(续三续三)Comparator接口定义了两个方法:compare(e1:O

50、bject,e2:Object)int。如果e1小于e2,则返回负值;如果e1大于e2,则返回正值;如果e1等于e2,则返回零。equals(object:Object) : boolean。用于判断两个比较器对象是否相等。该方法在继承Object类时已经被实现。 www.ITwww.IT实例分析实例分析 11(续四续四)v代码分析:import java.util.*;public class TestCompareable1 public static void main(String args) Cat c = new Cat5;for(int i = 0;i c.length;i+)

51、ci = new Cat(int)(Math.random()*100); /随机生成一个整数,作为猫对象的属性值,以区分不同的对象 System.out.println(ci);Arrays.sort(c);System.out.println(-);for(int i = 0;i c.w) /大于的话返回正数 return 6;else return -3; /小于的话返回负数www.ITwww.IT实例分析实例分析 11(续六续六)v 输出结果如图www.ITwww.IT实例分析实例分析 11(续七续七)v也可以定义动态的比较器,如下:import java.util.*;public

52、class TestCompareable2 public static void main(String args) Cat c = new Cat5;for(int i = 0;i c2.w) /如果大于的话返回正数return 4;else if(c1.w c2.w)return -2; /小于的话返回负数elsereturn 0; /相等的话返回0 www.ITwww.IT实例分析实例分析 11(续九续九)/*注意该接口还有一个方法叫 equals(Object o)方法在这里并没有实现,也会通过,原因是Object类也有那个方法所以每个类都有该方法。*/);System.out.pr

53、intln(-);for(int i = 0;i c.length;i+)System.out.println(ci); www.ITwww.IT实例分析实例分析 11(续十续十)class Cat int w=0;public Cat(int i)w=i;public String toString() return Cat: +w;www.ITwww.IT实例分析实例分析 11(续十一续十一)v 输出结果www.ITwww.IT一个重要工具:一个重要工具:PropertiesvJava.util.Properties俗称属性对文件,大量应用于工程配置,其文件存放一般以xxxxx.prope

54、rties为文件名后缀.Properties读取文件有多种途径,常用的借助于FileInputStream,如:FileInputStream fis = new FileInputStream(filename);Properties p = new Properties();p.load(fis);Properties以key-value的形式存放,读取一个value,给予key即可,如:p.getProperty(“key-name);www.ITwww.IT课堂练习:读取一个课堂练习:读取一个Properties内容描述:读取一个Properties(person.properties),这个文件有2个key-value,分别是:name=zoofage=32请以上述值初始化一个Person类,并输出打印:Zoofs age is 32. *www.ITwww.IT独立实践独立实践v实践1 使用链表表示银行与客户的关系,以及客户与他的帐户的关系。v实践2 为客户排序v实践3 建立三个Person对象,保存在List中,然后将List的3个数据写入到一个文件(person.txt)中。要求:文件名及路径从config.properties中读取;filename= person.txtpath=d:studywww.ITwww.IT

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号