Java高级特性 总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、集合框架和泛型
1.集合框架
(1)定义:java中的集合是指一系列存储数据的接口和类,这些类和接口都位于java.util包
中
(2)原因(为什么使用集合框架):a、数组的大小是固定的;b、数组保存数据类型是单一的;
c、数组操作数据比较复杂
(3)分类:主要有Collection、Map两个接口组成。
Collection接口是集合中最大的接口(与Map接口是等级并列关系)
Collection接口的常用方法,所有的List Set都有这些方法
<1>Collection 接口存储一组不唯一、无序的对象.
<2>List 接口存储一组不唯一、有序的对象.
<3>Set 接口存储一组唯一、无序的对象.
<4>Map 接口存储一组键值对象, 提供key-value(k-v)的映射.
<5>Iterator:迭代器.
<6>Collections:工具类.(提供了对集合进行排序、遍历等多种算法实现)
2、List 接口.
List 接口的实现类:
<1>ArrayList:实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素效率高.
*常用方法:
<2>LinkedList:采用了链表存储方式,插入、删除元素是效率较高.
*常用方法:
3、Set接口
<1>存储唯一、无序的对象.
<2>Set 里面存放的是对象的引用.
<3>采用equals()方法比较两个对象是否为同一对象.
<4>Set是接口,没法new,不存在get()方法(因为set无序)
set接口中的数据不能通过下标去访问
遍历集合:转换成数组增强型for 迭代器
Set 接口的实现类: HashSet
HashSet集合的特点:集合内的元素是无序排列的
HashSet类是非线性安全的
允许集合元素值为null
4、Iterator接口
<1>增强型for
<2>迭代器Iterator
*获取Iterator:Collection 接口的iterate()方法.
*Iterator 的方法:
*boolean hasNext(): 判断是否存在另一个可访问的元素.
*Object next(): 返回要访问的下一个元素.
5、Map 接口.
Map 接口存储一组成对的键key 值value
Key:唯一无序value:不唯一无序
(1) 以键值对形式存储数据(2)不允许出现重复键(3) 元素存储顺序无序Map 接口实现类:
<1>HashMap.
*常用方法:
<2>遍历Map 集合:
*增强型for
*迭代器Iterator
获得Map 键和值的方式:
<1>keySet() --Set
迭代这个Set(Iterator)
get(key)
<2>entrySet()--Set(Map.Entry)
增强型for(或者Iterator)
getKey()
getValue()
6、泛型.
<1>将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性.
<2>典型的泛型集合: ArrayList
*泛型集合中的数据不再转换为Object.
7、Collections类
包含大量的静态方法直接用类名去调
Collections 和Cillection 不同,前者是集合的操作类,后者是集合接口.
Collections 提供的常用静态方法:
<1>sort();排序
<2>binarySearch():查找
<3>max()\min():查找最大\最小值
<4>实现一个类对象之间的比较大小,该类要实现Comparable接口,重写
compareTo()方法
二、实用类
1、枚举:是指由一组固定的常量组成的类型关键字:enum
优点:类型安全易于输出代码清晰
【注】:<1>枚举类型的取值默认为:public static final;
<2>可以定义属性和方法.
<3>构造器必须是私有的.
2、包装类
包装类把基本类型数据转换为对象
基本类型在ng包中都有一个相应的包装类
包装类的作用
提供了一系列实用的方法
集合不允许存放基本数据类型数据,存放数字时,要用包装类型
<1>构造方法.
所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例.
public Type(type value)
如:Integer i=new Integer(1);
除Character 类外,其他包装类可将一个字符串作为参数构造它们的实例.
public Type(String value)
如:Integer i=new Integer("123");
【注】:
*Number 类型的构造时,参数必须能转换为相应的数字,不然NumberFormatException 异常.
*Boolean 类型构造方法参数为String 类型时,若该字符串内容为true(不考虑大小写)则Boolean 对象表示true,否则全都是false.
<2>**Value():
*Number 包装类型转换为基本数据类型.(Byte、Short、Integer、Long、Float、Double) *Boolean 包装类型转换为基本数据类型.
*Character 包装类型转换为基本数据类型(charValue()).
<3>toString():以字符串形式返回包装对象表示的基本类型数据.
<4>valueOf():包装类型
*所有包装类valueOf(type type)
*包装类valueOf(String s) ->除Character 之外
<5>parse**():把字符串转换为相应的基本数据类型数据(Character 除外).
<6>装箱:基本-->包:基本类型转换为包装类的对象.
拆箱:包--->基本:包装类对象转换为基本类型的值.
包装类的特点:
JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
包装类并不是用来取代基本数据类型的
在基本数据类型需要用对象表示时使用
3、Math类
提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率)4、Random类
生成随机数:Math.random(); java.util.Random类
*random():0(包括)-1(不包括)之间的随机浮点数*Random random=new Random(种子); random.nextInt();返回下一个伪随机数,整型的.
5、String类
<1>length():确定字符串的长度,返回字符串中的字符数.
<2>equals():比较存储在两个字符串对象的内容是否一致.返回boolean 类型的值. equals():检查组成字符串内容的字符是否完全一致
equalsIgnoreCase():忽略大小写
toLowerCase():转换为小写.
toUpperCase():转换为大写.
<3>equals()与==
==比较的是两个字符串对象在内存中的地址,判断是否为同一个字符串对象
而equals()比较的是两个字符串对象的值