首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/726779

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

【Java核心技术卷】深入理解Java的内部类

通过图示进行分析:该图展示了Java内部类的编译解释过程. 你会看到整个过程很繁琐. 因为历史原因, Java语言规范 和字节码语言规范有不重叠的部分, 最初的时候,它们是重叠的. 但是后来随着Java的发展,有新的东西需要加入,比如说泛型,但是字节码语言规范不能够轻易变更,因为这个涉及到兼容问题. 能够动的只有编译器, 通过编译器把Java源程序编译成满足字节码语言规范的字节码文件进行执行.今天的内部类 和泛型一样,也是后来加入的. 关于内部类的实现,其实编译器在后面做了很多很多的东西, 虽然内部类有被Lambda表达式取代的趋势(Lambda表达式有自己的解释器),但是还是需要五深入理解的. 直接介绍凝练点:1.Java源程序要遵循Java语言规范,Java编译器按照Java语言规范来编译Java源程序。2.字节码程序要遵循字节码语言规范,JVM的Java解释器/JIT编译器按照字节码语言规范来解释/编译运行字节码程序。3.Java语言与字节码语言是两种不同的语言。它们的语言规范有相同处,也存在不同处例如: 相同处:均有访问控制符。一个类内部的私有成员只能被该类的其它成员所访问,其...

【JVM】探究数组的本质

之前写过一篇深入理解数组的博文【Java核心技术卷】深入理解Java数组, 这篇文章主要从理论的角度, 探讨了Java的数组。 这篇文章主要从实战的角度去探究数组的本质。 在正文开始之前,我们有必要先关注一下类的加载机制: 在Java代码中,类型的加载、连接与初始化过程都是在程序运行期间完成的 这里的类型指的是我们定义的class interface,枚举等等,这里不涉及到对象的概念,是一种runtime的阶段。这种加载机制提供了更大的灵活性,增加了更多的可能性。 简单地说类型的加载 最常见的就是把字节码文件从磁盘中加载到内存,连接就是将类与类之间的关系确定好,并且对字节码的一些处理,校验等 也就是在这一阶段完成了初始化 就是对类型中的静态字段赋值等等 具体流程如下: 类的加载、连接与初始化 加载:查找并加载类(class文件)的二进制数据 连接·-验证:确保被加载的类的正确性(class文件的格式等) ·-准备:为类的静态变量分配内存,并将其初始化为默认值(准备阶段 还没有类的概念)·-解析:把类中的符号引用转换为直接引用 初始化:为类的静态变量赋予正确的初始值 用图示表述为 Jav...

相关文章

发表评论

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册