1)泛型
2)迭代器
3)包装类(自动装箱拆箱)
4)新的锁对象Lock
5)Java内置开始支持线程池
Java1.7之后出现的switch开始可用String
1、HashMap和Hashtable的区别?1) 它们都属于Map接口的类,均是
2) HashMap类没有分类或者排序,它允许一个null键和多个null值,线程不安全
3) Hashtable类似于HashMap,但是不允许null键和null值,是线程安全的
2、阐述StringBuilder和 StringBuffer区别?1)StringBuffer:线程安全,
StringBuilder:线程不安全。
因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 StringBuilder 修饰。
2)StringBuffer 每次获取 toString 都会直接使用缓存区的 toStringCache 值来构造一个字符串。而 StringBuilder 则每次都需要复制一次字符数组,再构造一个字符串。
3)StringBuffer 是线程安全的,它的所有公开方法都是同步的,StringBuilder 是没有对方法加锁同步的,所以毫无疑问,StringBuilder 的性能要远大于 StringBuffer。
3、final、finally、finalize的区别?1)final用于声明属性,方法和类,分别表示成员变量不可更改且必须初始化,方法不可重写,类不可继承。
2)finally作为异常处理的一部分,只能再try/catch语句中,并且附带的一个语句块最终一定执行,经常被用在需要释放资源的情况下
3)finalize是在java.lang.Object里定义的方法,finalize就是用于垃圾回收的。 什么时候回收不确定
4、简述逻辑操作(&,|)与条件操作(&&,||)的区别?1)最终结果是一样的
2)&&具有短路效果,左边为false的时候,右边不执行,结果就是false 左边是true的时候,继续执行右边,有false结果就是false
||具有短路效果,左边为true的时候,右边不执行,结果就是true 左边是false,继续执行右边,有true,结果就是true
5、方法重载和方法重写的区别?1)方法重载:方法名相同,参数列表不同,与返回值无关
2)方法重写:方法名相同,参数列表相同,返回值相同,且子类权限不得低于父类
| 英文 | 位置不同 | 作用不同 | |
| 重载 | overload | 同一个类中 | 在一个类里面为一种行为提供多种实现方式并提高可读性 |
| 重写 | override | 子类和父类间 | 父类方法无法满足子类的要求,子类通过方法重写满足要求 |
| 修饰符 | 返回值 | 方法名 | 参数 | 抛出异常 | |
| 重载 | 无关 | 无关 | 相同 | 不同 | 无关 |
| 重写 | 大于等于 | 小于等于 | 相同 | 相同 | 小于等于 |
1) int是java提供的8种原始数据类型之一,
Integer是java为int提供的封装类。
2) int的默认值是0,而Integer的默认值为null。
3) Integer可以区分出未赋值和值为0的区别,int则无法表达未赋值的情况。
4) Integer提供了多个与整数相关的操作方法,将一个字符串转换成整数,还定义了表示整数的最大值和最小值的常量。
5) 在使用集合存整数时,只能使用Integer而不能使用int。
7、this与super的区别?
this代表的是当前对象的引用
super代表是父类存储空间的标识的引用(代表当前类父类的对象)
8、string类面试题String s1 = new String(“hello”); 和 String s2 = “hello”; 的区别?
1、==比较引用数据类型比较的是地址值
2、equals默认比较的是地址值,但是由于String类中重写了该方法,所以比较的是内容
3、String s1 = new String(“hello”) 会在堆内存中创建对



