一、如可理解克隆
首先,克隆是非常有必要的,当一个对象被很多人操作,但是又想互不影响,且保持原来的状态。我们这个时候就需要克隆了
new一个对象的过程和Clone一个对象过程的区别是什么
new操作符本身定义就是分配内存 当程序执行到new关键字的时候,首先看new操作符后面的类型 在进行分配空间大小,不同类型分配的不同的空间大小,分配完成之后,再调用构造函数,在进行填充各个对象域的内容
clone的第一步和new是相似的 都是分配内存 clone是分配和原来空间大小一样的内存大小 用原来对象的域,填充新的对象的域
二、浅拷贝和深拷贝
这么说吧就那一个String字符串来举例子
浅拷贝就是直接把原来的对象的字段拷贝给新的对象
深拷贝就是 根据元的对象中的字符串字段 创建一个新的相同的字符串对象,将这个新字符串对象的引用拷贝给对象的字段
三、JAVA异常
首先,异常分为两种:一种是编译时异常和运行时异常
编译时异常是可以被处理的 如果程序没有处理,编译的时期就不会通过编译
编译时异常可以用一下两处方法来处理
1.try…catch
2抛异常throws
运行时异常只有在代码运行过程中才会出现异常从而导致程序崩溃
运行时异常有以下几类
空指针异常、数组越界异常、类型转化异常、没有找到Class类、非法参数异常 等等
Error
来说下error 一般是指的和虚拟机相关的错误,如内存不足,系统崩溃,虚拟机错误等等 靠程序本身无法进行修复和预防的错误
四、
说下字符向字节转换的时候,要注意编码的问题,因为底层设备永远只接受字节数据所以要把字符串转成字节数组
五、
集合 、
Vector 和 HashTable都是线程安全的因为都把各自的核心方法加上了synchronized的关键字也就是都上了锁 所以是安全的
说一下ArrayList的内部用了什么,使用的Object[ ]来实现的
在来说下当你删除一个元素的时候 整体的集合元素向前挪了一位,所以最后一位元素设置为null,如果没有设置就会造成内存泄露
并发集合、
Java中呢有普通集合、同步集合、并发集合。简单介绍一下这三个
普通集合性能高、但不保证多线程的安全性和并发的可靠性。、
线程安全集合也就是同步集合 只是给集合添加了个synchroized同步锁,严重的牺牲了性能,对并发的效率低。
并发集合呢 通过复杂的策略不仅保证了多线程的安全又提高了并发时的效率。
常见的并发集合有ConcurrentHashMap、ConcurrentLinkedQueue、ConcurrentDeque
简单说下ConcurrentHashMap
默认的情况下采用将数据分为16个段分别持有各自不同的锁Segment,锁仅用于Put和Remove等改变集合的操作,基于Volatile和HashEntry链表的不变性实现了读取的不加锁
这些方法是的ConcurrentHashMap能够保持极好的并发支持
六、内存分配
内存中的储存形式可以分为连续存储和离散存储两种方式,数据的物理储存结构就有连续存储和离散存储两种,也就是我们常说的数组和链表