Java程序设计-8-常用类及开源工具_第1页
Java程序设计-8-常用类及开源工具_第2页
Java程序设计-8-常用类及开源工具_第3页
Java程序设计-8-常用类及开源工具_第4页
Java程序设计-8-常用类及开源工具_第5页
已阅读5页,还剩45页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java程序设计常用类及开源工具学习目标理解Object掌握System类掌握String与StringBuffer了解正则表达式掌握日期处理机制了解定时器掌握随机类Random掌握数值类了解开源代码通过JFreeChart了解如何使用图形绘制类库1. Object Object类是所有Java类(系统提供的,第三方类库、用户自定义的)的根类 。public class Object public Object() public final Class getClass() public int hashCode() public boolean equals(Object obj) prot

2、ected Object clone() throws CloneNotSupportedException public String toString() public final void notify() public final void notifyAll() public final void wait() throws InterruptedException protected void finalize() throws Throwable 对象的哈希码- hashCode() 每个对象都有自己的哈希码,利用这个哈希码可以表示一个对象。在Object 提供的 hashCod

3、e() 的缺省实施通过将对象的内存地址对映于一个整数值来生成。 如果两个对象是相等的,它们必须有相同的 hashCode()值 toString()方法 如:System.out.println(student) 输出:chap5.sample.Postgraduate1172e08对象间的相等性比较-euqals()和”=” 对于两个对象引用变量,equals()比较的是逻辑意义,而不是判断两个引用变量是否是一个对象。但是“=”则判断的是两端的引用变量是否是引用一个对象对于两个字符串,“=”返回true,例如“hello”=“hello”的结果是true。数值类对象和字符串对象之间的逻辑性相

4、等判断,比较的是它们各自的状态(值),所以只要两个对象的值相同,equals()就返回true,但是只要不是引用的同一个对象,=返回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= student3truestudent

5、1.equals(student3)true2. System类System包含了一些我们常用的方法与成员变量。System不能被实例化, 所有的方法都可以直接引用。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法 2. System类(cont.)static PrintStream err“标准”错误输出流。默认是显示器static InputStream in“标准”输入流。默认是键盘static PrintStream out“标准”输出流。默认是显示器arraycopy()指定

6、源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。getProperties()确定当前的系统属性。loadLibrary(String libname)加载由 libname 参数指定的系统库。将库名映射到实际系统库的方法取决于系统currentTimeMillis ()返回以毫秒为单位的当前时间setErr(PrintStream err)新分配“标准”错误输出流。setIn(InputStream in)重新分配“标准”输入流。setOut(PrintStream out)重新分配“标准”输出流。3. String与StringBuffer字符串常量是一个用双引号(“

7、”)括起来的字符序列 编译器会为每一个字符串常量创建对象。另外,字符串常量中可以包含一些不能从键盘上输入的字符,这涉及到字符转义。例如:This is a u03c0 实际上就是 This is a 另外,还需要提醒注意的是:字符串中的所有字符都是Unicode字符,所以每个字符均占两个字节。字符串常量和字符串对象是两个不同的概念,字符串常量有在内存当中由编译器分配的固定区域,保存有字符序列。而字符串对象只是一个引用,所以不能通过字符串对象对常量进行修改,例如:String str=This is a string literal;str=This is other string litera

8、l;另一个例子:String str1=This is a string literal;String str2=This is + a string literal;实际上str1和str2指向了同一引用 字符串运算 字符串连接、比较、分割、子串的查询等连接(+)值比较(equals(),compareTo()对象比较 =提取、检索、分割字符串charAt()、 substring() indexOf();split() 构造格式化字符串public static String format(String format,Object. args)StringBuffer因为String对象是

9、不能修改的,Java语言提供了另外一个能够修改的类似字符串的字符串缓冲区类,就是StringBuffer。对于StringBuffer对象可以进行添加、删除、替换等操作。创建StringBuffer sbf = new StringBuffer();创建一个不带字符的缓冲区,默认容量为16个字符,随着操作容量将发生变化。StringBuffer sbf = new StringBuffer(初始化字符串);按照给定内容创建一个缓冲区,初始容量为16+字符长度。StringBuffer sbf = new StringBuffer(256);创建一个具有初始容量的缓冲区。追加字符串append(

10、.)方法是一个适应于基本类型和引用类型的方法。例如:sbf.append(10);sbf.append(additional string );删除操作StringBuffer delete(int, int) StringBuffer deleteCharAt(int) 增加操作StringBuffer insert(int, boolean|Object|)替换操作StringBuffer replace(int, int, String)void setCharAt(int, char) 从StringBuffer到String基于一个StringBuffer对象的内容创建字符串可以:S

11、tring str=new String(sbf);String str=sbf.toString();4、正则表达式一个例子+|-?(d+(.d*)?)|(.d+)a+123.56,b.4,c-123 +123.56.4-123java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库。它包括两个类:Pattern:是一个正则表达式经编译后的表现模式。Matcher:是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。public class RegxDemo public static void main(String args) /定义

12、正则表达式,以便匹配目标字符串 String regx=+|-?(d+(.d*)?)|(.d+); /定义需要匹配的字符串 String input=a+123.56,b.4,c-123; Matcher matcher=null; /基于定义的正则表达式,创建一个模式对象 Pattern pattern = Ppile(regx); /从模式创建匹配器 matcher =pattern.matcher(input); /循环获得所有的匹配子串 while(matcher.find() /输出每一个匹配成功的子串序列 System.out.println(matcher.group(); 正则

13、表达式是有普通字符,包括大小写字母和数字以及一些具有特殊含义的符号组成的字符序列。简单的如str、str*,复杂的如下面的例子:+|-?(d+(.d*)?)|(.d+)这里面就包括了各种预先定义好的字符在起作用。(字符类、正则表达式内的逻辑操作符、预定义字符类、量词、边界)字符类(Character Classes)abc对应位置上可以是a、b、c三个字母任意一个abc取反,此模式意味着对应位置上可以是除a,b,c 之外的任一字符a-zA-Z-范围,此模式意味着对应位置上可以是大小写字母a-dm-p并,此模式意味着对应位置上可以是a到d, 或者m 到 pa-z&def&交,此模式意味着对应位置

14、上可以是d,e,f a-z&bca 到 z, 排除b和c: 等价于ad-za-z&m-p a 到 z, 排除m到 p: 等价于a-lq-z正则表达式内的逻辑操作符&: 此操作符把定义字符集的类所表达的共同字符范围组织在一起。|: 逻辑或,两者选一。: 对后面的字符类取反,等价于排除定义字符类范围的其它所有字符。预定义字符类(Predefined Character Classes)表8-9 预定义字符类.任意一个字符d一位数字,对应0-9D非数字,对应0-9s空白字符或换行符,对应tnx0BfrS非空白字符,对应sw单字字符(a z、A Z、0 9 以及下划线),对应a-zA-Z_0-9W非单

15、字字符(其它任意字符),对应w量词(Quantifiers)表8-10 量词?表示出现一次或根本不出现*表示出现零次或一次以上(含一次)+表示出现一次或多次n出现n次n,至少n次n,mn次,但不超过m次边界表8-11边界匹配器一行的开始。例如查找每行开始的单词,可以a-zA-Z+b$一行的结束,查找位于行尾的单词a-zA-Z+$,如果有句号,可以a-zA-Z+.$bB单词的边界,查找单词had可以bhadb 非单词边界A指定搜索文本的开始G前一个匹配的结束z指定要搜索的字符串的结尾。要查找字符串结尾处的单词good和句号,可以bgood.zZ表示除最后终止符以外的输入结束。如果设置了UNIX_

16、LINES模式,那么最后终止符就是n,否则,也可以是r、rn、行分割符u2028、段分割符u20295日期处理abstract Calendar类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR MINUTE等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量abstract TimeZone代表一个任意的从格林威治的偏移量, 也包含了适用于夏令时(daylight saving

17、s rules)的信息abstract java.text.DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 - 文本)、分析(文本- 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年,1 月 1 日 00:00:00 这一刻开始的毫秒数SimpleDateFormat是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 - 文本)、分析(文本 - 日期)和规范化java.sql.Dat

18、e继承java.util.DateDate代表一个时间点. 在许多应用中, 此种抽象被称为TimeStamp. 在标准的Java类库实现中,这个时间点代表Unix纪元January 1, 1970, 00:00:00 GMT开始的毫秒数. 因而概念上来说, 这个类是long的简单封装6 定时器创建定时任务import java.util.TimerTask;public class MyTask extends TimerTask int number=10; /控制任务执行次数public void run() if(number0) System.out.println(Hi,i has

19、been started); number-; else System.out.println(task completed); System.exit(0); 创建定时任务import java.util.Timer;public class TimerDemo public static void main(String args) Timer timer=new Timer(); timer.schedule(new MyTask(), 1000,2*1000); 7 Random class RandNumber public static void main(String args)

20、 for(int i=0;i10;i+)System.out.print( +(int)(Math.random()*100);8 数值和字符串Number类转换数值到字符串转换字符串到数值格式化数值Number类及其数值的包装类大多数情况,我们使用基本类型定义和使用变量:int a=10;当你需要一个数值类(包装类)对象(提供一个整数列表、网络传输等)时,当你需要某种数值类的普遍方法或值时,如Float.NEGATIVE_INFINITY 数值包装类的构造函数Integer(int value) 构造一个新分配的 Integer 对象,它表示指定的 int 值。 Integer(String

21、 s) 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。 自动包装/拆箱Integer a5;int i=a; 转换数值到字符串static String toBinaryString(int i) 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。 static String toHexString(int i) 以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。 static String toOctalString(int i) 以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。 String toSt

22、ring() 返回一个表示该 Integer 值的 String 对象。 static String toString(int i) 返回一个表示指定整数的 String 对象。 static String toString(int i, int radix) 用第二个参数指定的基数返回第一个参数的字符串表示形式 转换字符串到数值staticInteger valueOf(Strings)返回保持指定的 String 的值的 Integer 对象。static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析 格式化数值NumberFormat 是所有数

23、字格式的抽象基类。此类提供了格式化和分析数字的接口。 为了格式化当前语言环境的数字,要使用一个工厂类方法: NumberFormat nf = NumberFormat.getInstance(); 要格式化不同语言环境的日期NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH); 格式化数值(cont.)parseObject(Stringsource, ParsePositionpos)分析字符串中的文本,以生成一个Number。voidsetCurrency(Currencycurrency)获取格式化货币值时此数字格式使用的货

24、币。voidsetMaximumFractionDigits(intnewValue)设置数的小数部分的最大位数。voidsetMaximumIntegerDigits(intnewValue)设置数的整数部分允许的最大位数。voidsetMinimumFractionDigits(intnewValue)设置数的小数部分允许的最小位数。voidsetMinimumIntegerDigits(intnewValue)设置数的整数部分允许的最小位数。voidsetParseIntegerOnly(booleanvalue)设置数是否应该仅作为整数来分析。格式化示例下面的语句创建一个模式“000.

25、00”的DecimalFormat实例 NumberFormat nf = NumberFormat.getInstance();DecimalFormat df(DecimalFormat)nf;如:df.applyPattern(“000.00”);df.format(30.8989)返回030.90再如: df.applyPattern(00.00%);df.format(0.308989)返回30.90%Java程序设计基于开源工具包开发应用程序如何使用开源工具包什么是开源代码如何在程序中引用工具包开发独立的应用程序在CLASSPATH环境变量中,指定JAR文件的位置如:CLASSPA

26、THCLASSPATH;d:/javalib/jexcelapi/jxl.jar开发运行在特定容器(Web服务器等)中的程序将jar文件放置在特定目录下在程序中,用import语句引用其中的类示例,创建统计图1、放置指定的jar文件到合适位置2、修改classpath环境变量3、开始编程,注意查看对应的示例代码和参考文档示例代码/创建饼型统计图public class ChartDemo private DefaultPieDataset initPieDataSet() DefaultPieDataset dataset = new DefaultPieDataset(); dataset.

27、setValue(60,5); dataset.setValue(60-69,10); dataset.setValue(70-79,15); dataset.setValue(80-89,10); dataset.setValue(90-100,5); return dataset; 示例代码(cont.)public void createPieChart()DefaultPieDataset data = initPieDataSet();JFreeChart chart = ChartFactory.createPieChart3D( 学生成绩统计图, data, true, fals

28、e, false ); /确定将要输出的图形文件 File file=new File(d:/pie.jpg); try ChartUtilities.saveChartAsJPEG(file, chart, 400,300); catch (IOException e) e.printStackTrace(); 示例代码(cont.)/需要加载的类import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.category.CategoryDataset;import org.jfree.data.categor

29、y.DefaultCategoryDataset;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.ChartFactory;import org.jfree.chart.plot.PlotOrientation;import java.io.File;import java.io.IOException;Excel处理加载所需的类import java.io.File;import jxl.write.WritableCellFormat;import

30、jxl.write.WritableFont;import jxl.write.WritableWorkbook;import jxl.Workbook;import jxl.format.Alignment;Excel处理(cont.)创建Sheet,并初始化WritableWorkbook workbook =null;jxl.write.WritableSheet ws=null;workbook = Workbook.createWorkbook(new File(d:/exceldemo.xls);ws = workbook.createSheet(学生成绩表, 0);ws.setRowView(0,400);/设置行高ws.setColumnView(0,40);/设置列宽ws.setColumnView(1,40);ws.setColumnView(2,40);ws.setColumnView(3,40);Excel处理(cont.)创建表头WritableFont wf=new WritableFont(WritableFont.TIMES,14,WritableFont.BOLD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论