长春哪些网站制作公司擅长提供哪些网站技术?

摘要:网站技术有哪些,长春网站制作公司,淘宝网站建设类别,中盛客户管理软件本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 J
网站技术有哪些,长春网站制作公司,淘宝网站建设类别,中盛客户管理软件本文从 Java 编译原理角度#xff0c;深入字节码及 class 文件#xff0c;抽丝剥茧#xff0c;了解 Java 中的语法糖原理及用法#xff0c;帮助大家在学会如何使用 Java 语法糖的同时#xff0c;了解这些语法糖背后的原理1 语法糖语法糖#xff08;Syntactic Sugar#…本文从 Java 编译原理角度深入字节码及 class 文件抽丝剥茧了解 Java 中的语法糖原理及用法帮助大家在学会如何使用 Java 语法糖的同时了解这些语法糖背后的原理1 语法糖语法糖Syntactic Sugar也称糖衣语法是由英国计算机学家 Peter.J.Landin 发明的一个术语指在计算机语言中添加的某种语法这种语法对语言的功能并没有影响但是更方便程序员使用。简而言之语法糖让程序更加简洁有更高的可读性。有意思的是在编程领域除了语法糖还有语法盐和语法糖精的说法篇幅有限这里不做扩展了。我们所熟知的编程语言中几乎都有语法糖。作者认为语法糖的多少是评判一个语言够不够牛逼的标准之一。很多人说Java是一个“低糖语言”其实从Java 7开始Java语言层面上一直在添加各种糖主要是在“Project Coin”项目下研发。尽管现在Java有人还是认为现在的Java是低糖未来还会持续向着“高糖”的方向发展。2 解语法糖前面提到过语法糖的存在主要是方便开发人员使用。但其实Java虚拟机并不支持这些语法糖。这些语法糖在编译阶段就会被还原成简单的基础语法结构这个过程就是解语法糖。说到编译大家肯定都知道Java语言中javac命令可以将后缀名为.java的源文件编译为后缀名为.class的可以运行于Java虚拟机的字节码。如果你去看com.sun.tools.javac.main.JavaCompiler的源码你会发现在compile()中有一个步骤就是调用desugar()这个方法就是负责解语法糖的实现的。Java 中最常用的语法糖主要有泛型、变长参数、条件编译、自动拆装箱、内部类等。本文主要来分析下这些语法糖背后的原理。一步一步剥去糖衣看看其本质。3 糖块介绍3.1 switch 支持 String 与枚举前面提到过从Java 7 开始Java语言中的语法糖在逐渐丰富其中一个比较重要的就是Java 7中switch开始支持String。在开始coding之前先科普下Java中的swith自身原本就支持基本类型。比如int、char等。对于int类型直接进行数值的比较。对于char类型则是比较其ascii码。所以对于编译器来说switch中其实只能使用整型任何类型的比较都要转换成整型。比如byte。shortchar(ackii码是整型)以及int。那么接下来看下switch对String得支持有以下代码public class switchDemoString {public static void main(String[] args) {String str world;switch (str) {case hello:System.out.println(hello);break;case world:System.out.println(world);break;default:break;}} }反编译后内容如下public class switchDemoString {public switchDemoString(){}public static void main(String args[]){String str world;String s;switch((s str).hashCode()){default:break;case 99162322:if(s.equals(hello))System.out.println(hello);break;case 113318802:if(s.equals(world))System.out.println(world);break;}} }看到这个代码你知道原来字符串的switch是通过equals()和hashCode()方法来实现的。还好hashCode()方法返回的是int而不是long。仔细看下可以发现进行switch的实际是哈希值然后通过使用equals方法比较进行安全检查这个检查是必要的因为哈希可能会发生碰撞。因此它的性能是不如使用枚举进行switch或者使用纯整数常量但这也不是很差。3.2 泛型我们都知道很多语言都是支持泛型的但是很多人不知道的是不同的编译器对于泛型的处理方式是不同的。
阅读全文