黑马程序员技术交流社区

标题: Java进阶:也许你需要了解的java语法糖 [打印本页]

作者: zhuoxiuwu    时间: 2015-7-6 14:45
标题: Java进阶:也许你需要了解的java语法糖
什么是Java语法糖?
语法糖(Syntactic Sugar),也称糖衣语法指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。Java中最常用的语法糖主要有泛型、变长参数、条件编译、自动拆装箱、内部类等。虚拟机并不支持这些语法它们在编译阶段就被还原回了简单的基础语法结构,这个过程成为解语法糖。
Java有哪些常见的语法糖
泛型与类型擦除、自动装箱和拆箱、遍历循环、变长参数、条件编译、内部类、枚举类、断言语句、对枚举和字符串的switch支持

举例1:泛型的语法糖
原理:Java中的参数化类型只在源码中存在,在编译后的字节码中,已经被替换为原来的原生类型了,并且在相应的地方插入了强制转换代码。对于运行期的Java语言来说,ArrayList<Integer>和ArrayList<String>就是同一个类。所以说泛型技术实际上就是Java语言的一颗语法糖,Java语言中的泛型实现方法称为类型擦除,基于这种方法实现的泛型称为伪泛型。
代码:



报错:

如果你反编译软件 你可以反编译一下带有泛型的小程序,那样将会更加直观,




作者: zhuoxiuwu    时间: 2015-7-6 14:50
2.自动装箱和拆箱 自动装箱和拆箱实现了基本数据类型与对象数据类型之间的隐式转换。
                Integer one = 1;//自动将1装箱为Integer 类型
                //比较时,自动将one拆箱成int类型的1
                if (one == 1) {
                System.out.println("是一样的");
                }

作者: zhuoxiuwu    时间: 2015-7-6 14:54
其他的东西 也一样是在编译阶段就把它们该语法糖结构还原为了原生的语法结构,因此在Class文件中也只存在其对应的原生类型. 有兴趣的可以去试一下,看看反编译之后的内容

作者: leesang    时间: 2015-7-6 14:59
反编译软件 是什么。怎么弄啊
作者: zhuoxiuwu    时间: 2015-7-7 11:38
啊西八,太冷清了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2