Java程序设计-8-常用类及开源工具

上传人:博****1 文档编号:570175918 上传时间:2024-08-02 格式:PPT 页数:50 大小:425KB
返回 下载 相关 举报
Java程序设计-8-常用类及开源工具_第1页
第1页 / 共50页
Java程序设计-8-常用类及开源工具_第2页
第2页 / 共50页
Java程序设计-8-常用类及开源工具_第3页
第3页 / 共50页
Java程序设计-8-常用类及开源工具_第4页
第4页 / 共50页
Java程序设计-8-常用类及开源工具_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《Java程序设计-8-常用类及开源工具》由会员分享,可在线阅读,更多相关《Java程序设计-8-常用类及开源工具(50页珍藏版)》请在金锄头文库上搜索。

1、JavaJava程序设计程序设计常用类及开源工具常用类及开源工具学习目标学习目标理解理解ObjectObject掌握掌握SystemSystem类类掌握掌握StringString与与StringBufferStringBuffer了解正则表达式了解正则表达式掌握日期处理机制掌握日期处理机制了解定时器了解定时器掌握随机类掌握随机类RandomRandom掌握数值类掌握数值类了解开源代码了解开源代码通过通过JFreeChartJFreeChart了解如何使用图形绘制类库了解如何使用图形绘制类库1. Object 1. Object ObjectObject类是所有类是所有JavaJava类类(

2、(系统提供的,第三方系统提供的,第三方类库、用户自定义的类库、用户自定义的) )的根类的根类 。对象的哈希码对象的哈希码- - hashCodehashCode() () u每个对象都有自己的哈希码,利用这个哈希码每个对象都有自己的哈希码,利用这个哈希码可以表示一个对象。在可以表示一个对象。在Object Object 提供的提供的 hashCodehashCode() () 的缺省实施通过将对象的内存地的缺省实施通过将对象的内存地址对映于一个整数值来生成。址对映于一个整数值来生成。 u如果两个对象是相等的,它们必须有相同的如果两个对象是相等的,它们必须有相同的 hashCodehashCod

3、e()()值值 toStringtoString()()方法方法 u如:如:System.out.println(studentSystem.out.println(student) ) u输出:输出:chap5.sample.Postgraduatechap5.sample.Postgraduate 1172e081172e08对象间的相等性比较对象间的相等性比较- -euqalseuqals()()和和”=” =” u对于两个对象引用变量,对于两个对象引用变量,equals()equals()比较的是逻辑意义,而比较的是逻辑意义,而不是判断两个引用变量是否是一个对象。但是不是判断两个引用变

4、量是否是一个对象。但是“=”=”则判则判断的是两端的引用变量是否是引用一个对象断的是两端的引用变量是否是引用一个对象u对于两个字符串,对于两个字符串,“=”=”返回返回truetrue,例如,例如“hello”=“hello”hello”=“hello”的结果是的结果是truetrue。u数值类对象和字符串对象之间的逻辑性相等判断,比较的数值类对象和字符串对象之间的逻辑性相等判断,比较的是它们各自的状态是它们各自的状态( (值值) ),所以只要两个对象的值相同,所以只要两个对象的值相同,equalsequals()()就返回就返回truetrue,但是只要不是引用的同一个对象,但是只要不是引用

5、的同一个对象,=返返回回false false hello=hellotruenew String(hello)=new String(hello)flasestr1=str2flasestr1.equals(str2)truestr1=str3truestr1.equals(str3)truea=bflasea.equals(b)truestudent1= student2flasestudent1.equals(student2)truestudent1= student3truestudent1.equals(student3)true2. System2. System类类System

6、System包含了一些我们常用的方法与成员变量。包含了一些我们常用的方法与成员变量。SystemSystem不能被实例化,不能被实例化, 所有的方法所有的方法都可以直接引用。在都可以直接引用。在 System System 类提供的设施中,类提供的设施中,有标准输入、标准输出和错误输出流;对外部有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方的方法;还有快速复制数组的一部分的实用方法法 2. System2. System类类(cont.)(cont.)static static P

7、rintStreamPrintStream err err“标准标准”错误输出流。默认是显示器错误输出流。默认是显示器static static InputStreamInputStream in in“标准标准”输入流。默认是键盘输入流。默认是键盘static static PrintStreamPrintStream out out“标准标准”输出流。默认是显示器输出流。默认是显示器arraycopyarraycopy()()指定源数组中复制一个数组,复制从指定的位置开始,到目标指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。数组的指定位置结束。getProper

8、tiesgetProperties()()确定当前的系统属性。确定当前的系统属性。loadLibrary(StringloadLibrary(String libnamelibname) )加载由加载由 libnamelibname 参数指定的系统库。将库名映射到实际系统参数指定的系统库。将库名映射到实际系统库的方法取决于系统库的方法取决于系统currentTimeMillis ()()返回以毫秒为单位的当前时间返回以毫秒为单位的当前时间setErr(PrintStreamsetErr(PrintStream err)err)新分配新分配“标准标准”错误输出流。错误输出流。setIn(Inpu

9、tStreamsetIn(InputStream in) in)重新分配重新分配“标准标准”输入流。输入流。setOut(PrintStreamsetOut(PrintStream out)out)重新分配重新分配“标准标准”输出流。输出流。3. String3. String与与StringBufferStringBuffer字符串常量是一个用双引号字符串常量是一个用双引号(“”)(“”)括起来的字符序列括起来的字符序列 编译器会为每一个字符串常量创建对象。另外,字符编译器会为每一个字符串常量创建对象。另外,字符串常量中可以包含一些不能从键盘上输入的字符,这串常量中可以包含一些不能从键盘上输

10、入的字符,这涉及到字符转义。例如:涉及到字符转义。例如:uThis is a u03c0 This is a u03c0 实际上就是实际上就是 This is a This is a u另外,还需要提醒注意的是:字符串中的所有字符都另外,还需要提醒注意的是:字符串中的所有字符都是是UnicodeUnicode字符,所以每个字符均占两个字节。字符,所以每个字符均占两个字节。字符串常量和字符串对象是两个不同的概念,字符串字符串常量和字符串对象是两个不同的概念,字符串常量有在内存当中由编译器分配的固定区域,保存有常量有在内存当中由编译器分配的固定区域,保存有字符序列。而字符串对象只是一个引用,所以不

11、能通字符序列。而字符串对象只是一个引用,所以不能通过字符串对象对常量进行修改,例如:过字符串对象对常量进行修改,例如:uString String strstr=This is a string literal;=This is a string literal;ustrstr=This is other string literal;=This is other string literal;另一个例子:另一个例子:uString str1=This is a string literal;String str1=This is a string literal;uString str2=T

12、his is + a string literal;String str2=This is + a string literal;u实际上实际上str1str1和和str2str2指向了同一引用指向了同一引用 字符串运算字符串运算 u字符串连接、比较、分割、子串的查询等字符串连接、比较、分割、子串的查询等连接连接(+)(+)值比较值比较( (equals(),compareToequals(),compareTo()()对象比较对象比较 =提取、检索、分割字符串提取、检索、分割字符串ucharAtcharAt()()、 substring() substring() uindexOfindex

13、Of();();usplit() split() 构造格式化字符串构造格式化字符串upublic static String public static String format(Stringformat(String format,Objectformat,Object. . argsargs) )StringBufferStringBuffer因为因为StringString对象是不能修改的,对象是不能修改的,JavaJava语言提供语言提供了另外一个能够修改的类似字符串的字符串缓了另外一个能够修改的类似字符串的字符串缓冲区类,就是冲区类,就是StringBufferStringBuff

14、er。对于。对于StringBufferStringBuffer对象可以进行添加、删除、替换对象可以进行添加、删除、替换等操作。等操作。创建创建uStringBufferStringBuffer sbfsbf = new = new StringBufferStringBuffer();();u创建一个不带字符的缓冲区,默认容量为创建一个不带字符的缓冲区,默认容量为1616个字符,个字符,随着操作容量将发生变化。随着操作容量将发生变化。uStringBufferStringBuffer sbfsbf = new = new StringBufferStringBuffer(初初始化字符串始化字

15、符串););u按照给定内容创建一个缓冲区按照给定内容创建一个缓冲区, ,初始容量为初始容量为16+16+字符字符长度。长度。uStringBufferStringBuffer sbfsbf = new = new StringBuffer(256);StringBuffer(256);u创建一个具有初始容量的缓冲区。创建一个具有初始容量的缓冲区。追加字符串追加字符串uappend(.)append(.)方法是一个适应于基本类型和引用类型的方方法是一个适应于基本类型和引用类型的方法。例如:法。例如:sbf.append(10);sbf.append(10);usbf.append(additio

16、nalsbf.append(additional string ); string );删除操作删除操作uStringBufferStringBuffer delete(intdelete(int, , intint) ) uStringBufferStringBuffer deleteCharAt(intdeleteCharAt(int) ) 增加操作增加操作uStringBufferStringBuffer insert(intinsert(int, , boolean|Objectboolean|Object|)|)替换操作替换操作uStringBufferStringBuffer re

17、place(intreplace(int, , intint, String), String)uvoid void setCharAt(intsetCharAt(int, char) , char) 从从StringBufferStringBuffer到到StringStringu基于一个基于一个StringBufferStringBuffer对象的内容创建字符串对象的内容创建字符串可以:可以:uString String strstr=new =new String(sbfString(sbf););uString String strstr= =sbf.toStringsbf.toStr

18、ing();();4 4、正则表达式、正则表达式一个例子一个例子u+|-?(+|-?(d+(.dd+(.d*)?)|(.d+)*)?)|(.d+)a+123.56,b.4,c-123 a+123.56,b.4,c-123 u+123.56+123.56u.4.4u-123-123java.util.regexjava.util.regex是一个用正则表达式所订制是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库。它包的模式来对字符串进行匹配工作的类库。它包括两个类:括两个类:uPatternPattern:是一个正则表达式经编译后的表现:是一个正则表达式经编译后的表现模式。模式。uMa

19、tcherMatcher:是一个状态机器,它依据:是一个状态机器,它依据PatternPattern对对象做为匹配模式对字符串展开匹配检查。象做为匹配模式对字符串展开匹配检查。public class public class RegxDemoRegxDemo upublic static void public static void main(Stringmain(String argsargs) ) u / /定义正则表达式,以便匹配目标字符串定义正则表达式,以便匹配目标字符串 u String String regxregx=+|-?(=+|-?(d+(.d*)?)|(.d+)d+(.

20、d*)?)|(.d+);u / /定义需要匹配的字符串定义需要匹配的字符串u String input=a+123.56,b.4,c-123;String input=a+123.56,b.4,c-123;u Matcher Matcher matchermatcher=null;=null;u / /基于定义的正则表达式,创建一个模式对象基于定义的正则表达式,创建一个模式对象 u Pattern pattern = Ppile(regx);Pattern pattern = Ppile(regx);u / /从模式创建匹配器从模式创建匹配器u matcher =matcher =patter

21、n.matcher(inputpattern.matcher(input); ); u / /循环获得所有的匹配子串循环获得所有的匹配子串u while(matcher.findwhile(matcher.find()() u / /输出每一个匹配成功的子串序列输出每一个匹配成功的子串序列u System.out.println(System.out.println(matcher.groupmatcher.group()(););u u 正则表达式是有普通字符,包括大小写字母正则表达式是有普通字符,包括大小写字母和数字以及一些具有特殊含义的符号组成的和数字以及一些具有特殊含义的符号组成的字符

22、序列。简单的如字符序列。简单的如 strstr 、 strstr*,复杂的,复杂的如下面的例子:如下面的例子:u+|-?(+|-?(d+(.dd+(.d*)?)|(.d+)*)?)|(.d+)这里面就包括了各种预先定义好的字符在起这里面就包括了各种预先定义好的字符在起作用。(作用。(字符类、正则表达式内的逻辑操作字符类、正则表达式内的逻辑操作符、预定义字符类、量词、边界符、预定义字符类、量词、边界)字符类字符类(Character Classes)(Character Classes) abcabc 对应位置上可以是对应位置上可以是a a、b b、c c三个字母任意一个三个字母任意一个abca

23、bc 取反,此模式意味着对应位置上可以是除取反,此模式意味着对应位置上可以是除a,b,ca,b,c 之外的任一字符之外的任一字符a-a-zAzA-Z-Z- -范围,此模式意味着对应位置上可以是大小写字范围,此模式意味着对应位置上可以是大小写字母母a-a-dm-pdm-p并,此模式意味着对应位置上可以是并,此模式意味着对应位置上可以是a a到到d, d, 或者或者m m 到到 p pa-a-z&defz&def&交,此模式意味着对应位置上可以是交,此模式意味着对应位置上可以是d,e,fd,e,f a-a-z&bcz&bca a 到到 z, z, 排除排除b b和和c: c: 等价于等价于ad-z

24、ad-za-z&m-p a a 到到 z, z, 排除排除m m到到 p: p: 等价于等价于a-a-lq-zlq-z 正则表达式内的逻辑操作符正则表达式内的逻辑操作符u&: &: 此操作符把定义字符集的类所表达的共此操作符把定义字符集的类所表达的共同字符范围组织在一起。同字符范围组织在一起。u|: |: 逻辑或,两者选一。逻辑或,两者选一。u: : 对后面的字符类取反,等价于排除定义对后面的字符类取反,等价于排除定义字符类范围的其它所有字符。字符类范围的其它所有字符。预定义字符类预定义字符类(Predefined (Predefined Character Classes)Character

25、 Classes)表表8-9 预定义字符类预定义字符类. .任意一个字符任意一个字符dd一位数字,对应一位数字,对应0-90-9DD非数字,对应非数字,对应0-90-9ss空白字符或换行符,对应空白字符或换行符,对应tnx0Bfrtnx0BfrSS非空白字符,对应非空白字符,对应ssww单字字符(单字字符(a z、A Z、0 9 以及下划线)以及下划线),对应对应a-zA-Z_0-9W非单字字符(其它任意字符),对应非单字字符(其它任意字符),对应ww量词量词(Quantifiers)(Quantifiers)表表8-10 量词量词?表示出现一次或根本不出现表示出现一次或根本不出现* *表示出

26、现零次或一次以上(含一次)表示出现零次或一次以上(含一次)+ +表示出现一次或多次表示出现一次或多次nn出现出现n n次次n,n,至少至少n n次次 n,mn,m n n次,但不超过次,但不超过m m次次边界边界表表8-11边界匹配器边界匹配器 一行的开始。例如查找每行开始的单词,可以一行的开始。例如查找每行开始的单词,可以a-a-zA-Z+bzA-Z+b $ $一行的结束一行的结束, ,查找位于行尾的单词查找位于行尾的单词a-a-zAzA-Z+$,-Z+$,如果有句号,可如果有句号,可以以a-a-zAzA-Z+.$-Z+.$bbBB单词的边界单词的边界,查找单词查找单词had可以可以bhad

27、b 非单词边界非单词边界AA指定搜索文本的开始指定搜索文本的开始GG前一个匹配的结束前一个匹配的结束zz指定要搜索的字符串的结尾。要查找字符串结尾处的单词指定要搜索的字符串的结尾。要查找字符串结尾处的单词good和和句号,可以句号,可以bgood.zZZ表示除最后终止符以外的输入结束。如果设置了表示除最后终止符以外的输入结束。如果设置了UNIX_LINES模模式,那么最后终止符就是式,那么最后终止符就是n,否则,也可以是,否则,也可以是r、rn、行分割符行分割符u2028、段分割符、段分割符u20295 5日期处理日期处理abstract Calendarabstract Calendar类是

28、一个抽象类,它为特定瞬间与一组诸如类是一个抽象类,它为特定瞬间与一组诸如 YEARYEAR、MONTHMONTH、DAY_OF_MONTHDAY_OF_MONTH、HOUR MINUTEHOUR MINUTE等日历字段之间的转换提供了一些方法,并为操作日历字段等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间是距历元(即格林威治标准时间 1970 1970 年年 1 1 月月 1 1 日的日的 00:00:00.00000:00:00.0

29、00,格,格里高利历)的偏移量里高利历)的偏移量abstract abstract TimeZoneTimeZone代表一个任意的从格林威治的偏移量代表一个任意的从格林威治的偏移量, , 也包含了适用于夏令时也包含了适用于夏令时(daylight (daylight savings rules)savings rules)的信息的信息abstract abstract java.text.DateFormjava.text.DateFormatat是日期是日期/ /时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期

30、期或时间。日期/ /时间格式化子类(如时间格式化子类(如 SimpleDateFormatSimpleDateFormat)允许进行格式)允许进行格式化(也就是日期化(也就是日期 - - 文本)、分析(文本文本)、分析(文本- - 日期)和标准化。将日期表示日期)和标准化。将日期表示为为 Date Date 对象,或者表示为从对象,或者表示为从 GMTGMT(格林尼治标准时间)(格林尼治标准时间)1970 1970 年,年,1 1 月月 1 1 日日 00:00:00 00:00:00 这一刻开始的毫秒数这一刻开始的毫秒数SimpleDateFormatSimpleDateFormat是一个以

31、与语言环境相关的方式来格式化和分析日期的具体类。它允许进是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期行格式化(日期 - - 文本)、分析(文本文本)、分析(文本 - - 日期)和规范化日期)和规范化java.sql.Datejava.sql.Date继承继承java.util.Datejava.util.DateDateDate代表一个时间点代表一个时间点. . 在许多应用中在许多应用中, , 此种抽象被称为此种抽象被称为 TimeStampTimeStamp. . 在标准的在标准的JavaJava类库实现中类库实现中, ,这个时间点代表这个时间点代表Unix

32、Unix纪元纪元January 1, 1970, 00:00:00 January 1, 1970, 00:00:00 GMTGMT开始的毫秒数开始的毫秒数. . 因而概念上来说因而概念上来说, , 这个类是这个类是longlong的简单封装的简单封装6 6 定时器定时器创建定时任务创建定时任务import import java.util.TimerTaskjava.util.TimerTask; ;public class public class MyTaskMyTask extends extends TimerTaskTimerTask uintint number=10; / nu

33、mber=10; /控制任务执行次数控制任务执行次数upublic void run() public void run() u if(numberif(number0)0)u System.out.println(Hi,iSystem.out.println(Hi,i has been started); has been started);u number-;number-;u else elseu System.out.println(taskSystem.out.println(task completed); completed);u System.exit(0); System.e

34、xit(0);u u 创建定时任务创建定时任务import import java.util.Timerjava.util.Timer; ;public class public class TimerDemoTimerDemo upublic static void public static void main(Stringmain(String argsargs) ) u Timer Timer timertimer=new Timer();=new Timer();u timer.schedule(newtimer.schedule(new MyTaskMyTask(), (), 10

35、00,2*1000);1000,2*1000);u 7 Random 7 Random class class RandNumberRandNumber upublic static void public static void main(Stringmain(String argsargs) ) u for(int i=0;i10;i+) for(int i=0;i10;i+)uSystem.out.print( System.out.print( +(int)(Math.random()*100);+(int)(Math.random()*100);u 8 8 数值和字符串数值和字符串N

36、umberNumber类类转换数值到字符串转换数值到字符串转换字符串到数值转换字符串到数值格式化数值格式化数值NumberNumber类及其数值的包装类类及其数值的包装类大多数情况,我们使用基本类型定义和使用变大多数情况,我们使用基本类型定义和使用变量:量:intint a=10; a=10;当你需要一个数值类当你需要一个数值类( (包装类包装类) )对象(提供一个对象(提供一个整数列表、网络传输等)时,当你需要某种数整数列表、网络传输等)时,当你需要某种数值类的普遍方法或值时,如值类的普遍方法或值时,如uFloat.NEGATIVE_INFINITYFloat.NEGATIVE_INFINI

37、TY 数值包装类的构造函数数值包装类的构造函数Integer(intInteger(int value) value) u构造一个新分配的构造一个新分配的 Integer Integer 对象,它表示指对象,它表示指定的定的 intint 值。值。 Integer(StringInteger(String s) s) u构造一个新分配的构造一个新分配的 Integer Integer 对象,它表示对象,它表示 String String 参数所指示的参数所指示的 intint 值。值。 自动包装自动包装/ /拆箱拆箱Integer aInteger a5 5;intint i=a; i=a;

38、转换数值到字符串转换数值到字符串static String static String toBinaryString(inttoBinaryString(int i) i) u以二进制(基数以二进制(基数 2 2)无符号整数形式返回一个整数参数的字)无符号整数形式返回一个整数参数的字符串表示形式。符串表示形式。 static String static String toHexString(inttoHexString(int i) i) u以十六进制的无符号整数形式返回一个整数参数的字符串表以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。示形式。 static String st

39、atic String toOctalString(inttoOctalString(int i) i) u以八进制(基数以八进制(基数 8 8)无符号整数形式返回一个整数参数的字)无符号整数形式返回一个整数参数的字符串表示形式。符串表示形式。 String String toStringtoString() () u返回一个表示该返回一个表示该 Integer Integer 值的值的 String String 对象。对象。 static String static String toString(inttoString(int i) i) u返回一个表示指定整数的返回一个表示指定整数的

40、String String 对象。对象。 static String static String toString(inttoString(int i, i, intint radix) radix) u用第二个参数指定的基数返回第一个参数的字符串表示形式用第二个参数指定的基数返回第一个参数的字符串表示形式 转换字符串到数值转换字符串到数值staticInteger staticInteger v valueOfalueOf( (StringStrings)s)u返回保持指定的返回保持指定的 String String 的值的的值的 Integer Integer 对象。对象。static s

41、tatic intint parseInt(StringparseInt(String s) s) u将字符串参数作为有符号的十进制整数进行分析将字符串参数作为有符号的十进制整数进行分析 格式化数值格式化数值NumberFormatNumberFormat 是所有数字格式的抽象基类。此类是所有数字格式的抽象基类。此类提供了格式化和分析数字的接口。提供了格式化和分析数字的接口。 为了格式化当前语言环境的数字,要使用一个工为了格式化当前语言环境的数字,要使用一个工厂类方法:厂类方法: uNumberFormatNumberFormat nfnf = = NumberFormat.getInstan

42、ceNumberFormat.getInstance(); (); 要格式化不同语言环境的日期要格式化不同语言环境的日期uNumberFormatNumberFormat nfnf = = NumberFormat.getInstance(Locale.FRENCHNumberFormat.getInstance(Locale.FRENCH); ); 格式化数值(格式化数值(cont.cont.)parseObjectparseObject( (StringStringsource, source, ParsePositionParsePositionpos)pos)u分析字符串中的文本,以生

43、成一个分析字符串中的文本,以生成一个NumberNumber。voidvoidsetCurrencysetCurrency( (CurrencyCurrencycurrency)currency)u获取格式化货币值时此数字格式使用的货币。获取格式化货币值时此数字格式使用的货币。voidvoidsetMaximumFractionDigitssetMaximumFractionDigits(int(intnewValuenewValue) )u设置数的小数部分的最大位数。设置数的小数部分的最大位数。voidvoidsetMaximumIntegerDigitssetMaximumIntegerD

44、igits(int(intnewValuenewValue) )u设置数的整数部分允许的最大位数。设置数的整数部分允许的最大位数。voidvoidsetMinimumFractionDigitssetMinimumFractionDigits(int(intnewValuenewValue) )u设置数的小数部分允许的最小位数。设置数的小数部分允许的最小位数。voidvoidsetMinimumIntegerDigitssetMinimumIntegerDigits(int(intnewValuenewValue) )u设置数的整数部分允许的最小位数。设置数的整数部分允许的最小位数。voidv

45、oidsetParseIntegerOnlysetParseIntegerOnly(boolean(booleanvalue)value)u设置数是否应该仅作为整数来分析。设置数是否应该仅作为整数来分析。格式化示例格式化示例下面的语句创建一个模式下面的语句创建一个模式“000.00”000.00”的的DecimalFormatDecimalFormat实例实例 uNumberFormatNumberFormat nfnf = = NumberFormat.getInstanceNumberFormat.getInstance();();uDecimalFormatDecimalFormat d

46、fdf(DecimalFormatDecimalFormat)nfnf; ;如:如:udf.applyPattern(“000.00”);df.applyPattern(“000.00”);udf.format(30.8989)df.format(30.8989)返回返回030.90030.90再如:再如: udf.applyPattern(00.00%);df.applyPattern(00.00%);udf.format(0.308989)df.format(0.308989)返回返回30.90%30.90%JavaJava程序设计程序设计基于基于开源工具开源工具包开发应用程序包开发应用程

47、序如何使用开源工具包如何使用开源工具包什么是开源代码什么是开源代码如何在程序中引用工具包如何在程序中引用工具包开发独立的应用程序开发独立的应用程序u在在CLASSPATHCLASSPATH环境变量中,指定环境变量中,指定JARJAR文件的位置文件的位置u如:如:CLASSPATHCLASSPATHCLASSPATHCLASSPATH; ;d:/javalib/jexcelapi/jxl.jard:/javalib/jexcelapi/jxl.jar开发运行在特定容器开发运行在特定容器(Web(Web服务器等服务器等) )中的程序中的程序u将将jarjar文件放置在特定目录下文件放置在特定目录下

48、在程序中,用在程序中,用importimport语句引用其中的类语句引用其中的类示例,创建统计图示例,创建统计图1 1、放置指定的、放置指定的jarjar文件到合适位置文件到合适位置2 2、修改、修改classpathclasspath环境变量环境变量3 3、开始编程,注意查看对应的示例代码和参、开始编程,注意查看对应的示例代码和参考文档考文档示例代码示例代码/创建饼型统计图创建饼型统计图public class public class ChartDemoChartDemo uprivate private DefaultPieDatasetDefaultPieDataset initPie

49、DataSetinitPieDataSet() () u DefaultPieDatasetDefaultPieDataset dataset = new dataset = new DefaultPieDatasetDefaultPieDataset();();u dataset.setValuedataset.setValue(60,5);(60,5);u dataset.setValue(60-69,10); dataset.setValue(60-69,10);u dataset.setValue(70-79,15); dataset.setValue(70-79,15);u data

50、set.setValue(80-89,10); dataset.setValue(80-89,10);u dataset.setValue(90-100,5); dataset.setValue(90-100,5);u return dataset; return dataset;u 示例代码示例代码(cont.)(cont.)public void public void createPieChartcreatePieChart()()uDefaultPieDatasetDefaultPieDataset data = data = initPieDataSetinitPieDataSet(

51、);();uJFreeChartJFreeChart chart = ChartFactory.createPieChart3D( chart = ChartFactory.createPieChart3D(u 学生成绩统计图学生成绩统计图, , u data, data,u true, false, false true, false, falseu ); );u / /确定将要输出的图形文件确定将要输出的图形文件u File File filefile=new =new File(d:/pie.jpgFile(d:/pie.jpg););u try try u ChartUtilities

52、.saveChartAsJPEG(fileChartUtilities.saveChartAsJPEG(file, chart, 400,300);, chart, 400,300);u catch ( catch (IOExceptionIOException e) e) u e.printStackTracee.printStackTrace(); (); u 示例代码示例代码(cont.)(cont.)/需要加载的类需要加载的类import import org.jfree.data.general.DefaultPieDatasetorg.jfree.data.general.Defa

53、ultPieDataset; ;import import org.jfree.data.category.CategoryDatasetorg.jfree.data.category.CategoryDataset; ;import import org.jfree.data.category.DefaultCategoryDatasetorg.jfree.data.category.DefaultCategoryDataset; ;import import org.jfree.chart.ChartUtilitiesorg.jfree.chart.ChartUtilities; ;imp

54、ort import org.jfree.chart.JFreeChartorg.jfree.chart.JFreeChart; ;import import org.jfree.chart.ChartFactoryorg.jfree.chart.ChartFactory; ;import import org.jfree.chart.plot.PlotOrientationorg.jfree.chart.plot.PlotOrientation; ;import import java.io.Filejava.io.File; ;import import java.io.IOExcepti

55、onjava.io.IOException; ;ExcelExcel处理处理加载所需的类加载所需的类uimport import java.io.Filejava.io.File; ;uimport import jxl.write.WritableCellFormatjxl.write.WritableCellFormat; ;uimport import jxl.write.WritableFontjxl.write.WritableFont; ;uimport import jxl.write.WritableWorkbookjxl.write.WritableWorkbook; ;ui

56、mport import jxl.Workbookjxl.Workbook; ;uimport import jxl.format.Alignmentjxl.format.Alignment; ;ExcelExcel处理处理(cont.)(cont.)创建创建SheetSheet,并初始化,并初始化uWritableWorkbookWritableWorkbook workbook =null; workbook =null;ujxl.write.WritableSheetjxl.write.WritableSheet wsws=null;=null;uworkbook = workbook

57、= Workbook.createWorkbook(newWorkbook.createWorkbook(new File(d:/exceldemo.xlsFile(d:/exceldemo.xls););uwsws = = workbook.createSheetworkbook.createSheet(学生成绩表学生成绩表, 0);, 0);uws.setRowView(0,400);/ws.setRowView(0,400);/设置行高设置行高uws.setColumnView(0,40);/ws.setColumnView(0,40);/设置列宽设置列宽uws.setColumnVie

58、w(1,40);ws.setColumnView(1,40);uws.setColumnView(2,40);ws.setColumnView(2,40);uws.setColumnView(3,40);ws.setColumnView(3,40);ExcelExcel处理处理(cont.)(cont.)创建表头创建表头uWritableFontWritableFont wfwf=new =new WritableFont(WritableFont.TIMES,14,WritableFont.BOWritableFont(WritableFont.TIMES,14,WritableFont.B

59、OLD,true);LD,true);uWritableCellFormatWritableCellFormat cfcf=new =new WritableCellFormat(wfWritableCellFormat(wf););ucf.setAlignment(Alignment.CENTREcf.setAlignment(Alignment.CENTRE););ulabel = new jxl.write.Label(0, 0, 2007label = new jxl.write.Label(0, 0, 200720082008学年学年第一学期第一学期JavaJava成绩表成绩表,cf

60、cf););uws.addCell(labelws.addCell(label););uws.mergeCells(0,0,3,0);/ws.mergeCells(0,0,3,0);/uwfwf=null;=null;ucfcf=null;=null;ExcelExcel处理处理(cont.)(cont.)设置设置ColumnHeaderColumnHeaderuwfwf=new =new WritableFont(WritableFont.TIMES,10,WritableFont.NO_WritableFont(WritableFont.TIMES,10,WritableFont.NO_B

61、OLD,true);BOLD,true);ucfcf=new =new WritableCellFormat(wfWritableCellFormat(wf););ulabel = new jxl.write.Label(0, 2, label = new jxl.write.Label(0, 2, 学号学号););uws.addCell(labelws.addCell(label););ulabel = new jxl.write.Label(1, 2, label = new jxl.write.Label(1, 2, 期中成绩期中成绩););uws.addCell(labelws.add

62、Cell(label););ulabel = new jxl.write.Label(2, 2, label = new jxl.write.Label(2, 2, 期末成绩期末成绩););uws.addCell(labelws.addCell(label););ulabel = new jxl.write.Label(3, 2, label = new jxl.write.Label(3, 2, 总评成绩总评成绩););uws.addCell(labelws.addCell(label););ExcelExcel处理处理(cont.)(cont.)批量增加数据到批量增加数据到ExcelExc

63、el for(intfor(int line=3;line30;line+) line=3;line30;line+)ujxl.write.Labeljxl.write.Label label0 = new jxl.write.Label(0, line, label0 = new jxl.write.Label(0, line, 00+Integer.toString(line);00+Integer.toString(line);uws.addCell(label0);ws.addCell(label0);ujxl.write.Numberjxl.write.Number label2 =

64、 new jxl.write.Number(1, label2 = new jxl.write.Number(1, line, line);line, line);uws.addCell(label2);ws.addCell(label2);ujxl.write.Numberjxl.write.Number label3 = new jxl.write.Number(2, label3 = new jxl.write.Number(2, line, line);line, line);uws.addCell(label3);ws.addCell(label3);ujxl.write.Numberjxl.write.Number label4 = new jxl.write.Number(3, label4 = new jxl.write.Number(3, line,line+lineline,line+line););uws.addCell(label4);ws.addCell(label4); ExcelExcel处理处理(cont.)(cont.)输出,并关闭文件输出,并关闭文件uworkbook.writeworkbook.write();();uworkbook.closeworkbook.close();();

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

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

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