Map/Collection![请添加图片描述](https://img-blog.csdnimg.cn/1d3570e06c3c4851856f82460ff0ce60.jpeg)
面向对象
三个特征:封装、继承、多态(抽象)
基于面向过程的新思想,站在对象的角度看问题,多个功能放到不同对象中,强调是具备功能的对象。具备功能的实体为对象,最小的单位是类
对象的4中创建方法:
1、new
2、反射
3、clone机制
4、反序列化
Clone机制的深浅复制:浅复制只考虑当前对象,不考虑引用对象,没有复制引用对象
封装
继承
多态(重载、重写)
好处:同一个消息可以根据不同的对象采用不同的方式
接口的意义:规范,扩展,回调
抽象类定义:1、提供一个公共类型 2、封装子类中重复定位的内容 3、定义抽象方法,子类不同实现,定义一致,提高重用性
重写:只适用于实例方法,不能用于静态,子类中含有和父类相同签名的静态方法
不可变量:好处:线性安全,包装类
能否创建一个含可变的不可变对象?
可以,例子:
final Person[] Persons = new person()
这种情况,不要共享可变对象的引用,要变换时,返回一个原对象的拷贝
switch
1.7后支持String,但不支持浮点型和Long
Object方法
Object公共方法:判断、复制、反射、线程、字符串
判断euqals
复制Clone
反射getClass
线程notify、notifyAll、wait
字符串toString
equals 和 == 区别
euqals | == |
---|---|
对象内容 ,比较对象地址 | 值(运算符两边直接引用的值) |
对于集合存储对象而言,通常要重写equals |
equals和HashCode的联系
equals方法比较相等,这两个对象中任意对象调用hashcode必产生相同的哈希值
不相等,产生的哈希值不一定相等(冲突情况下不相等)
equals 1、会先判断放入对象的hashcode是否存在,2、不存在直接放入集合,如果存在,通过equals方法判断放入对象与集合中的对象是否相等3、不相等放入集合中
哈希冲突
拉链法:哈希表结点上加上next指针,构成单向链表,分配到同一结点可用链表存储
开放定址法:发生冲突,找下一个空地址
再哈希(rehash):多个哈希函数(多种计算地址的方法)冲突是更换计算方法
内部类
访问方式: 外围类.内部类