行业知识
Java 语法糖,提高代码效率神器!
引言:��法糖经常是大厂面试官常问的一个知识点,关于 Java 的语法糖很多人可能只是知道其中的某几个,但却对整体的结构不了解,本文将详细介绍 Java 语法糖的知识。
题目
什么是 Java 语法糖?
推荐解析
什么是语法糖?
语法糖是指一种编程语言的语法结构,它并不提供新的功能,但使代码更易读、更易写,提高了开发效率。这些语法糖通常是一种编译器提供的便利性,它将一种常见的模式或代码结构用更简洁、更易懂的语法表示出来。
语法糖的目的是什么?
语法糖的目的是提高代码的可读性和编写效率,而不是引入新的功能或改变语言的本质。开发者可以使用语法糖来编写更简洁、更清晰的代码,而不必深入了解底层的实现细节。
Java 的语法糖
Switch 支持 String 与枚举
举个例子
public class switchDemoString { public static void main(String[] args) { String str = "nihao"; switch (str) { case "nihao": System.out.println("nihao"); break; case "hello": System.out.println("hello"); break; default: break; } }} Switch (字符串) 是用字符串的 hashcode 进行比较,case 中再利用 equals 进行判断,因为可能会产生 hash 冲突的情况。
泛型
对于 Java 虚拟机来说,需要在编译阶段通过类型擦除的方式进行解语法糖。
类型擦除的主要过程如下:1.将所有的泛型参数用其最左边界(最顶级的父类型)类型替换。2.移除所有的类型参数。
举个例子
Map map = new HashMap();map.put("xiaobaitiao", "nihao"); 解语法糖之后
Map map = new HashMap();map.put("xiaobaitiao", "nihao"); 在虚拟机中,泛型的实现涉及到类型擦除(Type Erasure)的概念。类型擦除是指在编译时泛型类型信息被擦除,而在运行时,泛型的实例仅保留原始类型(raw type)的信息。这导致在虚拟机中,所有泛型类的类型参数在编译时都会被擦除,并且泛型类并没有自己独有的 Class 类对象。
具体来说,泛型类在编译后的字节码中不会保留其泛型信息,而是被替换为原始类型。例如,对于 List 或 List,在运行时只存在一个 List 类的对象,而无法通过 List.class 或 List.class 这样的语法来获取类对象。
这样的设计是为了保持 Java 的向后兼容性,因为泛型是在 Java 5引入的,而在引入泛型之前的代码中是没有泛型信息的。因此,为了确保与旧代码的互操作性,Java 编译器使用了类型擦除来处理泛型。
自动装箱和拆箱
这个语法糖应该是较为熟知的,自动装箱就是 Java 自动将原始类型值转换成对应的对象,比如将 int 的变量转换成 Integer 对象,这个过程叫做装箱,反之将 Integer 对象转换成 int 类型值,这个过程叫做拆箱。因为不用人工去转化,因此是自动装箱和拆箱。
举个例子(自动装箱)
public static void main(String[] args) { int num = 1; Integer n = num;} 反编译
public static void main(String args[]){ int num = 1; Integer n = Integer.valueOf(num);} 自动拆箱
public static void main(String[] args) { Integer num = 10; int n = num;} 反编译
public static void main(String args[]){ Integer num = Integer.valueOf(10); int n = num.intValue();} 总结:装箱用 valueOf() 方法,拆箱用 xxxValue 方法,比如 intValue。
可变长参数
public static void print(String... strs){ for (int i = 0; i
上一篇:怎么在电脑上面登录服务器?