




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.JAVA 第第7章章 工具类及常用算法工具类及常用算法.7.1 Java语言基础类第3章 数据运算、流控制和数组.7.1.1 Java基础类库njava.lang包是Java语言的核心类库njava.io包是Java语言的标准输入/输出类库njava.util包包括了Java语言中的一些低级的实用工具nava.awt包是Java语言用来构建图形用户界面(GUI)的类库njava.applet包是用来实现运行于Internet浏览器中的Java Applet的工具类库包是Java语言用来实现网络功能的类库n其他包第3章 数据运算、流控制和数组.JDK API文档nJDK API文档可以从网站下
2、载,安装后,打开index.html即可 n网上可以找到chm格式的,甚至中文版第3章 数据运算、流控制和数组.7.1.2 Object类nObject类是Java程序中所有类的直接或间接父类 第3章 数据运算、流控制和数组.7. 类类jave.lang.Objectn类类java.lang.Object处于处于Java开发环境的类层次开发环境的类层次树的根部,其他所有的类都直接或间接地为它的树的根部,其他所有的类都直接或间接地为它的子类。该类定义了一些所有对象最基本的状态和子类。该类定义了一些所有对象最基本的状态和行为,包括与同类对象相比较,转化为字符串等行为,包括与同类对象相比较,转化为字
3、符串等等。下面我们分别进行介绍等。下面我们分别进行介绍(详细用法大家可以查详细用法大家可以查阅阅Java JDK的的API)。第3章 数据运算、流控制和数组.(1) equals( )n用来比较两个对象是否相同,如果相同,则返回用来比较两个对象是否相同,如果相同,则返回true,否则返回,否则返回false,它比较的是两个对象状态,它比较的是两个对象状态和功能上的相同,而不是引用上的相同。和功能上的相同,而不是引用上的相同。nInteger one = new Integer (1);nInteger anotherOne = new Integer (1);nif (one.equals (
4、anotherOne)nSystem.out.println (“objects are equal”);n例中,例中,equals( )方法返回方法返回true,因为对象,因为对象One和和anotherOne 包含相同的整数值包含相同的整数值1.第3章 数据运算、流控制和数组.(2) getClass ( )ngetClass ( )方法是方法是final方法,它不能被重载。方法,它不能被重载。它返回一个对象在运行时所对应的它返回一个对象在运行时所对应的类的表示,类的表示,从从而可以得到相应的信息。下面的方法得到并显示而可以得到相应的信息。下面的方法得到并显示对象的类名:对象的类名:nvo
5、id PrintClassName( Object obj )nn System.out.println(“ The objects class is “ + obj.getClass( ).getName( ) );n第3章 数据运算、流控制和数组.n可以用可以用getClass创建一个类的实例,而不必在编译时即知创建一个类的实例,而不必在编译时即知道到底是哪个类。下例创建了一个与对象道到底是哪个类。下例创建了一个与对象obj具有相同类具有相同类型的一个新的实例,所创建的对象可以是任何类。型的一个新的实例,所创建的对象可以是任何类。nObject creatNewInstanceOf (ob
6、ject obj)nn return obj.getClass( ).newInstance( );n第3章 数据运算、流控制和数组.(3) toString( ) ntoString( )方法用来返回对象的字符串表示,可方法用来返回对象的字符串表示,可以用来显示一个对象。例如:以用来显示一个对象。例如:nSystem.out.println ( Thread.currentThread ( ).toString ( ) );n可以显示当前的线程。可以显示当前的线程。n通过重载通过重载toString ( )方法可以适当地显示对象的方法可以适当地显示对象的信息以进行调试。信息以进行调试。第3章
7、 数据运算、流控制和数组.(4) finalize( )n用于在垃圾收集前清除对象,前面已经讲述。用于在垃圾收集前清除对象,前面已经讲述。第3章 数据运算、流控制和数组.7.1.3 基本数据类型的包装类nJava的基本数据类型用于定义简单的变量和属性将十分方便,但为了与面向对象的环境一致,Java中提供了基本数据类型的包装类(wrapper),它们是这些基本类型的面向对象的代表。与8种基本数据类型相对应,基本数据类型的包装类也有8种,分别是:Character,Byte,Short,Integer,Long,Float,Double,Boolean。n这几个类有以下共同特点。n(1)这些类都提
8、供了一些常数,以方便使用,如Integer.MAX_VALUE(整数最大值), Double.NaN(非数字),Double. POSITIVE_INFINITY(正无穷)等。n(2)提供了valueOf(String),toString(),用于从字符串转换及或转换成字符串。n(3)通过xxxxValue()方法可以得到所包装的值,Integer对象的intValue()方法。n(4)对象中所包装的值是不可改变的(immutable)。要改变对象中的值只有重新生成新的对象。n(5)toString(), equals()等方法进行了覆盖。n除了以上特点外,有的类还提供了一些实用的方法以方便操
9、作。例如,Double类就提供了更多的方法来与字符串进行转换。第3章 数据运算、流控制和数组.n/double转成string的几种方法nd=3.14159;ns = + d;ns = Double.toString( d );ns = new Double(d).toString();ns = String.valueOf( d );n/ String转成double的几种方法ns = 3.14159;ntrynd = Double.parseDouble( s );nd = new Double(s).doubleValue();nd = Double.valueOf( s ).doubl
10、eValue();nncatch(NumberFormatException e )nne.printStackTrace();n第3章 数据运算、流控制和数组.7.1.4 Math类nMath类用来完成一些常用的数学运算 npublic final static double E;/ 数学常量en public final static double PI;/ 圆周率常量npublic static double abs(double a);/ 绝对值npublic static double exp(double a);/ 参数次幂nublic static double floor(do
11、uble a);/ 不大于参数的最大整数n public static double IEEE remainder(double f1,double f2);/ 求余n public static double log(double a);/ 自然对数n public static double max(double a,double b);/ 最大值n public static float min(float a,float b);/ 最小值npublic static double pow(double a,double b);/ 乘方n public static double ran
12、dom();/ 产生0和1(不含1)之间的伪随机数n public static double rint(double a);/ 四舍五入n public static double sqrt(double a);/ 平方根n public static double sin(double a);/ 正弦n public static double cos(double a);/ 余弦n public static double tan(double a);/ 正切n public static double asin(double a);/ 反正弦n public static double
13、 acon(double a);/ 反余弦n public static double atan(double a);/ 反正切第3章 数据运算、流控制和数组.7.1.5 System类在Java中,系统属性起到替代环境变量的作用(环境变量是平台相关的)可使用System.getProperties()方法获得一个 Properties类的对象,其中包含了所有可用的系统属性信息可使用System.getProperty(String name)方法获得特定系统属性的属性值在命令行运行Java程序时可使用-D选项添加新的系统属性第3章 数据运算、流控制和数组.7. 2 字符串n程序中需要用到的字
14、符串可以分为两大类,一类是创建之后不会再做修改和变动的字符串常量;另一类是创建之后允许再做更改和变化的字符串。前者是String类,后者是StringBuffer类。 第3章 数据运算、流控制和数组.7.2.1 String类nString 类对象保存不可修改(immutable)的Unicode字符序列 nString类的下述方法能创建并返回一个新的String对象: concat, replace, substring, toLowerCase, toUpperCase, trim,toString.n提供查找功能的有关方法: endsWith, startsWith, indexOf,,
15、lastIndexOf.n提供比较功能的方法: equals, equalsIgnoreCase, n其它方法: charAt ,length.第3章 数据运算、流控制和数组.7.2.2 StringBuffer类StringBuffer类对象保存可修改的Unicode字符序列构造方法 nStringBuffer() nStringBuffer(int capacity) nStringBuffer(String initialString)实现修改操作的方法: nappend, insert, reverse, setCharAt, setLength.第3章 数据运算、流控制和数组.7.2
16、.3 StringTokenizer类njava.util.StringToken类提供了对字符串进行解析和分割的功能。比如,要对一条语句进行单词的区分,就可以用到该类。nStringTokenizer的构造方法有:nStringTokenizer(String str); nStringTokenizer(String str, String delim); nStringTokenizer(String str, String delim, boolean returnDelims);n其中,str是要解析的字符串,delim是含有分隔符的字符串,returnDelims表示是否将分隔符也
17、作为一个分割串。n该类的重要方法有:n public int countTokens();/ 分割串的个数n public boolean hasMoreTokens();/ 是否还有分割串n public String nextToken();/ 得到下一分割串.7.3 集合类第3章 数据运算、流控制和数组.7.3.1 集合与Collection APICollection API提供“集合”的功能Collection API包含下述接口nCollection: 将一组对象以集合元素的形式组织到一起,在其子接口中分别实现不同的组织方式nSet: (Collection的子接口) 不记录元素的
18、保存顺序,且不允许有重复元素nList: (Collection的子接口)记录元素的保存顺序,且允许有重复元素第3章 数据运算、流控制和数组.Collection+add(element : Object) : boolean+remove(element : Object) : boolean+size() : int+isEmpty() : boolean+contains(element : Object) : boolean+iterator() : IteratorSetHashSetListArrayListVector第3章 数据运算、流控制和数组.Iterator接口定义了对C
19、ollection类型对象中所含元素的遍历等增强处理功能n可以通过Collection接口中定义的iterator()方法获得一个对应的Iterator(实现类)对象nSet (实现类)对象对应的Iterator仍然是无序的nList(实现类)对象对应的ListIterator对象可以实现对所含元素的双向遍历: 使用next()方法和previous()方法第3章 数据运算、流控制和数组.Iterator+hasNext() : boolean+next() : boolean+remove() ListIterator+hasPrevious() : boolean+previous() :
20、 Object+add(element : Object)+set(element : Object) 第3章 数据运算、流控制和数组.nVectorn相当于动态数组(比JDK1.0中的 ArrayList好), elementAt, nStacknVector的子类, push, pop, peeknHashtablen实现Map接口, 参见Properties类nEnumeratoionn用另一种方式实现Iterator的功能第3章 数据运算、流控制和数组.7.3.2 Set接口及HashSet类第3章 数据运算、流控制和数组.7.3.3 List接口及ArrayList,Vector类第
21、3章 数据运算、流控制和数组.7.3.4 Iterator及Enumeration第3章 数据运算、流控制和数组.7.3.5 Map接口及Hashtable类.7.4 向量、堆栈、队列第3章 数据运算、流控制和数组.7.4.1 Vector向量n它对应于类似数组的顺序存储的数据结构,但是具有比数组更强大的功能。n它是允许不同类型元素共存的变长数组。npublic Vector(int initCapacity,int capacityIncrement);naddElement(Object obj);ninsertElement(Object obj,int index);nvoid rem
22、oveElementAt(int index); nObject elementAt(int index) n int indexOf(Object obj,int start_index) 第3章 数据运算、流控制和数组.7.4.2 Stack堆栈n是遵循“后进先出”(Last In First Out, LIFO)原则的重要线性数据结构 n(1)构造函数。npublic Stack():是栈类惟一的构造函数,创建堆栈时可以直接调用它。n(2)压栈与弹栈操作。npublic Object push(Object item):将指定对象压入栈中。nPublic Object pop():将堆栈
23、最上面的元素从栈中取出,并返回这个对象。n(3)检查堆栈是否为空npublic boolean empty():若堆栈中没有对象元素,则此方法返回true,否则返回false。 第3章 数据运算、流控制和数组.7.4.3 LinkedList及队列n队列(Queue),也是重要的线性数据结构。队列遵循“先进先出”(First In First Out,FIFO)的原则,固定在一端输入数据(称为加队),另一端输出数据(称为减队)。 第3章 数据运算、流控制和数组.7.5 排序与查找第3章 数据运算、流控制和数组.7.5.1 Arrays类nArrays类是用于对数组进行排序和搜索的类。Array
24、s类为所有基本数据类型的数组提供了sort()和binarySearch() n执行binarySearch()之前应调用sort() npublic static void sort(List list);npublic static void sort(List list, Comparator c);npublic static int binarySearch(List list, Object key);npublic static int binarySearch(List list, Object key, Comparator c);第3章 数据运算、流控制和数组.7.5.2
25、Collections类第3章 数据运算、流控制和数组.7.5.3 冒泡排序n BubbleSort.java 第3章 数据运算、流控制和数组.7.5.4 选择排序nSelectSort.java 第3章 数据运算、流控制和数组.7.5.5 快速排序nQuickSortTest.java 第3章 数据运算、流控制和数组.7.6 遍试、迭代、递归及回溯n本节介绍在程序设计中常用的几种算法,包括遍试、迭代、递归和回溯,这些算法属于“通用算法”,它们在解决许多问题中都有应用。 第3章 数据运算、流控制和数组.7.6.1 遍试n在有限的范围内,可以对所有的值都进行试验和判断,从而找到满足条件的值 nA
26、ll_153.java求三位的水仙花数 nAll_628.java求9999以内的完全数 nAll_220.java 求9999以内的“相亲数” n遍试算法基本的模式nfor(;) if(); 第3章 数据运算、流控制和数组.7.6.2 迭代n是多次利用同一公式进行计算,每次将计算的结果再代入公式进行计算,从而逐步逼近精确解nSqrt.java自编一个函数求平方根 nJulia.java 利用迭代公式求Julia集n迭代的基本模式 nfor(;) x = f(x); 第3章 数据运算、流控制和数组.7.6.3 递归n递归(recursive)就是一个过程调用过程本身。在递归调用中,一个过程执行的某一步要用到它自身的上一步(或上几步)的结果。 nFac.java用递归方法求阶乘 nVonKoch.java画画Von_Koch曲线曲线 nCayleyTree.java 用计算机生成Cayley树 n递归算法的基本模式nf(n) f(n-1); 第3章 数据运算、流控制和数组.7.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国牛头层全掌手套行业投资前景及策略咨询研究报告
- 初中数学教学设计与反思-Microsoft-
- 2025至2031年中国牙片机用磷光片行业投资前景及策略咨询研究报告
- 加强班级安全意识的培训计划
- 幼儿园学期评估与反馈计划
- 仓库管理人才培养的策略计划
- 促进学生之间的合作与交流计划
- 实物管理与信息管理的结合计划
- 情绪表达与交流技巧培训计划
- 建筑业月度个人工作计划
- 生产运作流程管理规定样本
- 福建省动植物疫病防控专项资金管理办法
- 《高级财务管理(第三版)》配套教学课件
- 离婚协议书免费版大全
- DB32T 4076-2021 生活垃圾焚烧稳定化飞灰填埋处置技术标准
- 分析化学第三章酸碱滴定法课件
- 生产安全事故应急预案(含深井铸造)
- 初中数学课程标准(2021版)
- 工程地质测绘ppt版(共61页)
- 水文地质与工程地质勘察工程地质测绘PPT
- 崩塌易发程度数量化评分表
评论
0/150
提交评论