JAVA基础知识,你真的会了吗

JAVA 基础知识 java

  • Math.round(var); 用于四舍五入
  • if(1)在java中不容许,C/C++能够。
  • void也是基础数据类型之一。
  • 全部基础数据类型都有初值0或者0.0,引用类型初值为null。
  • this只能用于方法内部,用于表示 “调用这个方法的那个对象” 的引用。
  • this还能够调用其余构造器,如:this(a,b);但只能用一次,且放在方法的第一行。
  • static能够简单理解,全局的,只有一份,类加载时进行惟一一次初始化,不存在this,不能够直接调用非static变量或方法(能够非static引用入参,再在里面new对象)。
  • 可变参数...原理: 编译器帮忙封装成数组。
  • finalize()方法,一个类容许有一个该方法(Object的方法),用于JVM进行回收,但不能够直接调用!
  • System.gc();用于回收runtime。
  • 初始化顺序:

父类静态变量---父类静态代码块---子类静态变量---子类静态代码块---父类非静态变量(以及父类非静态代码块)--父类构造函数---子类非静态变量(以及子类非静态代码块)---子类构造函数算法

口诀:
先静态,再非静态,再构造器。
先变量,再代码块。
  • 枚举enum:
public enum name{
    A,B,C,D
}

类的static方法:values(),返回数组
非static方法:ordinal(),返回声明顺序数组


GC自适应算法缓存

  • 引用记数 :对象有引用链接,则计数器+1,断开链接时则减1。当计数器为0时,启动回收。
  • 中止-复制 (copy-and-stop):先暂停程序,把堆中 “活” 的对象移动另外一个堆。
  • 标记-扫描 (mark-and-swap):一样暂停程序,是找到全部“活”的对象,打上标记,标记打完后,把没被标记的对象清理出去。

图片.png
↑ 自适应的,分代的,中止-复制,标记-扫描 垃圾回收期。。。。函数


JIT(just in time)编译器:将程序编译成机器码,提高程序运行速度。

类加载时的两种策略:优化

  1. 让JIT编译全部代码。缺点:展开机器码比字节码大不少,致使程序速度慢。
  2. 惰性评估(lazy evaluation):必要时才让JIT工做,从不执行的代码就不让它编译。
HotSpot就采用了相似于法2的技术进行优化。将class字节码与机器码放入缓存,执行次数越多,越快。
相关文章
相关标签/搜索