当前位置: 首页 > news >正文

广东建设执业资格注册管理中心网站永不倒闭的10大央企

广东建设执业资格注册管理中心网站,永不倒闭的10大央企,asp.net做电商网站页面设计,做网站最基础需要什么条件Java的编译期是有上下文语境影响的#xff0c;不同语境下可以指不同的过程#xff1a; 可以是前端编译器#xff0c;把*.java文件转变成*.class文件的过程。 JDK的Javac、Eclipse JDT中的增量式编译器 可以指Java虚拟机的即时编译器#xff08;JIT编译器#xff09;在运…Java的编译期是有上下文语境影响的不同语境下可以指不同的过程 可以是前端编译器把*.java文件转变成*.class文件的过程。 JDK的Javac、Eclipse JDT中的增量式编译器 可以指Java虚拟机的即时编译器JIT编译器在运行期将字节码转变成本地机器码的过程 HostSpot虚拟机的C1、C2编译器、Graal编译器 还可以指使用静态的提前编译器AOT编译器直接把程序编译成与目标机器指令集相关的二进制代码过程 JDK的Jaotc、GNU Compiler for the Java 、 Excelsior JET 本章的编译期和编译器都指第一类前端编译器。 1 Javac编译器 Javac编译器不像HotSpot虚拟机那样使用C语言包含少量C语言来实现它本身就是一个由Java语言编写的程序。从Javac代码的总体结构来看编译过程大致可以分为1个准备过程和3个处理过程。 准备过程初始化插入式注解处理器解析与填充符号表过程 词法、语法分析将源代码的字符流转变为标记集合构造出抽象语法树。填充符号表产生符号地址和符号信息。 插入式注解处理器 的注解处理过程 在JDK 6中可以提前到编译期对代码中的特定注解进行处理影响前段编译器的工作过程 分析与字节码生成过程 标注检查对语法的静态信息进行检查数据流及控制流分析对程序动态运行过程进行检查解语法糖将语法糖还原为原有形式字节码生成 2 Java语法糖 2.1 泛型 泛型的本质是参数化类型或者参数化多态的应用即可以将操作的数据类型指定为方法签名中的一种特殊参数。 这种参数类型能够在类、接口和方法的创建中分别构成了泛型类、泛型接口和泛型方法。 Java选择的泛型实现方式叫做类型擦除式泛型C#选择的是具现化式泛型 Java的泛型在编译后的字节码文件中全部泛型都被替换为原来的裸类型Raw Type并且在相应的地方插入了强制转型代码。 public class TypeErasureGenericsE{public void doSomething(Object item){if(item instanceof E){ //不合法无法对泛型进行实例判断...}E newItem new E(); //不合法无法使用泛型创建对象E[] itemArray new E[10]; //不合法无法使用泛型创建数组} }2.2 类型擦除 要让以前写在ArrayList的代码在泛型新版本里必须还能继续用这同一个容器就必须让ArrayList、ArrayList这些全部自动成为ArrayList的子类型所以类型泛型化实例 的 共同父类型 就被称为裸类型。 import java.util.ArrayList;public class GenericsDemo {public static void main(String[] args) {ArrayListInteger iList new ArrayListInteger();ArrayListString sList new ArrayListString();ArrayList list; //裸类型list iList;list sList;} }Java是如何实现裸类型的呢虚拟机并没有真实构造出ArrayList这样的类型。 而是直接粗暴地将ArrayList在编译时还原回ArrayList在我们需要对元素访问、修改时 自动插入一些强制类型转换和检查指令。 2.3 类型擦除的坏处 运行期间无法取到泛型类型信息不支持原生类型的泛型因为Java不支持int、long与Object之间的强制转换。但是用了包装类Integer、Long之后就会多了包装类装箱和拆箱的开销。重载方法上带来的麻烦 这两个参数之后都被擦除了变成了同一种裸类型的List所以这两个方法的特征签名变得一样无法重载。 public static void method(ListString list){System.out.println(invoke method String); } public static void method(ListInteger list){System.out.println(invoke method Integer); }2.4 自动装箱、拆箱、遍历循环 通过反编译Class文件可以得到它们的本质实现 public static void aiBox(){//new Integer[]{Integer.valueOf(1) , ....} 自动装箱ListInteger list Arrays.asList(1,2,3,4);int sum 0 ;for(int i : list){ //遍历循环sum i; //自动拆箱}System.out.println(sum); }
http://wiki.neutronadmin.com/news/22647/

相关文章:

  • 上海网站营销公司建设银行办信用卡网站首页
  • 网站顶部地图代码怎么做的网站架构的优化
  • 杭州品牌网站设计自己做的网站能卖么
  • 企业网站建设与网络营销的关系母婴网站模板dede
  • 做磁力搜索网站好吗马云的网站是谁建设的
  • 创建网站成功案例动漫网页制作源代码
  • 机械技术支持东莞网站建设内容管理系统开源
  • 做网站开发工资怎样搜索引擎推广文案
  • 手机网站建设价格是多少wordpress主题ux themes
  • .php是什么网站windows系统做网站
  • 买极速赛车网站会动手做不石家庄微网站建设公司哪家好
  • 做网站价格报价费用多少钱汕头网站推广哪家好
  • 黄陂区建设局网站新加坡服务器网站需要备案么
  • 网站建设需求说明文档网页版微信无法登录
  • 免费发布广告信息的网站嵌入式培训心得
  • python网站开发视频教程外贸 需要到国外建网站吗
  • wordpress网站价格没有备案的网站 推广
  • 建设网站毕业设计开题报告wordpress如何修改用户名
  • 简单做网站用什么软件网站开发兼职群
  • 使用模板建站网站建设公司行情
  • 中国建设银行网站诚聘英才频道万网官方网站
  • 高并发网站开发语言wordpress 火箭
  • 广州网站设计公司济南兴田德润o简介图片网站建设好评语
  • seo内部优化抖音seo
  • 济南微网站开发太原关键词网站排名
  • wordpress里再建一个网站网站建设的基本流程包括哪些
  • android开发 网站开发做综合类网站好不好
  • 吴忠网站设计公司前端培训机构排名
  • 旅游网站的功能及建设做网站使用什么语言写
  • 全立体网站建设动漫制作专业好吗