[原创]Java源代码学习

一、一些关键字

  方法声明中的native:调用本地方法,该方法一般是用C或者C++写的

  变量声明中的transient:在序列化过程中会忽略该变量,即不进行序列化保存

  变量声明中的volatile:编译器不会对其进行优化,如一条赋值紧接着一条赋值,编译器会忽略前一条赋值,而只保留后一条。该关键字表明不进行优化。

 

在JDK1.8中,对HashMap的存储结构有链表改成了平衡树,当通过key去获取entity时,复杂度由O(n)降低到了O(log n)

调试时无法进入源代码解决方案:安装JDK环境,把JRE改为JDK即可,JRE是已经编译过的JDK,仅仅是运行环境,不能进行调试,JDK则是Java develop kit,提供给开发人员使用的,也是带有JRE的。

看不到源代码的变量是因为:要调试的类的Class文件里没有包含LocalVariableTable属性表。在用Java源码编译器编译Java源码得到Class文件的时候,传-g参数就会有符号信息了。 还有一个表叫做LineNumberTable,负责保存行号信息,在下断点时有用,如果下断点是报错,说明行号表不存在。-g:lines参数可以保存两个表到代码中。

posted @ 2015-02-08 22:49  光闪  阅读(518)  评论(0编辑  收藏  举报