java中常用实用类.ppt

上传人:max****ui 文档编号:6359598 上传时间:2020-02-23 格式:PPT 页数:44 大小:1.24MB
返回 下载 相关 举报
java中常用实用类.ppt_第1页
第1页 / 共44页
java中常用实用类.ppt_第2页
第2页 / 共44页
java中常用实用类.ppt_第3页
第3页 / 共44页
点击查看更多>>
资源描述
2020 2 23 1 第7章常用实用类 Date类和Calendar类Math类与Biglnteger类数字格式化LinkedList泛型类HashSet泛型类HashMap泛型类TreeSet泛型类TreeMap泛型类Stack泛型类 2020 2 23 2 7 1Date类 1 Date对象 Date类在java util包中 使用Date类的无参数构造方法创建的对象可以获取本地当前时间 用Date的构造方法Date longtime 创建的Date对象表示相对1970年1月1日0点 GMT 的时间 如参数time取值60 60 1000秒 表示ThuJan0101 00 00GMT1970 System类的静态方法publiclongcurrentTimeMillis 可以获取系统当前时间 这个时间是从1970年1月1日0点 GMT 到目前时刻所走过的毫秒数 这是一个不小的数 可以根据currentTimeMillis 方法得到的数字 用Date的构造方法Date longtime 来创建一个本地日期的Date对象 2020 2 23 3 2 格式化时间 Date对象表示时间的默认顺序是 星期 月 日 小时 分 秒 年 如SatApr2821 59 38CST2001可以使用DateFormat的子类SimpleDateFormat来实现日期的格式化 SimpleDateFormat有一个常用构造方法 publicSimpleDateFormat Stringpattern 该构造方法可以用参数pattern指定的格式创建一个对象sdf sdf调用publicStringformat Datedate 方法格式化时间参数date指定的时间对象 format方法将根据创建sdf对象时所使用的参数pattern返回一个字符串对象formatTime StringformatTime sdf format newDate 需要注意的是 当使用SimpleDateFormat Stringpattern 构造对象sdf时 参数pattern中应当含有 时间元字符 例如 对于 pattern yyyy mm dd 如果当前机器的时间是2008年8月12日 那么sdf format newDate 返回的字符串就是2008 08 12 也就是说sdf format newDate 返回的字符串就是将pattern中的时间元字符 yyyy mm和dd替换相应的时间数据之后的一个字符串 2020 2 23 4 常用时间元字符 y yy 2位数字年份 如98 yyyy 4位数字年份 如2008 M MM 2位数字月份 如08MMM 汉字月份 如八月 d dd 2位数字日期 如09 22 a 上午或下午 H HH 2位数字小时 00 23 h hh 2位数字小时 am pm 01 12 m mm 2位数字分 s ss 2位数字秒 E EE 星期 例7 1中 用3种格式输出时间 2020 2 23 5 7 2Calendar类 Calendar类在java util包中 Calendar类的static方法getInstance 可以初始化一个日历对象 如Calendarcalendar Calendar getInstance 然后 calendar对象可以调用方法 publicfinalvoidset intyear intmonth intdate publicfinalvoidset intyear intmonth intdate inthour intminute publicfinalvoidset intyear intmonth intdate inthour intminute intsecond 将日历翻到任何一个时间 当参数year取负数时表示公元前 publicintget intfield 可以获取有关年份 月份 小时 星期等信息 参数field的有效值由Calendar的静态常量指定 例如 calendar get Calendar MONTH 返回一个整数 0表示当前日历是在一月 1表示当前日历是在二月等 日历对象调用 publiclonggetTimeInMillis 可以将时间表示为毫秒 例7 2使用Calendar来表示时间 并计算了1931年9月18日和1945年8月15日之间相隔的天数 效果图例7 3输出1931年9月的日历 效果如图7 1所示 2020 2 23 6 例子7 2 例子7 3效果图 例子7 2效果图 2020 2 23 7 7 3Math类与BigInteger类 1 Math类java lang包中的类包含许多用来进行科学计算的类方法 这些方法可以直接通过类名调用 Math类还有两个静态常量 E和PI 它们的值分别是2 7182828284590452354和3 14159265358979323846 2020 2 23 8 Math类的常用方法 publicstaticlongabs doublea 返回a的绝对值 publicstaticdoublemax doublea doubleb 返回a b的最大值 publicstaticdoublemin doublea doubleb 返回a b的最小值 publicstaticdoublerandom 产生一个0到1之间的随机数 不包括0和1 publicstaticdoublepow doublea doubleb 返回a的b次幂 publicstaticdoublesqrt doublea 返回a的平方根 publicstaticdoublelog doublea 返回a的对数 publicstaticdoublesin doublea 返回正弦值 publicstaticdoubleasin doublea 返回反正弦值 2020 2 23 9 对数字格式化 NumberFormat类 java text包中的NumberFormat类 该类调用类方法publicstaticfinalNumberFormatgetInstance 实例化一个NumberFormat对象 该对象调用publicfinalStringformat doublenumber 方法可以格式化数字number NumberFormat类有如下常用方法 publicvoidsetMaximumFractionDigits intnewValue publicvoidsetMinimumFractionDigits intnewValue publicvoidsetMaximumIntegerDigits intnewValue publicvoidsetMinimumIntegerDigits intnewValue 例7 4用一定的格式输出10的平方根 通过一个20次的循环 每次获取1 8之间的一个随机数 效果如图7 2所示 例7 5使用自己编写的MyNumberFormat类中的方法格式化10的平方根 效果如图7 3所示 2020 2 23 10 例子7 4 例子7 5效果图 2020 2 23 11 2 BigInteger类 java math包中的BigInteger类提供任意精度的整数运算 可以使用构造方法publicBigInteger Stringval 构造一个十进制的BigInteger对象 该构造方法可以发生NumberFormatException异常 也就是说 字符串参数val中如果含有非数字字母就会发生NumberFormatException异常 2020 2 23 12 BigInteger类的常用方法 publicBigIntegeradd BigIntegerval 返回当前大整数对象与参数指定的大整数对象的和 publicBigIntegersubtract BigIntegerval 返回当前大整数对象与参数指定的大整数对象的差 publicBigIntegermultiply BigIntegerval 返回当前大整数对象与参数指定的大整数对象的积 publicBigIntegerdivide BigIntegerval 返回当前大整数对象与参数指定的大整数对象的商 publicBigIntegerremainder BigIntegerval 返回当前大整数对象与参数指定的大整数对象的余 publicintcompareTo BigIntegerval 返回当前大整数对象与参数指定的大整数的比较结果 返回值是1 1或0 分别表示当前大整数对象大于 小于或等于参数指定的大整数 publicBigIntegerabs 返回当前大整数对象的绝对值 publicBigIntegerpow intexponent 返回当前大整数对象的exponent次幂 publicStringtoString 返回当前大整数对象十进制的字符串表示 publicStringtoString intp 返回当前大整数对象p进制的字符串表示 例7 6计算了2个大整数的和 差 积和商 并计算出了一个大整数的因子个数 2020 2 23 13 例子7 6效果图 2020 2 23 14 7 4数字格式化 所谓数字格式化 就是按着指定格式得到一个字符串 例如 希望3 141592最多保留2位小数 那么得到的格式化字符串应当是 3 14 希望整数1234789按 千 分组 那么得到的格式化字符串应当是 1 234 789 数字59 88887的小数保留3位小数 整数部分至少要显示3位 那么得到的格式化字符串应当是 059 889 2020 2 23 15 1 Formatter类 Formatter类提供了一个和C语言printf函数类似的format方法 format 格式化模式 值列表 该方法按着 格式化模式 返回 值列表 的字符串表示 1 格式化模式 用双引号括起的字符序列 字符串 该字符序列中的字符由格式符和普通字符所构成 例如 输出结果 d f d 中的 d和 f是格式符号 开始的4个汉字 中间的两个逗号是普通字符 格式符将被替换 例如 Strings String format 2f 3 141592 那么s就是 3 14 2 值列表 是用逗号分隔的变量 常量或表达式 要保证format方法 格式化模式 中的格式符的个数与 值列表 中列出的值的个数相同 例如 Strings format d元 0 3f公斤 d台 888 999 777666 123 那么s就是 888元999 778公斤123台 3 格式化顺序 format方法默认按从左到右的顺序使用 格式化模式 中的格式符来格式化 值列表 中对应的值 而 格式化模式 中的普通字符保留原样 例如 假设int型变量x和double型变量的值分别是888和3 1415926 那么对于Strings format 从左向右 d 3f d x y 100 字符串s就是 从左向右 888 3 142 100 2020 2 23 16 2 格式化整数 1 d o x和 X可格式化byte Byte short Short int Integer long和Long型数据 如 Strings String format d o x X 703576 703576 703576 703576 字符串s就是 703576 2536130 abc58 ABC582 修饰符 加号修饰符 逗号修饰符 如Strings String format 按千分组 d 按千分组带正号 d 1235678 9876 字符串s就是 按千分组 1 235 678 按千分组带正号 9 8763 数据的宽度 md 或 md Strings String format 8d 59 字符串s就是 59 其长度 s length 为8 s在59左面添加了6个空格字符 注 如果实际数字的宽度大于格式中指定的宽度 就按数字的实际宽度进行格式化 可以在宽度的前面增加前缀0 表示用数字0来填充宽度左面的富裕部分 如 Strings String format 08d 12 字符串s就是 00000012 其长度 s length 为8 即s在12的左面添加了6个数字0 2020 2 23 17 3 格式化浮点数 1 f e E g G 和 a A 可格式化float Float double和Double 如 Strings String format f e 13579 98 13579 98 字符串s就是13579 980000 1 357998e 042 修饰 加号修饰符 逗号修饰符 如 Strings String format 整数部分按千分组 f 按千分组带正 f 1235678 9876 字符串s就是整数部分按千分组 1 235 678 9876003 限制小数位数与数据的 宽度 nf n是保留的小数位数 如 3f将6 1256格式化为 3 126 保留3位小数 mf md 规定宽度 在数字的左 右面增加空格 如 Strings String format 11f 59 88 字符串s就是 59 880000 s在数字左面添加了2个空格字符 m n 指定宽度的同时也可以限制小数位数 如 Strings String format 11 2f 59 88 字符串s就是 59 88 即s在59 88左面添加了6个空格字符 例7 7格式化数字 运行效果如图7 4 2020 2 23 18 例子7 7效果图 2020 2 23 19 7 5LinkedList泛型类 使用LinkedList泛型类可以创建链表结构的数据对象 链表是由若干个节点组成的一种数据结构 每个节点含有一个数据和下一个节点的引用 单链表 或含有一个数据以及上一个节点的引用和下一个节点的引用 双链表 节点的索引从0开始 链表适合动态改变它存储的数据 如增加 删除节点等 2020 2 23 20 1 LinkedList对象 java util包中的LinkedList泛型类创建的对象以链表结构存储数据 习惯上称LinkedList类创建的对象为链表对象 例如 LinkedListmylist newLinkedList 创建一个空双链表 然后mylist可以使用add Stringobj 方法向链表依次增加节点 节点中的数据是参数obj指定对象的引用 如mylist add How mylist add Are mylist add You mylist add Java 这时 双链表mylist就有了有 个节点 节点是自动连接在一起的 不需要我们去做连接 也就是说 不需要我们去操作安排节点中所存放的下一个或上一个节点的引用 2020 2 23 21 2 常用方法 1 publicbooleanadd Eelement 向链表末尾添加一个新的节点 该节点中的数据是参数elememt指定的对象 publicvoidadd intindex Eelement 向链表的指定位置添加一个新的节点 该节点中的数据是参数elememt指定的对象 publicvoidaddFirst Eelement 向链表的头添加新节点 该节点中的数据是参数elememt指定的对象 publicvoidaddLast Eelement 向链表的末尾添加新节点 该节点中的数据是参数elememt指定的对象 publicvoidclear 删除链表的所有节点 使当前链表成为空链表 publicEremove intindex 删除指定位置上的节点 publicbooleanremove Eelement 删除首次出现含有数据element的节点 publicEremoveFirst 删除第一个节点 并返回这个节点中的对象 publicEremoveLast 删除最后一个节点对象 并返回这个节点中的对象 publicEget intindex 得到链表中指定位置处节点中的对象 publicEgetFirst 得到链表中第一个节点中的对象 publicEgetLast 得到链表中最后一个节点中的对象 2020 2 23 22 2 常用方法 2 publicintindexOf Eelement 返回含有数据element的节点在链表中首次出现的位置 如果链表中无此节点则返回 1 publicintlastIndexOf Eelement 返回含有数据element的节点在链表中最后出现的位置 如果链表中无此节点则返回 1 publicEset intindex Eelement 将当前链表index位置节点中的对象element替换为参数element指定的对象 并返回被替换的对象 publicintsize 返回链表的长度 即节点的个数 publicbooleancontains Objectelement 判断链表节点中是否有节点含有对象element publicObjectclone 得到当前链表的一个克隆链表 该克隆链表中节点数据的改变不会影响到当前链表中节点的数据 反之亦然 例7 8使用了上述一些方法 效果如图7 5所示 2020 2 23 23 例子7 8效果图 2020 2 23 24 3 遍历链表 可以借助泛型类Iterator实现遍历链表 一个链表对象可以使用iterator 方法返回一个Iterator类型的对象 该对象中每个数据成员刚好是链表节点中的数据 而且这些数据成员是按顺序存放在Iterator对象中的 Iterator对象使用next 方法可以得到它中的数据成员 显然 使用Iterator对象遍历链表要比链表直接使用get 方法遍历链表的速度快 例7 9中 我们把学生的成绩存放在一个链表中 并实现了遍历链表 2020 2 23 25 4 LinkedList泛型类实现的接口 LinkedList泛型类实现了泛型接口List 而List接口是Collection接口的子接口 LinkedList类中的绝大部分方法都是接口方法的实现 编程时 可以使用接口回调技术 即把LinkedList对象的引用赋值给Collection接口变量或List接口变量 那么接口就可以调用类实现的接口方法 2020 2 23 26 5 JDK1 5之前的LinkedList类 JDK1 5之前没有泛型的LinkedList类 可以用普通的LinkedList创建一个链表对象 如LinkedListmylist newLinkedList 创建了一个空双链表 然后mylist链表可以使用add Objectobj 方法向这个链表依次添加节点 由于任何类都是Object类的子类 因此可以把任何一个对象作为链表节点中的对象 需要注意的是 使用get 获取一个节点中的对象时 要用类型转换运算符转换回原来的类型 Java泛型的主要目的是可以建立具有类型安全的集合框架 如链表 散列表等数据结构 最重要的一个优点就是 在使用这些泛型类建立的数据结构时 不必进行强制类型转换 即不要求进行运行时类型检查 JDK1 5是支持泛型的编译器 它将运行时类型检查提前到编译时执行 使代码更安全 如果使用旧版本的LinkedList类 JDK1 5编译器会给出警告信息 但程序仍能正确运行 下面是使用旧版本LinkedList的例子 例7 10 2020 2 23 27 7 6HashSet泛型类 HashSet泛型类在数据组织上类似数学上的集合 可以进行 交 并 差 等运算 1 HashSet对象HashSet泛型类创建的对象称为集合 如HashSetset HashSet 那么set就是一个可以存储String类型数据的集合 set可以调用add Strings 方法将String类型的数据添加到集合中 添加到集合中的数据称做集合的元素 集合不允许有相同的元素 也就是说 如果b已经是集合中的元素 那么再执行set add b 操作是无效的 集合对象的初始容量是16个字节 装载因子是0 75 也就是说 如果集合添加的元素超过总容量的75 时 集合的容量将增加一倍 2020 2 23 28 2 常用方法 publicbooleanadd Eo 向集合添加参数指定的元素 publicvoidclear 清空集合 使集合不含有任何元素 publicbooleancontains Objecto 判断参数指定的数据是否属于集合 publicbooleanisEmpty 判断集合是否为空 publicbooleanremove Objecto 集合删除参数指定的元素 publicintsize 返回集合中元素的个数 Object toArray 将集合元素存放到数组中 并返回这个数组 booleancontainsAll HanshSetset 判断当前集合是否包含参数指定的集合 publicObjectclone 得到当前集合的一个克隆对象 该对象中元素的改变不会影响到当前集合中元素 反之亦然 可以借助泛型类Iterator实现遍历集合 一个集合对象可以使用iterator 方法返回一个Iterator类型的对象 如果集合是 Student类型 的集合 即集合中的元素是Student类创建的对象 那么该集合使用iterator 方法返回一个Iterator类型的对象 该对象使用next 方法遍历集合 例7 11中 把学生的成绩存放在一个集合中 并实现了遍历集合 效果如图7 6所示 2020 2 23 29 例子7 11效果图 2020 2 23 30 3 集合的交 并与差 集合对象调用booleanaddAll HashSetset 方法可以和参数指定的集合求并运算 使得当前集合成为两个集合的并 集合对象调用booleanbooleanretainAll HashSetset 方法可以和参数指定的集合求交运算 使得当前集合成为两个集合的交 集合对象调用booleanbooleanbooleanremoveAll HashSetset 方法可以和参数指定的集合求差运算 使得当前集合成为两个集合的差参数指定的集合必须和当前集合是同种类型的集合 否则上述方法返回false 例7 12求2个集合A B的对称差集合 即求 效果如图7 7所示 2020 2 23 31 4 HashSet泛型类实现的接口 HashSet泛型类实现了泛型接口Set 而Set接口是Collection接口的子接口 HashSet类中的绝大部分方法都是接口方法的实现 编程时 可以使用接口回调技术 即把HashSet对象的引用赋值给Collection接口变量或Set接口变量 那么接口就可以调用类实现的接口方法 返回 2020 2 23 32 7 7HashMap泛型类 HashMap也是一个很实用的类 HashMap对象采用散列表这种数据结构存储数据 习惯上称HashMap对象为散列映射对象 散列映射用于存储键 值数据对 允许把任何数量的键 值数据对存储在一起 键不可以发生逻辑冲突 两个数据项不要使用相同的键 如果出现两个数据项对应相同的键 那么先前散列映射中的键 值对将被替换 散列映射在它需要更多的存储空间时会自动增大容量 最好使用散列映射来存储要查找的数据 使用散列映射可以减少检索的开销 2020 2 23 33 1 HashMap对象 HashMap泛型类创建的对象称为散列映射 如HashMaphashtable HashMap 那么 hashtable就可以存储键 值对数据 其中的键必须是一个String对象 键对应的值必须是Student对象 hashtable可以调用publicVput Kkey Vvalue 将键 值对数据存放到散列映射中 该方法同时返回键所对应的值 2020 2 23 34 2 常用方法 publicvoidclear 清空散列映射 publicObjectclone 返回当前散列映射的一个克隆 publicbooleancontainsKey Objectkey 如果散列映射有键 值对使用了参数指定的键 方法返回true 否则返回false publicbooleancontainsValue Objectvalue 如果散列映射有键 值对的值是参数指定的值 方法返回true 否则返回false publicVget Objectkey 返回散列映射中使用key作为键的键 值对中的值 publicbooleanisEmpty 如果散列映射不含任何键 值对 方法返回true 否则返回false publicVremove Objectkey 删除散列映射中键为参数指定的键 值对 并返回键对应的值 publicintsize 返回散列映射的大小 即散列映射中键 值对的数目 2020 2 23 35 3 遍历散列映射 如果想获得散列映射中所有键 值对中的值 首先使用publicCollectionvalues 方法返回一个实现Collection接口类创建的对象的引用 并要求将该对象的引用返回到Collection接口变量中 values 方法返回的对象中存储了散列映射中所有键 值对中的 值 这样接口变量就可以调用类实现的方法 如获取Iterator对象 然后输出所有的值 例7 13使用了散列映射的常用方法 并遍历了散列映射 效果如图7 8所示 2020 2 23 36 4 HashMap泛型类实现的接口 HashMap泛型类实现了泛型接口Map HashMap 类中的绝大部分方法都是Map接口方法的实现 编程时 可以使用接口回调技术 即把HashMap对象的引用赋值给Map接口变量 那么接口就可以调用类实现的接口方法 2020 2 23 37 7 8TreeSet泛型类 TreeSet类是实现Set接口的类 TreeSet泛型类创建的对象称为树集 如TreeSettree TreeSet 那么tree就是一个可以存储Student对象的集合 tree可以调用add Students 方法将Student对象添加到树集中 树集用add 方法增加节点 节点会按其存放的数据的 大小 顺序一层一层地依次排列 在同一层中的节点从左到右按 大小 顺序递增排列 下一层的都比上一层的小 为了能使树集按大小关系排列节点 要求添加到树集中的节点中的对象必须是实现Comparable接口类所创建的对象 这样树集就可以按对象的大小关系排列节点 如 TreeSetmytree newTreeSe 然后使用add 方法为树集添加节点 mytree add boy mytree add zoo mytree add apple mytree add girl 当一个树集中的数据是实现Comparable接口类创建的对象时 节点就按对象的大小关系顺序排列 2020 2 23 38 TreeSet类的常用方法 publicbooleanadd Eo 向树集添加加对象 添加成功返回true 否则返回false publicvoidclear 删除树集中的所有对象 publicvoidcontains Objecto 如果包含对象o方法返回true 否则返回false publicEfirst 返回树集中的第一个对象 最小的对象 publicElast 返回最后一个对象 最大的对象 publicisEmpty 判断是否是空树集 如果树集不含对象返回true publicbooleanremove Objecto 删除树集中的对象o publicintsize 返回树集中对象的数目 例7 14使用了树集 其中的Student类实现了Comparable接口 按成绩的高低规定了Student对象的大小关系 树集将Student对象作为节点中数据添加到该树集中 效果如图7 10所示 2020 2 23 39 使用树集注意事项 注 树集中不允许出现大小相等的两个节点 例如 在上述例子中如果再添加语句st4 newStudent 90 zhanying mytree add st4 是无效的 如果允许成绩相同 可把上述例子中Student类中的compareTo方法更改为 publicintcompareTo Objectb Studentst Student b if this english st English 0 return1 elsereturn this english st english 2020 2 23 40 7 9TreeMap泛型类 reeMap类实现了Map接口 TreeMap提供了按排序顺序存储关键字 值对的有效手段 应该注意的是 不像散列映射 HashMap 树映射 TreeMap 保证它的元素按照关键字升序排列 下面是TreeMap的构造函数 TreeMap TreeMap Comparatorcomp 第一种形式构造的树映射 按关键字的大小顺序来排序树映射中的关键字 值对 关键字的大小顺序是按其字符串表示的字典顺序 第二种形式构造的树映射 关键字的大小顺序按Comparator接口规定的大小顺序 树映射按关键字的大小顺序来排序树映射中的关键字 值对 TreeMap类的常用方法与HashMap类相似 例7 15使用了TreeMap 分别按照学生的身高和体重排序对象 效果如图7 11所示 2020 2 23 41 例子7 15效果图 2020 2 23 42 7 10Stack泛型类 堆栈是一种 后进先出 的数据结构 只能在一端进行输入或输出数据的操作 堆栈把第一个放入该堆栈的数据放在最底下 而把后续放入的数据放在已有数据的上面 如图7 12所示 使用java util包中的Stack类创建一个堆栈对象 堆栈对象可以使用如下方法publicEpush Eitem 输入数据 实现入栈操作 publicEpop 输出数据 实现出栈操作 publicbooleanempty 判断堆栈是否还有数据 有数据返回false 否则返回true publicEpeek 获取堆栈顶端的数据 但不删除该数据 publicintsearch Objectdata 获取数据在堆栈中的位置 最顶端的位置是1 向下依次增加 如果堆栈不包含此数据 则返回 1 例7 16用堆栈输出该递归序列的若干项 2020 2 23 43 例子7 16效果图 返回 2020 2 23 44
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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