java中的语法糖.编译器优化

语法糖

Java语法糖是指在Java语言中添加的一些方便程序员使用的语法,它们对语言的功能没有影响,但是可以让程序更简洁和可读。通俗的说语法糖就是减少我们在编写.java的代码量,在编译为.class之后被恢复为原文。

匿名内部类

内部类是指定义在另一个类中的类,它可以访问外部类的成员,包括私有成员。内部类分为静态内部类、成员内部类、局部内部类和匿名内部类等。编译器会将内部类转换为一个独立的类,并为其添加一个指向外部类实例的引用(如果是非静态内部类)。

Switch

switch支持String和枚举:从Java 7开始,switch语句可以使用String和枚举类型作为条件,编译器会将它们转换为整型的hashCode,使用switch进行比较,并嵌套if进行equalss判断

可变长参数

变长参数是指在定义方法时可以使用一个特殊的符号...来表示该参数可以接受任意个数和类型的实参,编译器会将它们转换为一个数组传递给方法。这样可以避免重载多个方法或者使用数组作为参数。

拆装箱

自动装箱和拆箱:自动装箱和拆箱是指编译器在基本类型和包装类型之间自动进行转换的功能,例如int和Integer,double和Double等。这样可以避免程序员手动进行装箱和拆箱的操作,简化代码。

枚举

枚举是一种特殊的类,它可以定义一组固定的常量,每个常量都是枚举类的一个实例。枚举可以实现接口,定义构造方法,字段和方法等。编译器会将枚举类转换为继承自java.lang.Enum的子类,并为每个常量生成一个静态实例。

泛型擦除

泛型是一种允许在定义类、接口和方法时使用类型参数的功能,它可以增强代码的重用性和类型安全性。但是Java虚拟机并不支持泛型,编译器会通过类型擦除的方式将泛型参数替换为它们的最左边界(最顶级的父类型)类型,并移除所有的类型参数。

增强for循环

增强for循环是指一种简化的遍历数组或集合的循环语句,它可以避免使用下标或迭代器,让代码更加简洁和清晰。Java中可以使用for关键字和冒号来定义增强for循环,它可以接受一个数组或一个实现了Iterable接口的对象作为循环对象。

条件编译

条件编译是指根据不同的条件选择性地编译或忽略一部分代码的功能,它可以用来适应不同的平台或环境。Java中没有专门的条件编译语法,但是可以利用常量表达式和编译器的优化来实现类似的效果。

断言

断言是指在程序中插入一些检查语句,用来验证程序的正确性或假设的成立性。如果断言失败,就会抛出一个AssertionError异常。Java中可以使用assert关键字来定义断言语句,它可以接受一个布尔表达式或者一个带有错误信息的布尔表达式。

数值字面量

数值字面量是指在程序中直接使用数值的表示方式,而不是通过变量或常量来引用。Java中支持不同进制和类型的数值字面量,例如十进制、八进制、十六进制、二进制、浮点数、长整数等。Java 7还支持在数值字面量中使用下划线来增加可读性。

try-with-resources语句

try-with-resources语句是指一种自动管理资源的语句,它可以在try块中声明一个或多个实现了AutoCloseable接口的资源对象,并在try块结束后自动调用它们的close方法来释放资源。Java中可以使用try关键字和小括号来定义try-with-resources语句,它可以避免手动关闭资源或忘记关闭资源的问题。

Labda表达式

Lambda表达式是指一种匿名函数的表示方式,它可以将一个函数作为一个对象传递给其他方法或变量,实现函数式编程的风格。Java中可以使用箭头符号->来定义Lambda表达式,它可以接受一个或多个参数,并返回一个结果或执行一个动作。Lambda表达式可以用来实现函数式接口,即只有一个抽象方法的接口。

多态

多态区分为编译多态:方法重载,以及运行时多态。

多态的实现原理是RTTI

  • RTTI,即Run-Time Type Identification运行时类型认定,通过运行时类型信息程序能够使用父类的指针或引用来检查这些指针或引用所指的对象的实际派生类型,是多态实现的技术基础。RTTI的功能主要是通过Class类文件实现的,更精确一点是通过Class类文件的方法表实现的。

forEach

forEach和增强for类似,但它属于stream的一种语法方法,原理是迭代器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值