• 语法糖


      语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。

      语法糖的存在主要是方便开发人员使用。但其实,Java虚拟机并不支持这些语法糖。这些语法糖在编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。

    switch支持字符串和枚举

    public class SyntacticSugar {
        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;
            }
        }
    }

      switch支持字符串是通过hashCode()和equals()方法来实现的, 先通过hashCode()返回的哈希值进行switch, 然后通过equals()方法比较进行安全检查, 调用equals()是为了防止可能发生的哈希碰撞。
      另外switch还支持byte、short、int、char这几种基本数据类型, 其中支持char类型是通过比较它们的ascii码(ascii码是整型)来实现的。所以switch其实只支持一种数据类型, 也就是整型, 其他诸如String、枚举类型都是转换成整型之后再使用switch的

    自动装箱与拆箱

      自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。
      装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 xxxValue方法实现的

    泛型

      参考https://www.cnblogs.com/ryjJava/p/12775372.html

    断言

      java断言assert是jdk1.4引入的,jvm断言默认是关闭。开启的方法是 运行时需要加上 VM参数 -ea

    public class AssertTest {
        public static void main(String args[]) {
            int a = 1;
            int b = 1;
            assert a == b;
            System.out.println("a == b");
            assert a != b : "a != b";
            System.out.println("结束");
        }
    }

    开启断言时,输出如下:当断言结果为true时, 程序继续正常执行, 当断言结果为false时, 则抛出AssertionError异常来打断程序的执行

     关闭断言时,输出如下:

    内部类

      内部类又称为嵌套类,可以把内部类理解为外部类的一个普通成员。内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念。
      outer.java里面定义了一个内部类inner,一旦编译成功,就会生成两个完全不同的.class文件了,分别是outer.class和outer$inner.class。

  • 相关阅读:
    进位的算法
    java操作mysql中的编码问题解决
    ajax
    java.lang.NoClassDefFoundError: org/objectweb/asm/Type
    java.lang.NoSuchFieldError: deferredExpression
    java.lang.NoClassDefFoundError: antlr/ANTLRException
    Missing message for key "err1" in bundle "(default bundle)" for locale zh_CN
    接口和抽象类
    overload和override
    public,protected,friendly,private的访问权限
  • 原文地址:https://www.cnblogs.com/ryjJava/p/12831788.html
Copyright © 2020-2023  润新知