重载与重写的区别:
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
重载(Overloading) : 让类以统一的方式处理不同类型数据的一种手段。是一个类中多态性的一种表现,具有多个同名函数且不同参数个数/类型;
重写(Override) : 重写是存在子父类之间的,子类定义的方法与父类中的方法具有(相同的方法名字、参数、返回类型 )
注:
(1)子类中不能重写父类中的final方法
(2)子类中必须重写父类中的abstract方法
(3)如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
简单(基本)数据类型和引用数据区别:
1.从概念方面来说
基本数据类型:变量名指向具体的数值引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值
2.从内存构建方面来说
基本数据类型:变量在声明之后java就会立刻分配给他内存空间
引用数据类型:它以特殊的方式(类似C指针)指向对象实体(具体的值),这类变量声明时不会分配内存,只是存储了一个内存地址。
3.从使用方面来说
基本数据类型:使用时需要赋具体值,判断时使用“==”号
引用数据类型:使用时可以赋null,判断时使用equals方法
"equals"和"=="的区别:
1.简单数据类型数值比较使用”==“
2.引用数据类型数值比较使用”equals“
附:要想比较对象的值是否相等,需重写equals()方法。基本类型的包装类已经覆盖了Object中的equals()方法可直接使用。
length,length(),size()的区别:
1.length:是针对数组来说的,如果写了一个数组,想要知道数组的长度,则可以使用这个属性;
2.length():是针对字符串String来说的,如果想看这个字符串的长度则用length()这个方法;
3.size():是针对泛型集合来说的,如果想要知道这个泛型集合中有多少元素,即可使用size()这个方法。
泛化:
面对对象编程,泛化表示继承关系或者实现关系 .
泛型:
1.泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法
2.泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
序列化和反序列化:
1. 把对象转换为字节序列的过程称为对象的序列化。
2. 把字节序列恢复为对象的过程称为对象的反序列化。
集合框架:
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
Collection 接口:存储一组不唯一,无序的对象 允许有多个null元素对象。
List 接口:存储一组不唯一,有序(插入顺序)的对象。遍历方式(1.增强for循环2.普通for循环3.迭代器遍历)
1.ArrayList:ArrayList 实际上是通过一个数组去保存数据的。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接 口。提供随机访问,支持序列化,能被克隆,不是线程安全的!默认的长度为10。扩容计算规则:“原始容量*3/2+1"
特点:随机访问速度极快。
缺点:插入和删除操作慢。
2.LinkedList:LinkedList实际上是通过双向链表去实现的。继承于AbstractSequentialList,并且实现了Dequeue,List, Cloneable, java.io.Serializable这 些接口。能当作双端队列使用,支持序列化,能被克隆,不是线程安全的!header是双向链表的表头,size是双向链表中节点的个数。
特点:插入和删除操作快。
缺点:随机访问速度极慢。
3.Vector;
Set 接口:存储一组唯一,无序的对象 最多允许有一个null元素对象。
1.HashSet:其底层是基于HashMap来实现的 ,使用了hashcode所以相应元素的位置是固定的。
2.LinkHashSet:其底层是基于LinkedHashMap来实现的,在哈希算法的基础上增加了链式表的结构。
3. TreeSet:是一种排序二叉树。存入Set集合中的值,会按照值的大小进行相关的排序操作。底层算法是基于红黑树来实现的。
SortedSet 继承于Set保存有序的集合。
Map接口:Map接口实现的是一组Key-Value的键值对的组合。
1.HashMap:HashMap 底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个 HashMap 的时候,就会初始化一个数组。
具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。
2.LinkedHashMap:保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和 value均允许为空,非同步的。
3.TreeMap: TreeMap 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是 排过序的。TreeMap不允许key的值为null。非同步的。
4.HashTabe:与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步;