★1.java常见的引用类型
强:普通的变量引用
软:内存够时,GC不会主动删除,内存不够时,GC会删除
弱:一旦执行GC就会被删除
虚:用了感觉没用
★2.JDK1.8新特性
- lambda表达式(极大简化了匿名内部类的创建,促进函数式编程的风格)
- 函数式接口(只能有一个抽象方法的接口 )
- 日期时间的新API(LocalDate,LocalTime,LocalDateTime等)
- StreamAPI(提供了一种声明式、高效且易于并行化的集合数据处理方式 )
- Optional类(处理Null值,防止空指针异常)
- 方法引用(更为简洁的lambda表达式,可以直接引用现有方法和构造函数 )
- 接口的默认方法和静态方法(可以包含默认方法,允许在接口中提供方法的具体实现,而无需强制实现类去覆盖它 ; 可以包含静态方法,增强接口的功能性)
★3.JAVA异常
1.运行时异常(Running Exception)在程序中可以不进行显示处理的异常(ArithmeticException[运算异常] ClassCastException[类型转换异常] IndexOutOfBoundsException[下标越界异常] NullPointerException[空指针异常] IllegalArgumentException[非法参数异常] )
2.检查时异常(Checked Exception)必须显示处理,不然程序不允许代码编译运行.(FileNotFoundException [文件未找到异常] MalformedURLException[错误的URL异常] IOException [I/O异常] SQLException [Sql异常])
3.错误(Error) 系统级别的错误,程序无法处理,会立刻停止运行(OutOfMemoryError[堆空间溢出] StackOverflowError[栈空间溢出])
★4.双亲委派
1.启动类加载器(Bootstrap ClassLoader):即根类加载器,负责加载Java虚拟机核心类库,如java.lang.Object等。
2.扩展类加载器(Ext ClassLoader):加载Java扩展类库,如javax或java.util等。
3.应用程序类加载器(Application Class Loader):即系统类加载器,负责搜索应用程序的类路径并加载。
4.自定义类加载器:开发人员可以根据需要实现的类加载器。
为什么需要双亲委派?
避免类的重复加载 ; 保证安全性(例如java.lang.String,这个类只会加载根类加载器的,避免被覆写)