java基础盲点梳理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础盲点梳理相关的知识,希望对你有一定的参考价值。
-
类的基本成员才有默认值
-
finalize()并非析构,Java中没有析构,使用finalize()通常在于跨语言调用情景:比如使用C进行malloc内存分配以后,要在finalize()方法中进行free,以便于提供一种内存释放的方法,否则当量达到一定程度时会造成out of memories。Jvm在进行gc时会优先调用finalize(),但这并不意味着一定会释放finalize中指定的对象,因为gc最终只和内存相关,当内存达到回收条件时才会进行垃圾回收
-
静态块static{xxx;}在类加载时就进行初始化,非静态块和构造函数在创建对象时才会初始化或调用,并且非静态块要优先于构造函数。
-
内部类可以访问外围类所有成员,包括private成员
-
通过内部类可以变相的实现“多重继承”
-
匿名内部类常用于实例初始化
-
动态代理,通过反射动态地创建Proxy,Proxy用于添加一些你想对Target进行的额外操作,然后在适当的时候将请求转发给Target。换句话说,Proxy在Target上进行了一层封装修改。
-
HashMap,通过设置容量和负载因子,以调整容器的性能。默认容量达到四分之三满时将自动进行扩充&再散列。因此,如果能够预估存储容量,然后设置一个恰当的初始容量,将可以避免自动再散列的开销
-
transient关键字可以避免敏感信息字段的序列化
-
ThreadLocal对象通常当做静态域存储,使得每个单独的线程都被分配了自己的存储
以上是关于java基础盲点梳理的主要内容,如果未能解决你的问题,请参考以下文章