




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、17.5 基本类型包装器与泛型基本类型包装器: 将每种基本类型包装成一种类,一个包装器类的对象可以存储对应基本数据类型,还可以提供相关的方法.int Integer byte Bytechar Character short Shortfloat Float double Double2基本数据类型 - 包装器类int i=10;Integer num=new Integer(i);3Integerl属性4 int i=10; Integer num=new Integer(i); System.out.println(Integer.BYTES); System.out.println(In
2、teger.MAX_VALUE); System.out.println(Integer.MIN_VALUE); System.out.println(Integer.SIZE); System.out.println(Integer.TYPE.toString();5方法:byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue() 6 int i=65535; Integer num=new Integer(i); System.out.
3、println(num.byteValue(); System.out.println(num.shortValue(); System.out.println(Value(); System.out.println(num.floatValue(); System.out.println(num.doubleValue();7static int parseInt(String s) int x=Integer.parseInt(123); System.out.println(x); /123static int parseInt(String s, int radix) i
4、nt x=Integer.parseInt(123,16); System.out.println(x); /10进制的2918public static String toBinaryString(int i) 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。 public static String toOctalString(int i)public static String toHexString(int i) System.out.println(Integer.toBinaryString(10); /1010 9public static int rotat
5、eLeft(int i, int distance) 返回根据指定的位数循环左移指定的 int 值的二进制补码表示形式而得到的值。(位是从左边(即高位)移出,从右边(即低位)再进入) public static int rotateRight(int i, int distance)10 int x=10; System.out.println(Integer.toBinaryString(x); int y=Integer.rotateLeft(x, 2); System.out.println(Integer.toBinaryString(y);11l装包(将基本类型包装成一个类): In
6、teger x=new Integer(5); Integer x=5; /自动进行装包;l拆包 int i=Value(); int i=x; /自动进行拆包127.5.2 泛型l在一个类中,不允许两个方法的定义相同,但返回值不同. public int getX() return x1; public Float getX() return x2; 13lJava用泛型来解决:(1) 泛型类的定义(T做为一种类型,不能为基本类型): class PointDemo private T x; public void setX(T x) this.x=x; 14l(2)定义泛型类的对
7、象(确定T的类型) PointDemo p1=new PointDemo(); p1.setX(30); p1.setX(50);15 PointDemo p2=new PointDemo(); p1.setX(30.2f); p1.setX(50.1f);167.6 集合类l集合类相当于一个容器,在容器中的都是类的对象;ljava.util 接口Collection,它定义了一组允许重复的对象。Collection接口派生了两个子接口Set和List;17lSet接口 Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可重复。 特征:
8、无序且不可重复。 主要实现类: HashSet和TreeSet18 List接口同样也继承于Collection接口,但是与Set接口恰恰相反,List接口的集合类中的元素是对象有序且可重复(每一个对象都有一个序号)。 特征:有序且可重复。 两个重要的实现类:ArrayList和LinkedList 1.ArrayList特点是有序可重复的 2.LinkedList是一个双向链表结构的。19207.6.1 ArrayListl数组列表,可以存储重复对象,特征和数组很接近,但大小可以动态改变.lArrayList() 构造一个初始容量为 10 的空列表。 lArrayList(Collectio
9、n c) lArrayList(int initialCapacity) 构造一个具有指定初始容量的空列表。 21l boolean add(E e) 将指定的元素添加到此列表的尾部。 l void add(int index, E element) 将指定的元素插入此列表中的指定位置。boolean contains(Object o) 如果此列表中包含指定的元素,则返回 true。 22lisEmpty() 如果此列表中没有元素,则返回 truelget(int index) 返回此列表中指定位置上的元素。l int indexOf(Object o) 返回此列表中首次出现的指定元素的索引
10、,或如果此列表不包含元素,则返回 -1。 23 E remove(int index) 移除此列表中指定位置上的元素。 boolean remove(Object o) 移除此列表中首次出现的指定元素(如果存在)。 int size() 返回此列表中的元素数。 24l void clear() 移除此列表中的所有元素。 25 ArrayList a=new ArrayList(); a.add(5); a.add(abc); a.add(new Date(); System.out.println(a.size(); a.add(2,def); String str=(String)a.get
11、(2); /使用get一定要将返回值进行类型转换 System.out.println(str); 26if(a.contains(def) System.out.println(true); a.remove(def); System.out.println(a.indexOf(def); a.clear();27ljava.util.ArrayListArrayList a=new ArrayList();a.add(a);a.add(b);a.add(c);String str=a.get(2); /不需要强制类型转换; a.add(123); /报错.28l作业更新: 怎样要求变量名不
12、能为关键字? 构建数组列表,将关键字保存在数组列表中,将分离出变量名与关键字进行比较。29作业: 20个小朋友玩游戏,按顺序编号(1-20)后围成一个圈,从第一个开始报数(1-13),每次报到7的小朋友淘汰,报到13后,下一个小朋友又从1开始循环报数,请问最后剩下的一个小朋友的编号是多少?307.6.2 Vector类l属性: elementCount:对象中的组件数; 方法: void addElement(Object obj); void insertElementAt(Object obj,int index); void removeAllElement();31 void remo
13、veElement(Object obj); void removeElementAt(int index); Object firstElement(); Object lastElement(); Object ElementAt(int index); Boolean contains(OBject elem);32lP179 例7-25;337.6.3 HashSet类l用哈希算法确定元素在集合中的位置.HashSet() ;构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。 元素总量/ Hashtable 可拥有的元素数=加载因子 ,加
14、载因子是表示Hsah表中元素的填满的程度.若加载因子越大,填满的元素越多,空间利用率高了,但冲突的机会加大了.反之,加载因子越小,填满的元素越少,好处是:冲突的机会减小了,但空间浪费多了.34HashSet(int initialCapacity) 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。 HashSet(int initialCapacity, float loadFactor) 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。 35l boolean add(E e) 如果此 set 中尚未
15、包含指定元素,则添加指定元素。 使用add方法添加元素时,先调用hashCode方法(任何对象都会从Object类继续此方法)确定对象的散列码,根据散列码确定元素的存储位置。36双击增双击增加断点加断点按按F11调试调试,或选择或选择”Run”菜单中的菜单中的”Debug”进入调试视图进入调试视图.37 aa和和bb的的ID都为都为18,说明说明aa和和bb都都指向同一个对象指向同一个对象.38aa:18bb:18栈栈 堆堆常量池常量池 18 abc39 hash为从为从Object继承的继承的hasCode()方法的方法的返回值返回值,称为散列值称为散列值.40 关于关于HashSet,可以
16、看到可以看到Size,表示包含元素的表示包含元素的个数为个数为1个个.这个元素的这个元素的hashCode为为4,元素元素id为为28;41 int size() 返回此 set 中的元素的数量(set 的容量)。42 boolean isEmpty() 如果此 set 不包含任何元素,则返回 true。 43 boolean remove(Object o) 如果指定元素存在于此 set 中,则将其移除。 void clear() 从此 set 中移除所有元素。 44lP180 例7-26和7-27;45 HashSet a=new HashSet(); a.add(123); a.add(
17、123); System.out.println(a.size(); /?467.6.2 HashTablel存储的键值对.元素的键元素的值元素的键元素的值元素的键元素的值元素的键元素的值元素的键元素的值47构造函数: Hashtable() 用默认的初始容量 (11) 和加载因子 (0.75) 构造一个新的空哈希表。 Hashtable(int initialCapacity) 用指定初始容量和默认的加载因子 (0.75) 构造一个新的空哈希表。 方48方法: public V put(K key, V value)将指定 key 映射到此哈希表中的指定 value。键和值都不可以为 nul
18、l。 49 Hashtable hashtb = new Hashtable(); hashtb.put(1, aa); hashtb.put(2, bb); hashtb.put(3, cc); hashtb.put(4, dd); System.out.println(hashtb.size(); /4 /添加元素时,会根据键生成散列值,确定元素存储位置,所有键不要相同,但值可以相同;50 Hashtable hashtb = new Hashtable(); hashtb.put(1, aa); hashtb.put(2, aa); hashtb.put(3, aa); hashtb.p
19、ut(4, aa); System.out.println(hashtb.size(); /451 public V get(Object key)返回指定键所映射到的值,如果此映射不包含此键的映射,则返回 null. 52Hashtable hashtb = new Hashtable(); hashtb.put(1, aa); hashtb.put(2, aa); hashtb.put(3, aa); hashtb.put(4, aa); String a=(String)hashtb.get(2); System.out.println(a);53 boolean containsKey
20、(Object key) 测试指定对象是否为此哈希表中的键。 boolean containsValue(Object value) 如果此 Hashtable 将一个或多个键映射到此值,则返回 true。 54 Hashtable hashtb = new Hashtable(); hashtb.put(1, aa); hashtb.put(2, aa); System.out.println(hashtb.containsKey(1); System.out.println(hashtb.containsKey(5); System.out.println(hashtb.containsV
21、alue(aa);55l void clear() 将此哈希表清空,使其不包含任何键。l int size() 返回此哈希表中的键的数量。 56利用HashTable制作购物车1、图书类: BookInfo String id; String name; String author; float price; String press; 57 HashTable充当购物车,在其中存储用户要购买的商品。(键为商品ID,值为商品数量) (1)用户单击购买按钮时,首先查看购物车是否存在,如果不存在则创建一个空的购物车; (2)检查购物车中是否存在要购买的商品,如果有则提示用户,已经够买(或将商品数量
22、加1),否则将商品加入购物车,数量为1.587.7 迭代器public interface Iterator 用于对 collection 进行迭代的迭代器。59boolean hasNext() 如果仍有元素可以迭代,则返回 true。 E next() 返回迭代的下一个元素。 void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 60类 ArrayList所有已实现的接口: Serializable, Cloneable, Iterable, Collection, List, RandomAccess,其中有ArrayList的方
23、法:Iterator iterator() ; 返回列表上的一个迭代器.61List list = new ArrayList();list.add(one );list.add(second );list.add(third );list.add(new Integer(4);list.add(new Float(5.0F);list.add( second ); / true怎样输出列表中每一个元素?62通过迭代器来遍历1、获取列表上的迭代器: Iterator iterator=list.iterator();2、调用迭代器的方法(三个)访问每一个元素: 判断如果有下一个元素就访问下一个
24、元素: if(iterator.hasNext() Object object=iterator.next(); / . 63Iterator iterator=list.iterator();while(iterator.hasNext() object =iterator.next(); System.out.println(object.toString(); 64例子:l定义银行账户类: class Cust String name,pwd; int ID,money; static int allNum=0;/总共包括的用户数量。65l定义类CustDemo: 成员变量:ArrayList list,boolean logined=false; 构造函数:将list初始化; 方法:init(int num); 根据num的数量构造num个Cust,从键盘输入Cust的个人信息,将构造的每个Cust加入list;66 Cust search(int ID);根据ID返回list中此ID对应的Cust对象;void login();要求用户先输入用户ID和密码,如果正确将成员变量logined设置为true;(后面的方法要要求用户先登录才能调用相关方法); void changePWD(int ID ,String PWD);根据参数PWD 更改ID对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JG/T 231-2007建筑玻璃采光顶
- JG/T 132-2000聚氯乙烯(PVC)门窗固定片
- DZ/T 0216-2010煤层气资源/储量规范
- DZ/T 0137-1994地质仪器标准化综合要求编写规定
- DZ/T 0102-1994SDJ-78型数字地震检波器
- DZ 58-1988地质矿产部单位代码
- CJ/T 513-2018城镇燃气设备材料分类与编码
- CJ/T 481-2016城镇给水用铁制阀门通用技术要求
- CJ/T 233-2006建筑小区排水用塑料检查井
- CJ/T 190-2004铝塑复合管用卡压式管件
- 中国传统艺术-篆刻、书法、水墨画体验与欣赏(黑龙江联盟)智慧树知到期末考试答案章节答案2024年哈尔滨工业大学
- 极其珍贵的民间老中医经验良方
- 可感染人类的高致病性病原微生物菌(毒)种或样本运输管理规定
- 2022年全民健康生活方式行动工作计划
- MME 新型磨粉机设计外文文献翻译、中英文翻译、外文翻译
- 管理岗位胜任能力评估表
- 中南大学电力电子课设单项桥式整流电路设计
- 麦克维尔螺杆冷水机组维修保养手册
- XXX药店二类医疗器械零售经营备案质量管理制度DOC
- 北京市总工会职工互助保障
- 小学科学知识竞赛试题
评论
0/150
提交评论