1.==和equals的异同?
==,在比较基本数据类型时(比如int),比的是值。
比较引用数据类型时(比如自定义对象),比的是地址。
equals方法,只用来比较引用类型,Object类中定义的equals底层也是通过==号来比较对象的地址值。但如果一个类重写equals后,比的就是内容了。
2.如果两个对象hashcode值一样,那他们用equals比较也相同,对吗?
不对!
Object类中,equals和hashcode是两个不同的方法。默认hashcode是返回对象地址;
equals方法没重写前比的也是地址。
可以重写对象的hashcode方法,让不同值的对象有相同的hashcode,但他们的内容不一样,equals结果肯定false。
3.final的作用?
修饰类,该类为最终类,不可被继承。
修饰方法,方法不可被重写。
修饰变量,变量变成常量,该常量必须初始化,值不可修改。一般全大写来命名。
4.String类的常用方法?
indexOf():返回指定字符的索引。
length():返回字符串长度。
equals():未重写,底层是==。比较对象的地址是否相同?
replace():字符串替换
trim():去除字符串两端空白
5.接口和抽象类区别?
a、抽象类可以被继承extends,接口可以被实现implements;
b、抽象类可以定义构造函数,接口不行。
c、类可以实现多个接口,但只能继承一个抽象类。
d、接口中的方法默认都是public修饰,抽象类中的方法可以是任意访问修饰符。
6.java的集合容器有?
单列集合祖宗类Collection,双列集合祖宗类Map。
单列集合List包含arraylist、Linkedlist;Set包含Hashset、Treeset。
双列集合Map包含Hashmap、Treemap。
7.Collection和Collections?
Collection是一个单列集合的顶级接口。
Collections是集合类的一个工具类,包含了许多对集合元素操作的方法。
8.List、Set、Map区别?
List 属于单列,存储一个个元素;可以存在重复元素;每个元素有对应的索引;元素的存取顺序一致。
Set也是单列,存储一个个元素;元素唯一不可重复;元素无索引;不能保证元素存取顺序一致。
Map是双列集合,存储key-value型的键值对元素。
9.ArrayList和LinkedList区别?
ArrayList底层实现的数据结构是数组,查询速度极快(每个元素有对应索引),但增删慢(因为需要重新排索引);
LinkedList的底层基于双向循环链表,查询速度较慢,增删很快。(只需要改变该元素前后元素的索引即可)