1. 什么是面向对象,什么是面向过程,区别在那?
答:面向过程是针对功能开发,分析出解决问题的步骤,然后实现,重点是实现的过程。特点性能方面比面向对象高,没有面向对象易维护,易复用,易扩展。
面向对象是把问题分解成为各个对象,建立对象不是为了完成某一个步骤,而是在描述某个事务在解决问题的步骤行中的行为,面向对象是以功能来划分问题而不是步骤。特点是易维护,复用和扩展,性能没有面向过程好。
2. java的基本特征?
答:java有三大基本特征:封装,继承,多态。
封装:把客观的事务封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象去操作,对不可信的进行封装的隐藏。封装分为属性的封装和方法的封装。
继承:是对有着共性的多类事物,进行在抽象成一个类,这个类就是多类事物的父类。意义在于抽取多类事物的共性。
多态:允许不同类的对象对同一消息做出响应。方法的重载,类的覆盖正是体现多态。
3,方法的重载和重写的区别?
答:重载:发生在同一个类中,方法名必须相同,参数类型不同,个数不同,顺序不同,方法的返回值和修饰符可以不同,发生在编译时。
重写:发生在父子类中,方法名参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类。如果父类的方法访问修饰符为private则子类中不能重写。
4,抽象类和接口?
答: 接口是公开的,里面不能有私有的方法或变量,是用与让别人使用的,而抽象类
中可以有私有方法和私有变量。实现接口的一定要实现接口里定义的所有方法而
抽象类可以选择的重写需要用到的方法。接口可以显示多重继承,而一个类只能
继承一个超类,但可以通过继承多个接口实现多重继承。
5.成员变量和局部变量?
答: 成员变量是一个类部内,可以不显示初始化,他可以有系统设定默认值,成员变
量所在类被实例化后存在堆内存中。
局部变量是定义在方法体类,没有默认值所以必须设定初始化赋值,局部变量所
在的方法调用时,存在栈内存当中。
6.集合知识点?
答:集合特点是:存储对象,长度可变,存储对象的类型可不同。最顶层是Collection和Map集合。
Collection的子类接口list和set接口。
List:有序,元素可以重复,有索引。实现子类中有:
1.Arraylist:底层是数组结构,查询快,增删慢,不同步。
2.Linkedlist:底层是链表结构,增删快,查询慢,不同步。
3.Vector:底层是数组结构,同步。
Set:无序,无索引,元素不可以重复。实现子类有:
1. hashset:底层是哈希表,线程不同步,无序,高效。
保证元素的唯一性:通过hashcode和equals方法,若hashcode相同,则会判断equals结果是否为true,如不同则不调用equals方法。
LinkedHashSet:有序,是hashSet的子类。
2. Treeset:底层是二叉树结构,线程不同步,默认是自然排序。
保证唯一性:通过Comparable接口的compareTo方法的返回值确定。
排序方式:
(自然排序)实现Comparable接口,覆盖compareTo方法。
(比较器)定义一个类实现Comparator接口,覆盖compare方法。当主要条件相同时比较次要条件。
Map集合:
1.HashTable:底层结构是哈希表,不可存入null键和null值,同步。Properties继承hashtable,可保存在流中或流中加载,是集合IO流的产物。
2.HashMap:底层结构是哈希表,允许null键和null值,不同步,效率高。
3.TreeMap:底层结构是二叉树,不同步,可以排序,和set很像,set底层使用map集合。