String类和常量池

String 对象的两种创建方式: 12345String str1 = "abcd";//先检查字符串常量池中有没有"abcd",如果字符串常量池中没有,则创建一个,然后 str1 指向字符串常量池中的对象,如果有,则直接将 str1 指向"abcd"";String str2 = new String("...
Java

final finally finalize的区别

简单概述final 、 finally 、 finalize三个关键字的区别…

Java

Java中的集合类及关系图

List 和 Set 继承自 Collection 接口。 Set 无序不允许元素重复。HashSet 和 TreeSet 是两个主要的实现类。 List 有序且允许元素重复。ArrayList、LinkedList 和 Vector 是三个主要的实现 类。 Map 也属于集合系统,但和 Collection 接口没关系。Map 是 key 对 value 的映 射集合,其中...
Java

抽象类和接口的区别

抽象类抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。 抽象类不能被实例化只能被继承; 包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法; 抽象类中的抽象方法的修饰符只能为public或者protected,默认为public; 一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必...
Java

JVM 垃圾收集器

不同的垃圾收集器下图是HotSpot虚拟机1.6版Undate 22d的所有收集器: JVM 垃圾收集器 注: 如果两个收集器之间存在连线,就说明它们可以搭配使用。 七种垃圾收集器:1. Serial(串行GC)-复制Serial是一个新生代收集器,曾经是JDK1.3.1之前新生代唯一的垃圾收集器。采用复制算法。 Serial是一个单线程收集器,会使用一个CPU、一条线程去完成...
Java

finally中的代码真的一定会执行吗?

finally中的代码在某些情况下不一定能执行…

Java

Java对象的创建过程

对象的创建 Step1:类加载检查虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 Step2:分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块...
Java

JVM GC算法

两个概念:新生代: 存放生命周期较短的对象的区域。老年代: 存放生命周期较长的对象的区域。 相同点: 都在Java堆上。 1. 标记-清除算法执行步骤: 标记:遍历内存区域,对需要回收的对象打上标记。 清除:再次遍历内存,对已经标记过的内存进行回收。 图解: 缺点: 效率问题;遍历了两次内存空间(第一次标记,第二次清除)。 空间问题:容易产生大量内存碎片,当再需...
Java

Java类加载过程

类的生命周期一个类的完整生命周期如下: 类加载过程系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 加载类加载过程的第一步,主要完成下面3件事情: 通过全类名获取定义此类的二进制字节流 将字节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表该类的 Class 对象,作为方法区这...
Java

Java8四大函数式接口

只有一个方法的接口叫做函数式接口。
Function、Predicate、Consumer、Supplier

Java