面向对象的特征有哪些方面?
- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。
- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。
- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。方法的重写Overriding和重载Overloading是Java多态性的不同表现。
HashMap和LinkedHashMap的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap。 Map主要用于存储健值对,根据键得到值,因此不允许键重复,但允许值重复。 //使用迭代器遍历Map的键,根据键取值 Iterator it = map.keySet().iterator(); while (it.hasNext()){ key = it.next(); value = map.get(key); System.out.println("key: " + key + "; value: " + value ); }
**
* 判断map是否包含某个键 * @param map * @param key * @return */ public static boolean containsKey(Map map, Object key){ if (map != null){ return map.containsKey(key); } return false; }
**
* 判断map是否包含某个值* @param map * @param key * @return */public static boolean containsValue(Map map, Object value){
if (map != null){ return map.containsValue(value); } return false; }
LinkedHashMap,键和值可以为null,可以使插入的顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。也可以是基于访问顺序,其中一个构造器:
java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
答:字节流,字符流。 字节流继承于InputStream OutputStream, 字符流继承于Reader Writer。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。
什么是java序列化,如何实现java序列化?
答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。 可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。 序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法, implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造 一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以 将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
面向字节的输入输出类的基类是Inputstream和Outputstream。
面向字符的输入输出类的基类是Reader和Writer。