Java基础课程培训 (2).ppt

上传人:wuy****n92 文档编号:70796086 上传时间:2023-01-28 格式:PPT 页数:60 大小:798.50KB
返回 下载 相关 举报
Java基础课程培训 (2).ppt_第1页
第1页 / 共60页
Java基础课程培训 (2).ppt_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《Java基础课程培训 (2).ppt》由会员分享,可在线阅读,更多相关《Java基础课程培训 (2).ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java基础基础褚蕊蕊2011-6-16AgendaJava初级Java进阶Q&AJava初级Java数据类型常用类String、StringBuild、StringBuffer、BigDecimal异常处理Java数据类型概念:数据类型就是对内存位置的抽象表达,数据类型指明了变量或表达式的状态和行为。分类:简单数据类型、复合数据类型简单数据类型:简单数据类型是不能再简化的、内置的数据类型,由编程语言定义,表示真实的数字、字符和整数。例如实数、整数、字符和布尔值。复合数据类型:由简单数据类型的组合形成的更大、更复杂的数据类型。例如类、接口、数组。简单数据类型与复合数据类型的区别栈:由编译器在需

2、要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常为局部变量,函数参数。特点:后进先出(Last-In/First-Out)。堆:由new分配的内存块,他们的释放编译器不用去管,程序结束后,操作系统自动回收。特点:顺序随意Java内存分配形式:栈内存,堆内存。栈与堆都是Java用来在Ram中存放数据的地方。与C+不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。简单数据类型,不存在“引用”的概念,都是直接存储在内存中的内存栈上,数据本身的值就是存储在栈空间里。Java语言中八种基本数据类型都是这样存储的。简单数据类型与复合数据类型的区别继承Object类的复杂数据类型都

3、是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种数据类型的存储,简单的讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上。基本数据类型布尔数据类型(boolean),1位字符类型(char),2字节整数类型(integer)byte1字节short2字节int4字节long8字节浮点数类型(float)float4字节double8字节基本数据类型的转换自动转换当一个较“小”的数据和较“大”的数据一起运算时,系统会自动把较“小”的数据转换为较“大”的数据,再进行运算。自动类型转换图:byteshort(char)intlongfloat

4、double条件:类型兼容;目的类型的数值范围比源类型大;强制转换将较“大”的数据转换为较“小”的数据时,可以使用强制类型转换。如:inta=(int)3.14自动类型转换反序注意:转换附加,char与int类型的转换,如:inta=(int)a;输出a的ASCII码97基本数据类型的包装类Java是一种面向对象语言,java中的类把方法与数据连接在一起,并构成了自包含式的处理单元。但在Java中不能定义基本类型(primitivetype),为了能将基本类型视为对象来处理,并能连接相关的方法,Java为每个基本类型都提供了包装类。包装类:Boolean,Byte,Short,Characte

5、r,Integer,Long,Float,Double注意在Java语言中,字符串没有被当做数组,而是被当做对象来处理的,类String和StringBuffer都可以被用来表示一个字符串。Java语言不支持C、C+中的指针类型、结构类型、枚举类型和联合类型。Java语言中所有简单数据类型的所在内存位数都是固定的。Java语言没有提供无符号整数类型。Java语言的short数据类型很少使用,因为它限制数据有存储为先高字节,后低字节,这样在某些机器中会出错。默认的浮点类型是双精度(double),要想要一个float必须在浮点数后面加F或者f。注意默认的整数类型是int型,要想使用长整型可在后面

6、加“l”或“L”,如:1000L(小写l容易被误认为1,不推荐用)float可以精确到7位有效数字,第8位的数字是第9位数字四舍五入上取得的;double可以精确到16位有效数字,第17位的数字是第18位数字四舍五入上取得的。如果要求精确的答案,请不要使用float和double,因为它们是为了在广域数值范围上提供较为精确的快速近似运算而精心设计的。然而,它们没有提供完全精确的结果。尤其是对货币计算尤为不适合,使用BigDecimal。BigInteger支持任意精度的整数。BigDecimal支持任意精度的定点数。浮点型转化为整型时,不进行四舍五入,直接截断小数点后面的数。注意Java为所有

7、的成员变量提供了默认初始化:byte、short、int、long-0float-0.0fdouble-0.0boolean-falsechar-“u0000,对象类型的引用全被初始化为null。各种基本数据类型进行混合运算,结果会是表达能力最强的那种。如:int和long运算,结果是long,整型和浮点型运算结果是浮点型。特殊的一点是:只要类型比int小(如char、byte、short),那么在运算之前,这些值会自动地转换成int。如:byteb1=12;byteb2=b1+1;/在编译时出错了!因为b1+1已经是int型了!切记!数值计算实例常用类StringStringBufferSt

8、ringBuildBigDecimalStringString是Java中的字符串,用双引号引起来的几个字符,不属于8种基本数据类型,它是一个对象。默认值为null注:String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象.这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似.创建String对象:Strings1=ABCD;Strings2=newString(ABCD);注:newString()和newString(“”)都是申明一个新的空字符串,是空串不是n

9、ullStringstr=”kvill”;Stringstr=newString(“kvill”);的区别常量池(constantpool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。String例1:Strings0=”kvill”;Strings1=”kvill”;Strings2=”kv”+“ill”;System.out.println(s0=s1);System.out.println(s0=s2);结果为:true,true解析:首先Java会确保一个字符串常量只有一个拷贝。因为例子中的s0和s1中的

10、”kvill”都是字符串常量,它们在编译期就被确定了,所以s0=s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。所以s0=s1=s2;用newString()创建的字符串不是常量,不能在编译期就确定,所以newString()创建的字符串不放入常量池中,它们有自己的地址空间。例2:Strings0=”kvill”;Strings1=newString(”kvill”);Strings2=”kv”+newString(“ill”)

11、;System.out.println(s0=s1);falseSystem.out.println(s1=s2);falseSystem.out.println(s0=s2);false解析:s0还是常量池中”kvill”的引用,s1因为无法在编译期确定,所以是运行时创建的新对象”kvill”的引用,s2因为有后半部分newString(“ill”)所以也无法在编译期确定,所以也是一个新创建对象”kvill”的引用。因为每个字符串为一个对象,比较的是他们的引用地址,在堆分配的地址肯定是不一样的。String关于equals()和=这个对于String简单来说就是比较两字符串的Unicode序

12、列是否相当,如果相等返回true;而=是比较两字符串的地址是否相同,也就是是否是同一个字符串的引用。关于String是不可变的String对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。看来似乎修改了String对象的方法实际上是返回一个包含修改内容的新String对象。比如说:Stringstr=”kv”+”ill”+”“+”ans”;就是有4个字符串常量,首先”kv”和”ill”生成了”kvill”存在内存中,然后”kvill”又和”“生成”kvill“存在内存中,最后又和生成了”kvillans”;并把这个字符串的地址赋给了str,就是因为String的“不可变”产

13、生了很多临时变量,这也就是为什么建议用StringBuffer的原因了,因为StringBuffer是可改变的。String的常用方法,见APIStringBuffer线程安全的可变字符序列。String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。构造方法publicStringBuffer()创建一个空的StringBuffer类的对象,默认构造器,由系统自动分配容量,默认是16个字符。publicStringBuffer(intlength

14、)创建一个长度为参数length的StringBuffer类的对象。如果参数length小于0,将触发NegativeArraySizeException异常。publicStringBuffer(Stringstr)用一个已存在的字符串常量来创建StringBuffer类的对象。StringBuffer类的方法StringBuffer类的方法StringBuffer类的方法StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果

15、可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。BigDecimalBigDecimal支持任意精度的定点数。用来对浮点数类型数据进行精确的运算。常见方法见APIBigDecimal的格式化由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。NumberFormatcurrency=NumberFormat.getCurrencyInstance();NumberFormatpercent=NumberFormat.getPer

16、centInstance();currency.format(amount)percent.format(rate)异常处理简介Java异常类的层次结构Java异常处理的分类Java异常的处理方式Java异常处理的原则和忌讳Java异常及异常处理Java异常处理是使用Java语言进行软件开发和测试脚本开发时不容忽视的问题之一,是否进行异常处理直接关系到开发出的软件的稳定性和健壮性。可将Java异常看作是一类消息,它传送一些系统问题、故障及未按规定执行的动作的相关信息。异常包含信息,以将信息从应用程序的一部分发送到另一部分。编译语言为何要处理异常?为何不在异常出现位置随时处理具体故障?因为有时候

17、我们需要在系统中交流错误消息,以便按照统一的方式处理问题,有时是因为有若干处理问题的可能方式,但您不知道使用哪一种,此时,可将处理异常的任务委托给调用方法的代码。调用者通常更能了解问题来源的上下文,能更好的确定恢复方式。通用消息架构从上图可以看出,必定在运行的Java应用程序的一些类或对象中产生异常。出现故障时,“发送者”将产生异常对象。异常可能代表Java代码出现的问题,也可能是JVM的相应错误,或基础硬件或操作系统的错误。异常本身表示消息,指发送者传给接收者的数据“负荷”。首先,异常基于类的类型来传输有用信息。很多情况下,基于异常的类既能识别故障本因并能更正问题。其次,异常还带有可能有用的

18、数据(如属性)。在处理异常时,消息必须有接收者;否则将无法处理产生异常的底层问题。Java异常类的层次结构在Java中,所有的异常都有一个共同的祖先Throwable(可抛出)。Throwable指定代码中可用异常传播机制通过Java应用程序传输的任何问题的共性。Throwable有两个重要的子类:Exception(异常)和Error(错误),二者都是Java异常处理的重要子类,各自都包含大量子类。Exception(异常)是应用程序中可能的可预测、可恢复问题。一般大多数异常表示中度到轻度的问题。异常一般是在特定环境下产生的,通常出现在代码的特定方法和操作中。如:当试图调用readLine方

19、法时,可能出现IOException异常。Error(错误)表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java虚拟机)出现的问题。例如,当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。Exception类有一个重要的子类RuntimeException。RuntimeException类及其子类表示“JVM常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和ArrayIndexOutO

20、fBoundException。Java异常处理的分类可检测异常可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,例如:sqlExecption这个异常就是一个检测异常。你连接JDBC时,不捕捉这个异常,编译器就通不过,不允许编译。非检测异常1、非检测异常不遵循处理或声明规则。在产生此类异常时,不一定非要采取任何适当操作,编译器不会检查是否已解决了这样一个异常。例如:一个数组为3个长度,当你使用下标为时,就会产生数组下标越界异常。这个异常JVM不会进行检测,要靠程序员来判断。有两个主要类定义非检测异常:RuntimeException和Error。自定义异常自

21、定义异常是为了表示应用程序的一些错误类型,为代码可能发生的一个或多个问题提供新含义。可以显示代码多个位置之间的错误的相似性,也可以区分代码运行时可能出现的相似问题的一个或者多个错误,或给出应用程序中一组错误的特定含义。例如,对队列进行操作时,有可能出现两种情况:空队列时试图删除一个元素;满队列时试图添加一个元素。则需要自定义两个异常来处理这两种情况。Java异常的处理方式在Java应用程序中,对异常的处理有两种方式:处理异常和声明异常。处理异常:try、catch和finally代码结构:tryxxx;catch(Exception)finally其中:try块:将一个或者多个语句放入try时

22、,则表示这些语句可能抛出异常。编译器知道可能要发生异常,于是用一个特殊结构评估块内所有语句。catch块:当问题出现时,一种选择是定义代码块来处理问题,catch块的目的便在于此。catch块是try块所产生异常的接收者。基本原理是:一旦生成异常,则try块的执行中止,JVM将查找相应的JVM。finally块:无论运行try块代码的结果如何,无论是否运行完,无论是否产生异常,也无论是否在catch块中得到处理,finally块都将执行。try-catch-finally规则必须在try之后添加catch或finally块。try块后可同时接catch和finally块,但至少有一个块。必须遵

23、循块顺序:若代码同时使用catch和finally块,则必须将catch块放在try块之后。catch块与相应的异常类的类型相关一个try块可能有多个catch块。若如此,则执行第一个匹配块。可嵌套try-catch-finally结构。在try-catch-finally结构中,可重新抛出异常。除了下列情况,总将执行finally做为结束:JVM过早终止(调用System.exit(int));在finally块中抛出一个未处理的异常;计算机断电、失火、或遭遇病毒攻击。声明异常若要声明异常,则必须将其添加到方法签名块的结束位置。例:publicvoidreadMethod(intinput)

24、throwsjava.io.IOException声明异常的规则如下:1、必须声明方法可抛出的任何可检测异常(checkedexception)2、非检测性异常(uncheckedexception)不是必须的,可声明,也可不声明。3、调用方法必须遵循任何可检测异常的处理和声明规则。若覆盖一个方法,则不能声明与覆盖方法不同的异常。声明的任何异常必须是被覆盖方法所声明异常的同类或子类。Java异常处理的原则尽可能的处理异常要尽可能的处理异常,如果条件确实不允许,无法在自己的代码中完成处理,就考虑声明异常。如果人为避免在代码中处理异常,仅作声明,则是一种错误和依赖的实践。具体问题具体解决异常的部分

25、优点在于能为不同类型的问题提供不同的处理操作。有效异常处理的关键是识别特定故障场景,并开发解决此场景的特定相应行为。为了充分利用异常处理能力,需要为特定类型的问题构建特定的处理器块。记录可能影响应用程序运行的异常至少要采取一些永久的方式,记录下可能影响应用程序操作的异常。理想情况下,当然是在第一时间解决引发异常的基本问题。不过,无论采用哪种处理操作,一般总应记录下潜在的关键问题。别看这个操作很简单,但它可以帮助您用很少的时间来跟踪应用程序中复杂问题的起因。根据情形将异常转化为业务上下文若要通知一个应用程序特有的问题,有必要将应用程序转换为不同形式。若用业务特定状态表示异常,则代码更易维护。从某

26、种意义上讲,无论何时将异常传到不同上下文(即另一技术层),都应将异常转换为对新上下文有意义的形式。Java异常处理的忌讳一般不要忽略异常trycatch(IOExceptione)不要使用覆盖式异常处理块trycatch(Exceptione)一般不要把特定的异常转化为更通用的异常trycatch(IOExceptione)thrownewException(“”);不要处理能够避免的异常对于有些异常类型,实际上根本不必处理。通常运行时异常属于此类范畴。在处理空指针或者数据索引等问题时,不必求助于异常处理。Java进阶集合框架格式化排序集合框架CollectionsFramework,基于Ja

27、va2平台,标准版,版本1.2。集合框架”提供了一组精心设计的接口和类,它们以单个单元即集合的形式存储和操作数据组。对于计算机科学数据结构课程中学到的许多抽象数据类型如映射(map)、集(set)、列表(list)、树(tree)、数组(array)、散列表(hashtable)和其它集合来说,该框架提供了一个方便的API。集合接口和类集合框架”由一组用来操作对象的接口组成。不同接口描述不同类型的组。四个基本接口Collection接口是一组允许重复的对象Set接口继承Collection,但不允许重复List接口继承Collection,允许重复,并引入位置下标Map接口既不继承Set也不继

28、承Collection集合实现Collection接口Collection接口用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。基本操作booleanadd(Objectelement)booleanremove(Objectelement)intsize()booleanisEmpty()booleancontains(Objectelement)Iteratoriterator()组操作booleancontainsAll(Collectioncollection)booleanaddAll(Collectioncollection)voidclear()voi

29、dremoveAll(Collectioncollection)voidretainAll(Collectioncollection)取交集Collection接口AbstractCollection类,提供具体“集合框架”类的基本功能。虽然您可以自行实现Collection接口的所有方法,但是,除了iterator()和size()方法在恰当的子类中实现以外,其它所有方法都由AbstractCollection类来提供实现。如果子类不覆盖某些方法,可选的如add()之类的方法将抛出异常。Iterator 接口,接口,使用Iterator接口方法,您可以从头至尾遍历集合,并安全的从底层Coll

30、ection中除去元素。Collectioncollection=.;Iteratoriterator=collection.iterator();while(iterator.hasNext()Objectelement=iterator.next();if(removalCheck(element)iterator.remove();Set接口Set接口继承Collection接口,而且它不允许集合中存在重复项。所有原始方法都是现成的,没有引入新方法。具体的Set实现类依赖添加的对象的equals()方法来检查等同性。HashSet 类和类和 TreeSet 类类HashSet能快速定位一

31、个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了哈希码的算法。TreeSet,是一个有序的Set,其底层是一颗树,放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和ComparatorSet接口SortedSet接口,其中的元素一定是有序的,继承set接口,只有TreeSet这一个实现类。根据“对象的比较顺序”,而不是“插入顺序”进行排序方法说明Comparatorcomparator():返回Set锁使用的Comparator对象,或者用null表示它使用Object自有的排序方法。Obj

32、ectfirst():返回最小的元素Objectlast():返回最大的元素SortedSetsubSet(fromElement,toElement):返回Set的子集,其中的元素从fromElement开始到toElement为止(包括fromElement,不包括toElement)。SortedSetheadSet(toElement):返回Set的子集,其中的元素都应小于toElement。SortedSettailSet(toElement):返回Set的子集,其中的元素都应大于fromElement。Set接口-范例List接口List接口继承了Collection接口以定义一个

33、允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。面向位置的操作包括插入某个元素或Collection的功能,还包括获取、除去或更改元素的功能。方法说明方法说明voidadd(intindex,Objectelement)booleanaddAll(intindex,Collectioncollection)objectget(intindex)intindexOf(Objectelement)intlastIndexOf(Objectelement)objectremove(intindex)objectset(intindex,Objectelement)

34、ListsubList(intfromIndex,inttoIndex)ListIteratorlistIterator()ListIteratorlistIterator(intstartIndex)List接口ListIterator 接口,接口,继承Iterator接口以支持添加或更改底层集合中的元素,还支持双向访问。方法:previous()、next();ArrayList 类和类和 LinkedList 类类ArrayList:采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦LinkedList:采用的将对象存放在独立的空间中,而且

35、在每个空间中还保存下一个链接的索引但是缺点就是查找非常麻烦要丛第一个索引开始。还可以作为堆栈、队列。List接口-范例Map接口Map接口不是Collection接口的继承。而是从自己的用于维护键-值关联的接口层次结构入手。按定义,该接口描述了从不重复的键到值的映射。三组操作:改变、查询和提供可选视图。改变操作允许您从映射中添加和除去键-值对。键和值都可以为null。但是,您不能把Map作为一个键或值添加给自身。Objectput(Objectkey,Objectvalue)Objectremove(Objectkey)voidputAll(Mapmapping)voidclear()查询操作

36、允许您检查映射内容Objectget(Objectkey)booleancontainsKey(Objectkey)booleancontainsValue(Objectvalue)intsize()booleanisEmpty()Map接口可选视图允许您把键或值的组作为集合来处理。publicSetkeySet()publicCollectionvalues()publicSetentrySet()因为映射中键的集合必须是唯一的,您用Set支持。因为映射中值的集合可能不唯一,您用Collection支持。最后一个方法返回一个实现Map.Entry接口的元素SetMap.Entry 接口接口M

37、ap的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键-值对。通过这个集合迭代,您可以获得每一条目的键或值并对值进行更改。但是,如果底层Map在Map.Entry接口的setValue()方法外部被修改,此条目集就会变得无效,并导致迭代器行为未定义。HashMap 类和类和 TreeMap 类类在Map中插入、删除和定位元素,HashMap是最好的选择按顺序遍历键,那么TreeMap会更好Map接口SortedMap接口,其中的键一定是有序的,继承map接口,只有TreeMap这一个实现类。pair是按key的顺序存储的,由于Tr

38、eeMap有顺序的概念,因此“位置”是有意义的,所以你可以去获取它的第一个和最后一个元素,以及它的子集。方法说明Comparatorcomparator():返回Map所使用的comparator,如果是用Object内置的方法的话,则返回null。ObjectfirstKey():返回第一个键。ObjectlastKey():返回最后一个键SortedMapsubMap(fromKey,toKey):返回这个Map的一个子集,其键从fromKey开始到toKey为止,包括前者,不包括后者。SortedMapheadMap(toKey):返回这个Map的一愕嘎子集,其键均小于toKey。Sor

39、tedMaptailMap(fromKey):返回这个Map的一个子集,其键均大于等于fromKey。Map接口实例特殊集合的实现只读集合把所有必要的元素都添加到集合后,为避免意外的修改集合,以只读方式处理该集合会比较方便。Collections类提供了六种工厂方法支持该功能,Collection、List、Map、Set、SortedMap和SortedSet每个一种。CollectionunmodifiableCollection(Collectioncollection)ListunmodifiableList(Listlist)。线程安全集合历史集合类和“集合框架”中新的实现的差别在于

40、新类不是线程安全的。设计者采用这种线程安全方法是让您只在需要时才使用同步,使每项工作快得多。但如果,您正将集合用于多个线程能够同步修改集合的多线程环境,修改就必须同步进行。CollectionsynchronizedCollection(Collectioncollection)。Setset=Collection.synchronizedSet(newHashSet();单元素集合多副本集合,一张由相同元素的多个副本组成的不变的列表。空集合,Collections类还提供表示空集合的常数ListEMPTY_LISTSetEMPTY_SETMapEMPTY_MAP历史集合类数组Vector类和

41、Stack类Enumeration接口Dictionary类、Hashtable类和Properties类BitSet类数组数组被定义为同类型数据的定长集合支持基本数据类型存储的唯一集合可存储对象创建数组时,需指定要存储对象的数量和类型。而且,在某个数组的生存期中,不能增加或存储一个不同的类型高效支持一维、二维、多维度定义一维数组声明typearrayName=value1,value2;typearrayName=newtypearraySize;二维数组声明inta=newint23;inta=newint2;a0=newint3;a1=newint3;初始化:inta=2,3,1,5,3

42、,4;Arrays类,包括了一组可用于数组的static方法基本方法equals():比较两个数组是否相等fill():填充数组sort():数组比较binarySearch():在一个已排序的数组中查找特定元素asList():它接受一个数组,然后把它转成一个List容器复制一个数组:Java标准类库提供了一个System.arraycopy()的static方法。相比for循环,它能以更快的速度拷贝数组。System.arraycopy()对所有类型都作了重载。Vector类和Stack类Vector是个像可增大数组的历史集合类,但它可以存储不同类型的数据元素。Java2SDK,版本2中V

43、ector类被改良到“集合框架”层次结构中以实现List接口。从Vector转换为ArrayList时,一个关键的差别是为了更改元素值的位置,参数的顺序被颠倒了。从原始的Vector类:voidsetElementAt(Objectelement,intindex)从List接口中:voidset(intindex,Objectelement)Stack类继承Vector,通过push()和pop()方法以实现一个标准的后进先出(last-in-first-out(LIFO)堆栈。可是,我们要当心。因为Stack类继承Vector类,您仍然可以用被继承的Vector的方法访问或修改Stack。

44、Enumeration接口Enumeration接口允许您迭代集合中的所有元素。在“集合框架”中,该接口被Iterator接口替Enumeration不支持除去操作。Enumerationenum=.;while(enum.hasNextElement()Objectelement=iterator.nextElement();算法支持对数组排序List的排序是通过Collections类中两种sort()方法进行排序对基本数据类型的数组排序,只要把您的数组作为参数来调用Arrays.sort()对象数组的排序有一点棘手,因为编译器不会为您检查每样东西。如果数组里的对象实现Comparable

45、,如:voidsort(Objectarray,Comparatorcomparator)搜索Collections和Arrays类提供在Collection中查找最大值和最小值的机制,还提供对List或数组进行搜索的机制。检查等同性Arrays类,检查任何基本数据类型数组或对象数组的等同性。如果两个数组包含顺序相同的相同元素,则这两个数组相等。检查对象数组的等同性依赖于每个要检查等同性对象的equals()方法。如:Arrays.equals(array1,array2)元素的操作Collections和Arrays类提供了在List或数组中操作元素的一些方法。除此之外就再没有操作其它关键框

46、架接口(Set和Map)的其它方法了。格式化DateFormatNumberFormatDateFormatSimpleDateFormat是DateFormat的子类,用于格式化日期年代标志符y:年;M:月;d:日;h:上午或下午(112);H:一天(023);m:分;s:秒;S:毫秒将字符串转换为日期Datedate=new SimpleDateFormat(“yyyy-MM-dd”).parse(strDate);将日期类型转换为字符串型String strDate=new SimpleDateFormat(“yyyy-MM-dd”).format(date);NumberFormatD

47、ecimalFormat是NumberFormat的一个具体子类,用于格式化十进制数字。构造DecimalFormattest1=newDecimalFormat(#,#.0000);test1.format(12345.78);DecimalFormattest2=newDecimalFormat();test2.applyPattern(#,#.000);test2.format(12345.78);要获取具体语言环境的NumberFormat,可调用NumberFormat的某个工厂方法,如getInstance()。通常不直接调用DecimalFormat的构造方法,因为NumberFormat的工厂方法可能返回不同DecimalFormat的子类.NumberFormat.getPercentInstance()NumberFormat.getCurrencyInstance();NumberFormat.getNumberInstance()NumberFormat.getIntegerInstance()NumberFormat.getScientificInstance()Q&A山东益信通科贸有限公司

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁