- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WPJ1206-OOP03随课笔记
包装类:
Object类:根基类,所有类的父类,包括数组。也就是说任何类都是直接或者间接从Object类继承。我们在定义一个自己类的时候没有显示的写出该类继承自哪个类,则系统默认是该类从Object类中继承。所以当我们在使用其对象的时候可以通过对象来使用从Object类中所继承的所有方法。
一个例子:
TestObject test = new TestObject();
Syste.out.println(test);
结果应该是一串地址,实际上在打印该引用的时候,test默认回去调用Object类中的toString()方法。Object类中toString()方法规定返回的结果是该类的完整包名类名+@+哈希码,所以最后我们会看到打印出来的就是一串这样的地址表示。
Object类中的equals()方法比较的是两个对象的地址。只有当两个引用同时指向一个内存,才会返回true,“==”符号表示的两个对象是否相等,比较的也是地址,但是“==”可以用于基本数据类型。所以,Object中的equals()方法等价于“==”(都是比较的地址)。除了Object类中的equals()方法是用来比较地址,其他类中的equals()方法一般比较的是值。
根据源码看ArrayList本质还是数组,当我们实例化一个ArrayList时就默认开辟了一个长度为10的数组,当容量超过了数组容量,则每次增加到原始容量的1.5倍+1,再将数组中元素拷贝到新数组,将新增加的元素放入。
ArrayList在删除(remove)元素的时候,将该索引位置上的元素取出赋给变量,然后将其后面的元素一个一个向前移动,在删除元素和插入元素的时候代价很高。
LinkedList:底层使用链表的形式完成,基本实现功能和方法与ArrayList一致,但是在查找某一个元素的时候速度很慢。
ArrayList与LinkedList:
在做查询数据的时候,由数组形式组成的ArraryList会更有优势。
在做删除或者修改的时候,由链表形式组成的LinkedList会更有优势。
项目开发当中ArrayList使用非常频繁。
题目:使用java代码实现一个链表!
Set集合:无序不可重复,主要的两个实现类:HashSet和TreeSet,无get()方法来取出集合中指定的某一个值,因为无序的原因会使得此操作毫无意义。
Object类中的hashCode()方法:
在同一应用程序中的不同执行同一对象通过hashCode()方法拿出的hash码不要求处处相等(也就是我这次拿的是某一个值,下一次拿的不一定就是上一次所拿的,这是被允许的)。
两个对象相equals()的时候,如果返回true,则两个对象的hash码也一定是一样的。
对于两个对象,他们相equals的时候,如果返回false,不要求他们的hash码不一样(对于两个不同对象他们的hash码可以一样)。最好是两个hash码不一样,这样能够提高程序的性能。
在其子类中覆写了equals()方法,一定要覆写hashCode()方法,反之亦然。
HashSet集合在存入某个对象的时候,会判断此对象在该集合中是否存在,具体的判断步骤是:首先将所要存放进去的那个对象调用它的hashCode()方法生成一个hash码,然后查看该set集合中有没有一个hash码与之相同的,没有则直接将该对象存入集合,有则继续调用该对象的equals()方法进行进一步的判断两个对象是否相等。equals方法返回为true,则表明该对象已存在,添加失败;如果返回为false,则表明两对象不同,则将该对象添加到set集合。
TreeSet:放入的元素会自动按照自然顺序进行排序输出。
泛型:所谓泛型,就是数据类型的参数化。
一般在使用集合的时候要显示的给出该集合中只能存放的数据是是什么类型,通过泛型完成。这样会避免后续取值而产生转型的不必要问题。
for循环的加强版,语法格式:
for(集合中存放的数据类型 变量名:所要遍历的集合){
//循环语句
}
加强版的for循环,每一次循环,会将集合中的元素拿出一个赋给定义的变量。在遍历的时候不需要知道集合或者数组的长度(元素个数),不能很好的控制循环过程。
Iterator:迭代器,每一个集合对象一般都会有得到Iterator对象的方法,然后通过迭代器中的方法将元素一个一个拿出。
线程安全就是同步,非线程安全就是非同步。
HashMap:一个键值映射的集合类,设置值的时候一定需要设置相应的键(key)和值(value)。取值的时候get(Object o)方法通过键取出所映射的那个值,map集合中键不能够重复,值可以重复。非线程安全。
使用集合写出一个发扑克牌程序(四个人玩)。
Hashtable:基本功能和HashMap
文档评论(0)