美文网首页
2019-12-29

2019-12-29

作者: 两颗酸橙子 | 来源:发表于2019-12-29 22:28 被阅读0次

    package com.test.cn;

    //常量在编辑阶段存入到调用这个常量的方法所在的类的常量池中

    //本质上,调用类并没有直接引用到的定义常量的类,因此并不会触发

    //定义常量的类并没有初始化

    //注意:这里指的是常量存放到Mytest2的常量池中,之后的Mytest2Myprent2就没有任何关系了

    //甚至,我们可以将parent2class文件

    /**

     * 助记符:

     * ldc表示将intfloat或是Sring类型的常量数值从常量池中推送至栈顶<即将要用的>

     * bipush 表示将单字节(-128-127)的常量池推送至栈顶

     * sipush表示将int一个短整型常量值(-32768-32767

     * iconst_i表示将int类型1推送至栈顶(iconst_1-iconst_5

     */

    public class Mytest2 {

    public static void main(String[] args){

     System.

    out.println(MyParent2.i);

    /**这个底层反编译的文件short

          * public static void main(java.lang.String[]);

     * Code:

     * 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;

     * 3: bipush 127

     * 5: invokevirtual #4            // Method java/io/PrintStream.println:(I)V

     * 8: return

     * }

     */

     System.out.println(MyParent2.m);

    /**底层反编译的文件short位数不够,用int存放

     * public static void main(java.lang.String[]);

     * Code:

     * 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;

     * 3: bipush 127

     * 5: invokevirtual #4 // Method java/io/PrintStream.println:(I)V

     * 8: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;

     * 11: sipush 128

     * 14: invokevirtual #4 // Method java/io/PrintStream.println:(I)V

     * 17: return

     * }

     */

     }

    }

    class MyParent2{

    public static final String string="hello wrold";

    public static final short i=127;

    public static final short m=128;

    // public static final int m=6;

     static{

     System.

    out.println("MyParent2 static block");

     }

    }

    相关文章

      网友评论

          本文标题:2019-12-29

          本文链接:https://www.haomeiwen.com/subject/qimuoctx.html