• 内部类被实例化才会被加载进内存测试


    D:JavaProjectSpringProjectdemo_spring_Synchronized	argetclassesjulywilddemo11>javap -v -p Test06.class
    Classfile /D:/JavaProject/SpringProject/demo_spring_Synchronized/target/classes/july/wild/demo11/Test06.class
      Last modified 2020年8月3日; size 380 bytes
      MD5 checksum 3d6bee6c0a5d3d2000866ed1bad13d03
      Compiled from "Test06.java"
    public class july.wild.demo11.Test06
      minor version: 0
      major version: 55
      flags: (0x0021) ACC_PUBLIC, ACC_SUPER
      this_class: #2                          // july/wild/demo11/Test06
      super_class: #3                         // java/lang/Object
      interfaces: 0, fields: 1, methods: 2, attributes: 1
    Constant pool:
       #1 = Methodref          #3.#16         // java/lang/Object."<init>":()V
       #2 = Class              #17            // july/wild/demo11/Test06
       #3 = Class              #18            // java/lang/Object
       #4 = Utf8               dog
       #5 = Utf8               Ljuly/wild/demo11/Dog;
       #6 = Utf8               <init>
       #7 = Utf8               ()V
       #8 = Utf8               Code
       #9 = Utf8               LineNumberTable
      #10 = Utf8               LocalVariableTable
      #11 = Utf8               this
      #12 = Utf8               Ljuly/wild/demo11/Test06;
      #13 = Utf8               test
      #14 = Utf8               SourceFile
      #15 = Utf8               Test06.java
      #16 = NameAndType        #6:#7          // "<init>":()V
      #17 = Utf8               july/wild/demo11/Test06
      #18 = Utf8               java/lang/Object
    {
      july.wild.demo11.Dog dog;
        descriptor: Ljuly/wild/demo11/Dog;
        flags: (0x0000)
    
      public july.wild.demo11.Test06();
        descriptor: ()V
        flags: (0x0001) ACC_PUBLIC
        Code:
          stack=1, locals=1, args_size=1
             0: aload_0
             1: invokespecial #1                  // Method java/lang/Object."<init>":()V
             4: return
          LineNumberTable:
            line 9: 0
          LocalVariableTable:
            Start  Length  Slot  Name   Signature
                0       5     0  this   Ljuly/wild/demo11/Test06;
    
      void test();
        descriptor: ()V
        flags: (0x0000)
        Code:
          stack=0, locals=1, args_size=1
             0: return
          LineNumberTable:
            line 14: 0
          LocalVariableTable:
            Start  Length  Slot  Name   Signature
                0       1     0  this   Ljuly/wild/demo11/Test06;
    }
    SourceFile: "Test06.java"
    D:JavaProjectSpringProjectdemo_spring_Synchronized	argetclassesjulywilddemo11>javap -v -p Test06.class
    Classfile /D:/JavaProject/SpringProject/demo_spring_Synchronized/target/classes/july/wild/demo11/Test06.class
      Last modified 2020年8月3日; size 380 bytes
      MD5 checksum 3d6bee6c0a5d3d2000866ed1bad13d03
      Compiled from "Test06.java"
    public class july.wild.demo11.Test06
      minor version: 0
      major version: 55
      flags: (0x0021) ACC_PUBLIC, ACC_SUPER
      this_class: #2                          // july/wild/demo11/Test06
      super_class: #3                         // java/lang/Object
      interfaces: 0, fields: 1, methods: 2, attributes: 1
    Constant pool:
       #1 = Methodref          #3.#16         // java/lang/Object."<init>":()V
       #2 = Class              #17            // july/wild/demo11/Test06
       #3 = Class              #18            // java/lang/Object
       #4 = Utf8               dog
       #5 = Utf8               Ljuly/wild/demo11/Dog;
       #6 = Utf8               <init>
       #7 = Utf8               ()V
       #8 = Utf8               Code
       #9 = Utf8               LineNumberTable
      #10 = Utf8               LocalVariableTable
      #11 = Utf8               this
      #12 = Utf8               Ljuly/wild/demo11/Test06;
      #13 = Utf8               test
      #14 = Utf8               SourceFile
      #15 = Utf8               Test06.java
      #16 = NameAndType        #6:#7          // "<init>":()V
      #17 = Utf8               july/wild/demo11/Test06
      #18 = Utf8               java/lang/Object
    {
      july.wild.demo11.Dog dog;
        descriptor: Ljuly/wild/demo11/Dog;
        flags: (0x0000)
    
      public july.wild.demo11.Test06();
        descriptor: ()V
        flags: (0x0001) ACC_PUBLIC
        Code:
          stack=1, locals=1, args_size=1
             0: aload_0
             1: invokespecial #1                  // Method java/lang/Object."<init>":()V
             4: return
          LineNumberTable:
            line 9: 0
          LocalVariableTable:
            Start  Length  Slot  Name   Signature
                0       5     0  this   Ljuly/wild/demo11/Test06;
    
      void test();
        descriptor: ()V
        flags: (0x0000)
        Code:
          stack=0, locals=1, args_size=1
             0: return
          LineNumberTable:
            line 14: 0
          LocalVariableTable:
            Start  Length  Slot  Name   Signature
                0       1     0  this   Ljuly/wild/demo11/Test06;
    }
    SourceFile: "Test06.java"

    上面是两段代码的反编译之后的结果:

     一个实例化了Dog 一个没有,从反编译结果看出:内部类的特点Dog():Dog被实例化就会加载Dog类,没有实例化则不会加载Dog类

  • 相关阅读:
    SVN日常使用
    zabbix安装
    shell日常脚本(centos6)
    mysql故障记录
    PHP商品秒杀功能实现思路分析
    Redis
    PHP 实现实时通信一般有两种方式
    FTP DNS SMTP POP3 HTTP HTTPS DHCP DNS SNMP Telnet 端口号
    TCP/UDP/HTTP的区别和联系
    TCP 和 UDP 的区别
  • 原文地址:https://www.cnblogs.com/guosai1500581464/p/13424292.html
Copyright © 2020-2023  润新知