ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:104.07KB ,
资源ID:6799246      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6799246.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java泛型基础入门.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java泛型基础入门.docx

1、java泛型基础入门package cn.itcast.genrictiry;import java.util.ArrayList;/* 泛型是jdk1.5使用的新特性。 泛型的好处: 1. 将运行时的异常提前至了编译时。 2. 避免了无谓的强制类型转换 。 泛型在集合中的常见应用: ArrayList list = new ArrayList(); true 推荐使用。 ArrayList list = new ArrayList(); false ArrayList list = new ArrayList(); false /以下两种写法主要是为了兼顾新老系统的兼用性问题。 * Arra

2、yList list = new ArrayList(); true ArrayList list = new ArrayList(); true 注意: 泛型没有多态的概念,左右两边的数据 类型必须 要一致,或者只是写一边的泛型类型。推荐使用: 两边都写泛型。 需求: 把一个集合中元素全部转成大写。 */public class Demo1 public static void main(String args) ArrayList list = new ArrayList(); / 表示该容器只能存储字符串类型 的数据。 list.add(aa); list.add(bb); list.a

3、dd(cc); for(int i = 0 ; i list.size() ; i+) String str = list.get(i); System.out.println(大写:+ str.toUpperCase(); MyUtil.print(list); ArrayList list2 = MyUtil.getList(); package cn.itcast.genrictiry;/* 需求: 定义一个方法可以接收任意类型的参数,而且返回值类型必须 要与实参的类型一致。 自定义泛型: 自定义泛型就是一个数据类型的占位符或者是一个数据类型的变量。 方法上自定义泛型: 修饰符 返回值类

4、型 函数名(使用自定义泛型 .) 在泛型中不能使用基本数据类型,如果需要使用基本数据类型,那么就使用基本数据类型对应的包装类型。 byte- Byte short- Short int- Integer long- Long double - Double float - Float boolean-Boolean char- Character 方法泛型注意的事项: 1. 在方法上自定义泛型,这个自定义泛型的具体数据类型是在调用该 方法的时候传入实参时确定具体的数据类型的。 2. 自定义泛型只要符合标识符 的命名规则即可, 但是自定义泛型我们一般都习惯使用一个大写字母表示。 T Type E

5、 Element */public class Demo2 public static void main(String args) String str = getData(abc); Integer i = getData(123); public static abc getData(abc o) return o; package cn.itcast.genrictiry;import java.util.ArrayList;/* 需求: 编写一个数组 的工具类 泛型类: 泛型类的定义格式: class 类名 泛型类要注意的事项: 1. 在类上自定义泛型的具体数据类型是在使用该类的时候

6、创建对象时候确定的。 2. 如果一个类在类上已经声明了自定义泛型,如果使用该类创建对象 的时候没有指定 泛型的具体数据类型,那么默认为Object类型 3.在类上自定义泛型不能作用于静态的方法,如果静态的方法需要使用自定义泛型,那么需要在方法上自己声明使用。 */class MyArrays /元素翻转 public void reverse(T arr) for(int startIndex = 0, endIndex = arr.length-1 ; startIndexendIndex ; startIndex+,endIndex-) T temp = arrstartIndex; ar

7、rstartIndex = arrendIndex; arrendIndex = temp; / public String toString(T arr) StringBuilder sb = new StringBuilder(); for(int i = 0 ; i arr.length ; i+) if(i=0) sb.append(+arri+,); else if(i=arr.length-1) sb.append(arri+); else sb.append(arri+,); return sb.toString(); public static void print(T t)

8、public class Demo3 public static void main(String args) Integer arr = 10,12,14,19; MyArrays tool = new MyArrays(); tool.reverse(arr); System.out.println(数组的元素:+tool.toString(arr); MyArrays tool2 = new MyArrays(); String arr2 = aaa,bbb,ccc; tool2.reverse(arr2); ArrayList list = new ArrayList(); packa

9、ge cn.itcast.genrictiry;/* 泛型接口 泛型接口的定义格式: interface 接口名 泛型接口要注意的事项: 1. 接口上自定义的泛型的具体数据类型是在实现一个接口的时候指定 的。 2. 在接口上自定义的泛型如果在实现接口的时候没有指定具体的数据类型,那么默认为Object类型。 需求: 目前我实现一个接口的时候,我还不明确我目前要操作的数据类型,我要等待创建接口实现类 对象的时候我才能指定泛型的具体数据类型。 如果要延长接口自定义泛型 的具体数据类型,那么格式如下: 格式: public class Demo4 implements Dao */interface

10、 Dao public void add(T t); public class Demo4 implements Dao public static void main(String args) Demo4 d = new Demo4(); public void add(T t) package cn.itcast.genrictiry;import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;/* 泛型的上下限: 需求1: 定义一个函数可以接收接收任意类型的集合对象, 要求接收的集合对象只

11、能存储Integer或者是Integer的父类类型数据。需求2: 定义一个函数可以接收接收任意类型的集合对象, 要求接收的集合对象只能存储Number或者是Number的子类类型数据。泛型中通配符: ? ? super Integer : 只能存储Integer或者是Integer父类元素。 泛型 的下限 ? extends Number : 只能存储Number或者是Number类型的子类数据。 泛型上限 */public class Demo5 public static void main(String args) ArrayList list1 = new ArrayList(); A

12、rrayList list2 = new ArrayList(); HashSet set = new HashSet(); /getData(set); /泛型的上限 public static void getData(Collection c) /泛型的下限 public static void print(Collection c) package cn.itcast.genrictiry;import java.util.ArrayList;/是老程序员写 的。 jdk1.4的时候写的。public class MyUtil public static ArrayList getLi

13、st() return new ArrayList(); public static void print(ArrayList list) for (int i = 0; i list.size() ; i+) System.out.println(list.get(i); package cn.itcast.list;import java.util.Enumeration;import java.util.Vector;/*集合 的体系:-| Collection 单例集合的根接口-| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。 -| ArrayList Ar

14、rayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。-| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。-| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。-| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。笔试题: 说出ArrayLsit与Vector的区别? 相同点: ArrayList与Vector底层都是使用了Object数组实现的。 不同点: 1. ArrayList是

15、线程不同步的,操作效率高。 Vector是线程同步的,操作效率低。 2. ArrayList是JDK1.2出现,Vector是jdk1.0的时候出现的。*/public class Demo1 public static void main(String args) Vector v = new Vector(); /添加元素 v.addElement(张三); v.addElement(李四); v.addElement(王五); /迭代该集合 Enumeration e = v.elements(); /获取迭代器 while(e.hasMoreElements() System.out.

16、println(e.nextElement(); package cn.itcast.list;import java.util.LinkedList;import java.util.Random;/*需求: 使用LinkedList存储一副扑克牌,然后实现洗牌功能。*/扑克类class Poker String color; /花色 String num; /点数 public Poker(String color, String num) super(); this.color = color; this.num = num; Override public String toStrin

17、g() return +color+num+; public class Demo2 public static void main(String args) LinkedList pokers = createPoker(); shufflePoker(pokers); showPoker(pokers); /洗牌的功能 public static void shufflePoker(LinkedList pokers) /创建随机数对象 Random random = new Random(); for(int i = 0 ; i 100; i+) /随机产生两个索引值 int index

18、1 = random.nextInt(pokers.size(); int index2 = random.nextInt(pokers.size(); /根据索引值取出两张牌,然后交换两张牌的顺序 Poker poker1 = (Poker) pokers.get(index1); Poker poker2 = (Poker) pokers.get(index2); pokers.set(index1, poker2); pokers.set(index2, poker1); /显示扑克牌 public static void showPoker(LinkedList pokers) for

19、(int i = 0 ; ipokers.size() ; i+) System.out.print(pokers.get(i); /换行 if(i%10=9) System.out.println(); /生成扑克牌的方法 public static LinkedList createPoker() /该集合用于存储扑克对象。 LinkedList list = new LinkedList(); /定义数组存储所有的花色与点数 String colors = 黑桃,红桃,梅花,方块; String nums = A,2,3,4,5,6,7,8,9,10,J,Q,K; for(int i =

20、 0 ; i nums.length ; i+) for(int j = 0 ; jcolors.length ; j+) list.add(new Poker(colorsj, numsi); return list; package cn.itcast.list;import java.util.LinkedList;class Person String name; int age; public Person(String name, int age) super(); this.name = name; this.age = age; Override public String t

21、oString() return 名字:+ this.name+ 年龄:+ this.age+; public class Demo3 public static void main(String args) LinkedList list = new LinkedList(); list.add(new Person(狗娃, 7); list.add(new Person(狗剩, 17); list.add(new Person(铁蛋, 3); list.add(new Person(美美, 30); /编写一个函数根据人的年龄及逆行排序存储。 for(int i= 0 ; ilist.si

22、ze() -1 ; i+) for(int j = i+1 ; jp2.age) /交换位置 list.set(i, p2); list.set(j, p1); System.out.println(list); package cn.itcastset;import java.util.HashSet;import java.util.Set;/*集合 的体系:-| Collection 单例集合的根接口-| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。 -| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增

23、删慢。-| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。-| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。-| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。无序: 添加元素 的顺序与元素出来的顺序是不一致 的。*/public class Demo1 public static void main(String args) Set set = new HashSet(); set.add(王五); set.

24、add(张三); set.add(李四); System.out.println(添加成功吗?+set.add(李四); System.out.println(set); package cn.itcastset;import java.util.HashSet;import javax.print.attribute.HashAttributeSet;/*集合 的体系:-| Collection 单例集合的根接口-| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。 -| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速

25、度快,增删慢。-| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。-| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。-| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。-| HashSet 底层是使用了哈希表来支持的,特点: 存取速度快. hashSet的实现原理: 往Haset添加元素的时候,HashSet会先调用元素的hashCode方法得到元素的哈希值 , 然后通过元素 的哈希值经过移位等运算,就可以算出该元素在哈希表中 的存储位置。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1