- 线程join,等待线程执行完毕在继续执行,join会调用wait,线程执行完毕会调用notifyall。
- 内部类、静态内部类创建方法。静态内部类和正常类一样。非静态内部类只能由实例创建。
- 软引用,内存不足二次垃圾回收会被回收掉。弱引用,虚引用
- private final方法不能被继承,但是子类可以写一个同名方法。
- java 标识符必须由 下划线、数字、字母、美元符号构成。
- Throwable ->Exception->RuntimeException
->Error - java8 接口新增静态方法和default方法。 、
- java 泛型是语法糖,运行效率不会有影响。
- 针对循环的优化,强度削弱,删除归纳变量,代码外提。
- 赋值语句放在条件里,实际上是将赋值后的结果当作条件。
- Volatile:保证可见性,但不保证操作的原子性 volatile i; i++;
- java八种基本数据类型。 整数型 byte、short、int、long,浮点型 float、double,字符型 char,逻辑型 boolean
- java 浮点数默认为double类型。
- 局部变量不赋值就使用会编译错误。
- 重载也算多态一种表现。。
- 类的静态代码块和非静态代码块 分别在加载和实例化的时候执行。 静态变量和静态代码块 按位置顺序执行
- java gc线程的优先级低
- 重载方法返回值可以不同类型,重写方法 返回值类型必须相同,不然编译报错。
- super并不是父类的引用,只是代表调用父类的方法。super.getClass返回的还是子类。
- countdownlatch ,cycliBarrier,semaphore,aqs??
- 精度小于int的数值运算的时候都回被自动转换为int后进行计算
- jre 判断程序是否执行结束的标准是 前台线程执行完毕,如jvm垃圾回收等线程后台线程
- java 接口可以多继承,类不可以
- 常用的StringBuffer 字符串变量(线程安全),StringBuilder 字符串变量(非线程安全)
- threadLocal 使用了 开放定址法解决哈希冲突。
- 异或运算,相同则为0,不同则为1
- java保留关键字goto const。 strictfp transient
- 接口和抽象类的区别???jdk版本
内部类总结:
内部类、静态内部类、局部内部类、匿名内部类。
匿名内部类的使用,传参时new一个接口的实现,或者new X(){}继承某个类。
排序总结
堆排序、快速排序、归并排序、插入排序
java类加载过程
主动应用、被动引用。加载、初始化
类的被动引用(不会发生类的初始化)
当訪问一个静态域时。仅仅有真正声明这个域的类才会被初始化。
通过子类引用父类的静态变量,不会导致子类初始化。
通过数组定义类引用,用不会触发此类的初始化。
引用常量不会触发此类的初始化(常量在编译阶段就存入调用类的常量池中了)
https://www.cnblogs.com/mfrbuaa/p/5321894.html
初始化过程:
- 初始化父类中的静态成员变量和静态代码块 ;
- 初始化子类中的静态成员变量和静态代码块 ;
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;