• [原创]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参数可以保存两个表到代码中。

  • 相关阅读:
    L2-004. 这是二叉搜索树吗?
    CF934A A Compatible Pair
    CF937B Vile Grasshoppers
    CF940B Our Tanya is Crying Out Loud
    ZOJ 3182 Nine Interlinks
    ZOJ 3175 Number of Containers
    Codeforces Round #193 (Div. 2) B
    CodeForces 149D Coloring Brackets
    POJ 2653 Pick-up sticks(计算几何)
    UVA 12506 Shortest Names
  • 原文地址:https://www.cnblogs.com/guangshan/p/4280625.html
Copyright © 2020-2023  润新知