面试知识点(第一弹:java基础)
2016-12-15 22:23
281 查看
Object类
Object类定义了哪些方法,各个方法的作用?
getClass()返回描述该类的class< T >对象hashCode()和equals()用于Map和List中
toString()返回代表该类的字符串
notify()和wait()用户线程同步
clone()克隆该对象
finalize()当对象销毁时释放系统资源
equals()和“==”的区别
“==”判断两个对象是否是同一个对象equals()判断两个对象的值是否相等
String类
String类需要注意的点
相同值的常量字符串引用的是同一个字符串字符串是常量的,值不能改变,用“+”拼接两个字符串时实际会产生第三个字符串
高效处理字符串使用StringBuffer和StringBuilder。
StringBuilder是StringBuffer的非线程安全版本,单线程模式下更高效。
String str1 = "abc"; String str2 = "123"; String str3 = "abc123"; String str4 = "abc" + "123"; String str5 = str1 + str2; System.out.println(str3.equals(str4));// true System.out.println(str3 == str4);// true System.out.println(str3.equals(str5));// true System.out.println(str3 == str5);// false System.out.println(str3 == str5.intern());// true
Wrapper类
int和Integer的区别
int是基础数据类型,Integer是一个类,List,Map等数据结构只支持存储Object,所以需要Integer这类Wrapper对象。Integer i = Integer.valueOf(1);
Integer.valueOf(1) == 1;// true
Integer.valueOf(1) == Integer.valueOf(1);// true
调用Integer.valueOf()时,-128到127会被缓存起来,多次调用时调用的是同一个对象,也就是说,Integer.valueOf(127) == Integer.valueOf(127)是true,但是Integer.valueOf(128) == Integer.valueOf(128)就是false了。
Integer.valueOf(1) == new Integer(1);// false
java只有值传递
public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(1); test(list); System.out.println(list);// 这时list里面还是只有1 } public static void test(List<Integer> list) { list = new ArrayList<Integer>(); list.add(2); }
程序流程
switch
switch不能忽略break语句,没有break会执行满足条件的case后面的语句以及下面所有的case后面的语句知道结束或者遇到break语句。public static void main(String[] args) { swit c576 ch (2) { case 1: System.out.println(1); case 2: System.out.println(2);// 会输出 case 3: System.out.println(3);// 会输出 } }
数据结构(List,Map,Set)
HashMap,HashTable,ConcurrentHashMap的区别
HashMap是非线程安全的,HashTable,ConcurrentHashMap是线程安全的,HashTable对整个散列表进行加锁,ConcurrentHashMap将散列表分成若干个子散列表,每个线程操作该Map时只对某个子散列表加锁,提高并发性。Comparable和Comparator的区别
Comparator位于包Java.util下,而Comparable位于包 java.lang下Comparable 是一个对象本身就已经支持自比较所需要实现的接口,自定义的类要在加入list容器中后能够排序,可以实现Comparable接口。而 Comparator 是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,可以写一个比较器来完成两个对象之间大小的比较。可以说一个是自已完成比较,一个是外部程序实现比较的差别而已。
List和Set的区别
List里的值可重复,Set里的值不可重复OOP
面向对象的三大特征
继承,多态,抽象interface和abstract class的区别
应用场景不同,interface定义契约,abstract class实现细节,对公有部分的抽象Override和Overload的区别
Override是重写,发生在父类和子类之间,要求方法的签名完全一样;Overload是重载,发生在同一个类里,要求同样的方法名不同的参数。
动态绑定和静态绑定
静态方法和final修饰的方法执行静态绑定,其他方法执行动态绑定。public static class Base { public void a() { System.out.println("Base.a()"); b(); c(); d(); e(); } final public void b() { System.out.println("Base.b()"); } protected void c() { System.out.println("Base.c()"); } private void d() { System.out.println("Base.d()"); } public static void e() { System.out.println("Base.e()"); } } public static class Son extends Base { public void a() { System.out.println("Son.a()"); b(); c(); d(); e(); } protected void c() { System.out.println("Son.c()"); } private void d() { System.out.println("Son.d()"); } public static void e() { System.out.println("Son.e()"); } } public static void main(String[] args) { Base base = (Base) new Son(); base.a(); System.out.println("------"); base.e(); /* 输出结果为: Son.a() Base.b() Son.c() Son.d() Son.e() ------ Base.e()*/ }
Exception
RuntimeException和Exception的区别
Exception叫做强制受检异常,需要用户处理,而RuntimeException是运行时异常,编译器不要求强制处理。相关文章推荐
- 【面试之java基础】小知识点汇总
- Java面试笔试知识点之基础部分3
- 面试知识点总结——Java基础
- 面试题库整理:java基础面试知识点
- Java---常用基础面试知识点
- java基础面试知识点---------java中==和equals和hashCode的区别
- 每日二道java基础面试知识点(三)
- Java面试笔试知识点之基础部分1
- java基础面试知识点
- 【Java面试知识点】各大公司Java面试题目汇总-Java基础知识
- 知识点总结: Java 面试宝典 2013版(超长版) - Java 基础部分
- Java面试笔试知识点之基础部分2
- java面试知识点整理之java基础
- java基础知识点、面试选择题归纳整理
- java基础面试知识点
- 每日二道java基础面试知识点(五)
- 每日二道java基础面试知识点(二)
- Java基础、面试知识点
- Java基础面试知识点总结
- Java---常用基础面试知识点