1、方法内定义的变量没有初始值,必须要进行初始化。 类中定义的变量可以不需要赋予初始值,默认初始值为0。
2、abstract修饰方法和类
3、常用的获取java信息的命令
(1、jps:查看本机java进程信息。
(2、jstack:打印线程的栈信息,制作线程dump文件。
(3、jmap:打印内存映射,制作堆dump文件
(4、jstat:性能监控工具
(5、jhat:内存分析工具
(6、jconsole:简易的可视化控制台
(7、jvisualvm:功能强大的控制台
4、自动装箱和类型的自动转换
6、包装类和基本数据类型
包装类和基本数据类型在进行“==”比较时,包装类会自动拆箱成基本数据类型。
Interger中设置有缓存,范围是 [-128,127],如果落在缓存内,直接返回缓存中的引用,所以只要是范围内的Integer对象,其引用都相同;而范围外的Integer对象,每次都是新 new 出来的,所以为 false。
例如:Integer a =
1
;
Integer b =
1
;
Integer c =
500
;
Integer d =
500
;
System.out.print(a == b);//true
System.out.print(c == d);//false
7、JVM内存区
JVM内存区:程序计数器、虚拟机栈、本地方法栈、堆、方法区(包括常量池)。
8、运行时常量池
在JDK1.8之前运行时常量池被放在方法区,属于线程共享,JDK1.8之后,元空间取代了方法区,运行时常量池被也被放在元空间中,运行时常池 主要存放, class文件元信息描述,编译后的代码,引用类型数据,类文件常量池。所谓的运行时常量池其实就是将编译后的类信息放入运行时的一个区域中,用来动态获取类信息。运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。