Java,史上最强干货分享,看过的人都感叹万千

1.你例如1_000_000(或者0b1111_0100_0010_0100_0000)表示100万。下划线阅读起来更容易,JAVA编译器会直接删除他们

2.对象在堆中创建,类的成员变量默认有初始值。而局部变量一般在栈中,必须在操作前明确初始化,否则编译不通过。

3.Java创建一个对象分为强引用、软引用、弱引用、虚引用,

强引用是用关键字new 直接创建的对象,只要某

个对象有强引用与之关联,JVM必定不会回收这个对象,即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。

软引用是用来描述一些有用但并不是必需的对象,在Java中用java.lang.ref.SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。因此,这一点可以很好地用来解决OOM的问题,并且这个特性很适合用来实现缓存:比如网页缓存、图片缓存等。

弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。在java中,用java.lang.ref.WeakReference类来表示。

虚引用和前面的软引用、弱引用不同,它并不影响对象的生命周期。在java中用java.lang.ref.PhantomReference类表示。如果一个对象与虚引用关联,则跟没有引用与之关联一样,在任何时候都可能被垃圾回收器回收。

4. final修饰的类不能被继承,修饰的方法不能被覆盖。对于全局成员,final必须在定义时初始化,与默认值和static无关。而对于方法中的final,在操作前必须初始化。final修饰的变量只能被赋值一次。final的语义其实就是不可以改变引用的指向,但其指向的对象的状态仍然可以改变。这点与C++的顶层const类似。状态不改变的类称为不可变类。

5.JDK10,11可以使用var 关键字声明变量,例如 var obj = new Object();

6.JDK11之后,Oracle公司要对JDK收费,不过个人学习使用还是免费,商业使用目的要收费

你可能感兴趣的:(Java,史上最强干货分享,看过的人都感叹万千)