十二、Java日常积累:Java基础知识

1. java中的clone()方法:

影子克隆和深度克隆的区别:

  1. 影子克隆:
    先在内存中开辟一块和原始对象一样的空间,然后原样拷贝原始对象中的内 容。对基本数据类型是没有问题的,但对非基本类型变量,只是克隆的对象的引用,这也导致clone后的非基本类型变量和原始对 象中相应的变量指向的是同一个对象。
  2. 深度克隆:
    不仅克隆原始对象中的基本数据类型变量,而且对非基本类型变量克隆的不是对象的引用,而是克隆了非基本类型的真正对象。

链接:http://blog.****.net/rebirth_love/article/details/51792014

2. java中的Exception分类简介

  1. Throwable:Exception和Error的父类;
  2. Exception:程序员可以处理的异常;
  3. Checked异常:程序必须处理的异常,使用try catchthrows处理;
  4. Runtime异常:不要求程序必须对他们做出处理,程序运行时抛出的异常。
  5. Error:仅靠程序本身无法恢复的严重错误(内存溢出等);
    十二、Java日常积累:Java基础知识

3. Java序列化对象

  1. java对象的序列化:
    • 把对象转化为字节序列的过程称之为对象的序列化;
    • 将字节序列恢复为对象的过程称之为反序列化;
  2. 对象序列化的用途:
    • 将对象的字节序列永久的保存在硬盘上,通常放在文件里;
    • 在网络上传送对象的字节序列。

4. Java中的三种泛型

  1. ArrayList<T> al=new ArrayList<T>(); 指定集合元素只能是T类型
  2. ArrayList<?> al=new ArrayList<?>(); 集合元素可以是任意类型,这种没有意义,一般是方法中,只是为了说明用法
  3. ArrayList<? extends E> al=new ArrayList<? extends E>(); ? extends E:接收E类型或者E的子类型、? super E:接收E类型或者E的父类型。

5. Java中comparable和comparator

  1. java中对象的比较:

    1. 对象内部:实现comparable接口;
    2. 外部实现:自定义一个类实现comparator接口;
  2. 重写equals()方法,是否一定要重写hasCode()方法:
    针对hashSet和Map一定要重写:
    参考链接:http://blog.****.net/u013679744/article/details/57074669

6. IO流中的flush和close区别

1、close:
关闭流资源,但是关闭之前会刷新一次内部的缓冲区的数据

2、flush:
将数据刷到指定的文件(目的地)
3、区别:
flush刷新后,流可以继续使用,close先刷新缓冲区,然后将流关闭

7. 枚举

允许用常量来表示特定的数据片段,且全部都以类型安全的形式来表示;
可以把相关的常量分组到一个枚举类型里,且枚举提供了比常量更多的方法;