• jvm 语法糖


    jvm 语法糖主要包括:

    1. 泛型 相同擦除类型参数,返回值不同也可以编译成功, 对比方法重载矛盾。

        原因:class文件格式中,只要描述符不是完全一致的两个方法就可以共存。

        擦除:擦除方法code属性中字节码擦除,元数据还保留在泛型中,可以通过反射获取参数化类型。

    3. 装箱拆箱:Integer.valueOf(),Integer.intValue()

    4. for循环,把遍历循环代码还原成了迭代器实现,因此需要被遍历的类实现Iterable接口。 

    5. 变长参数:调用的时候变成了数组类型参数。

    6. 条件编译:使用条件为常量的if语句,根据布尔常量值的真假,编译器会把分支中不成立的代码块消除(接触语法糖阶段)

        java语言编译方式:将所有编译单元语法书顶级节点输入到待处理列表再进行编译,各个文件之间能相互提供符号信息。

    7. 内部类 

        Java的内部类也是一个语法糖,它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功,就会生成两个完全不同的.class文件了,分别是outer.class和outer$inner.class。所以内部类的名字完全可以和它的外部类名字相同。

    内部类分为四种:成员内部类、局部内部类、匿名内部类、静态内部类。

    8. 枚举类

        在JVM字节码文件结构中,并没有“枚举”这个类型。Java的枚举类型,会在编译期被编译成一个普通了类。

    9. 字符串的switch支持:

        switch string条件判断 实际上是对string.hashCode的判断

     
    switch(key.hashCode()) {
        case 49:
            if(key.equals("1")) {
                var2 = 0;
            }
        break;
    case 50:

    其它还有如断言语句,try语句中定义和关闭资源等。

  • 相关阅读:
    shell cut
    查询表名
    RandomAccessFile
    eclipse 背景颜色
    JAVA 获取分行符
    date time insert
    shell date time
    python
    gdg shell
    shell入门之变量测试
  • 原文地址:https://www.cnblogs.com/niejunlei/p/7809294.html
Copyright © 2020-2023  润新知