十二、Java日常积累:Java基础知识
Java基础知识
1. java中的clone()方法:
影子克隆和深度克隆的区别:
- 影子克隆:
先在内存中开辟一块和原始对象一样的空间,然后原样拷贝原始对象中的内 容。对基本数据类型是没有问题的,但对非基本类型变量,只是克隆的对象的引用,这也导致clone后的非基本类型变量和原始对 象中相应的变量指向的是同一个对象。 - 深度克隆:
不仅克隆原始对象中的基本数据类型变量,而且对非基本类型变量克隆的不是对象的引用,而是克隆了非基本类型的真正对象。
链接:http://blog.****.net/rebirth_love/article/details/51792014
2. java中的Exception分类简介
-
Throwable
:Exception和Error的父类; -
Exception
:程序员可以处理的异常; -
Checked
异常:程序必须处理的异常,使用try catch
或throws
处理; -
Runtime
异常:不要求程序必须对他们做出处理,程序运行时抛出的异常。 -
Error
:仅靠程序本身无法恢复的严重错误(内存溢出等);
3. Java序列化对象
- java对象的序列化:
- 把对象转化为字节序列的过程称之为对象的序列化;
- 将字节序列恢复为对象的过程称之为反序列化;
- 对象序列化的用途:
- 将对象的字节序列永久的保存在硬盘上,通常放在文件里;
- 在网络上传送对象的字节序列。
4. Java中的三种泛型
-
ArrayList<T> al=new ArrayList<T>();
指定集合元素只能是T类型 -
ArrayList<?> al=new ArrayList<?>()
; 集合元素可以是任意类型,这种没有意义,一般是方法中,只是为了说明用法 -
ArrayList<? extends E> al=new ArrayList<? extends E>()
; ? extends E:接收E类型或者E的子类型、? super E:接收E类型或者E的父类型。
5. Java中comparable和comparator
-
java中对象的比较:
- 对象内部:实现comparable接口;
- 外部实现:自定义一个类实现comparator接口;
-
重写equals()方法,是否一定要重写hasCode()方法:
针对hashSet和Map一定要重写:
参考链接:http://blog.****.net/u013679744/article/details/57074669
6. IO流中的flush和close区别
1、close:
关闭流资源,但是关闭之前会刷新一次内部的缓冲区的数据
2、flush:
将数据刷到指定的文件(目的地)
3、区别:
flush刷新后,流可以继续使用,close先刷新缓冲区,然后将流关闭
7. 枚举
允许用常量来表示特定的数据片段,且全部都以类型安全的形式来表示;
可以把相关的常量分组到一个枚举类型里,且枚举提供了比常量更多的方法;