java基础面试
-
基本数据类型及长度
byte(4) short(16) int(32) long(64) float(浮点32) double(双精度64)char(16) boolean(1)
对于金钱精度比较高的要使用 BigDecimal默认两位精度 -
面向对象特征 封装 抽象 继承 多态
-
==和equals的区别
==基本数据类型直接比较值,对象判断的是对象的引用
equals比较是内容()
Integer i= new Integer(10);
String s = new String("10");
System.out.println(i==10) ; true
System.out.println(s=="10") ; false
System.out.println(s.equals("10")); true
System.out.println(s.equals(10)); false
System.out.println(i.equals(10)); true
- String(固定) StringBuffer(可变线程安全) StringBuilder(可变线程不安全)
- java中集合(list set map)
1、List、Set都是继承自Collection接口,Map则不是
2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。)
3、Set和List对比:
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
4、Map适合储存键值对的数据
5、线程安全集合类与非线程安全集合类 :
LinkedList(链表)、ArrayList(数组结构)、HashSet(hash表)是非线程安全的,Vector是线程安全的;
HashMap是非线程安全的,HashTable是线程安全的;
StringBuilder是非线程安全的,StringBuffer是线程安全的。
- 队列类型
1>系统内阻赛队列
ArrayBlockingQueue :一个由数组支持的有界队列
LinkedBlockingQueue :一个由链接节点支持的可选有界队列。
PriorityBlockingQueue :一个由优先级堆支持的无界优先级队列。
DelayQueue :一个由优先级堆支持的、基于时间的调度队列。
SynchronousQueue :一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制。
2>系统内非阻塞队列 PriorityQueue ConcurrentLinkedQueue
.