你的位置:首页 > Java教程

[Java教程]最近在准备面试,总结了几个java中面向对象的几个问题,问题本事还不够全面,要想知道还是要自己去找,但是在面试上应该是没多大问题了

  Overload(重载)与Override(重写)的区别

  重载:发生在一个类中,方法名称相同,参数列表不同,方法体不同(看对象类型)

  重写:发生在父类中,方法名称相同,参数列表相同,方法体不同(看引用类型)

  

  abstract class(抽象类)和interface(接口)的区别

  1.抽象类有构造方法,接口没有

  2.抽象类中可以有普通成员变量,接口没有

  3.抽象类中可以包含非抽象的普通方法,接口中所有的方法都是抽象的

  4.抽象类中可以包含静态方法,接口中不能包含

  5.抽象类中的抽象方法的访问类型可以是public,protected,接口中的只能是public

  6.一个类可以实现多个接口只能继承一个抽象类

  

  String和StringBuff的区别

  String提供了数值不可改变的字符串,StringBuff提供字符进行修改,String实现了equals方法,StringBuff没有

 

  final、finally、finalize的区别

  final:属于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承

  finally:是异常处理语句结构的一个方法,表示总是执行

  finalize:是Object类的一个方法,在GC(垃圾回收器)执行的时候会调用被回收对象的此方法

  

  sleep()和wait()有什么区别

  sleep就是正在执行的线程主动让出CPU,CPU去执行其他线程,如果当前线程进入了同步锁,sleep方法并不会释放锁

  wait就是指一个已经进入同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁线程可以得到同步锁并运行

 

  多线程有几种实现方法?同步有几种实现方法?

  多线程有两种实现,分别是继承Thread类与实现Runnable接口(还有一个连接池,不太确定)

  同步的实现方法有:synchronized、wait、notify

  wait():是一个线程处于等待状态,并且释放所持有的对象的lock

  sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法

  notify():唤醒一个等待状态的线程

 

  ArrayList和Vector的区别

  1.同步性

    Vector是同步的,是线程安全的,ArrayList是不同步的,是线程不安全的

  2.数据增长

    两个都有一个初始的容量大小,当超狗容量时,就会增加存储空间

    ArrayList增长为原来的1.5倍,Vector增长为原来的2倍

 

  HashMap与Hashtable的区别

  1.Hashtable是老旧的,HashMap是java 1.2引进的Map接口的一个实现

  2.Hashtable是线程安全的,同步的   HashMap是线程不安全的,不是同步的

  3.只有HashMap可以让你将空值作为一个表格的条目的key或value

 

  List和Map区别

  List存储单列数据的集合,Map是存储键和值这样双列数据的聚合

  List存储的数据是由顺序的,并且允许重复,Map是没有顺序的,键是不能重复的,值可以重复

  

  第一次发,希望能收获点好评i