语法糖(Syntactic Sugar):也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。通常来说,使用语法糖能够增加程序的可读性,减少程序代码出错的机会。
Java中的语法糖包括但不限于以下10颗:泛型与类型擦除、自动装箱和拆箱、遍历循环、变长参数、条件编译、内部类、枚举类、断言语句、对枚举和字符串的switch支持、在try语句中定义和关闭资源。
1.泛型与类型擦除 Java中的参数化类型只在源码中存在,在编译后的字节码中,已经被替换为原来的原生类型了,并且在相应的地方插入了强制转换代码。对于运行期的Java 语言来说,ArrayList<Integer>和ArrayList<String>就是同一个类。所以说泛型技术实际上就是 Java语言的一颗语法糖,Java语言中的泛型实现方法称为类型擦除,基于这种方法实现的泛型称为伪泛型。// 泛型与类型擦除
public void parameterizedType() {
List<String> list = new ArrayList<String>();
list.add("Fans.Lei");
}
2.自动装箱和拆箱 自动装箱和拆箱实现了基本数据类型与对象数据类型之间的隐式转换。 // 自动装箱和拆箱
public void autobox() {Integer one = 1;
if (one == 1) {
System.out.println(one);
}
}
3.foreach循环 foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。 foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。// foreach循环
public void foreach() {
Integer[] array = { 1, 2, 3, 4, 5 };
for (Integer i : array) {
System.out.println(i);
}
}
4.变长参数 Arrays.asList(1, 2, 3, 4, 5); public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
5.条件编译 // 条件编译
public void ifdef() {if (true) {
System.out.println("true");
} else {//此处有警告--DeadCode
System.out.println("false");
}
}
6.内部类 public class JavaTenSugar {class Name {
String firstName;String secondName;
}}
7.枚举类public enum SEX {
MAN, WOMAN
}}
8.断言语句//运行时需要加上 VM参数 -ea public static void main(String[] args) {
String str = "fans2";
boolean flag = "fans".equals(str);
assert (flag);
}//程序结果Exception in thread "main" java.lang.AssertionError
at sugar.JavaTenSugar.main(JavaTenSugar.java:102)
9.对枚举和字符串的switch支持 // 对枚举和字符串的switch支持
public void enumStringSwitch() {
String str = "fans";
switch (str) {
case "fans":
break;case "leiwen":
break;default:
break;
}
}
10.在try语句中定义和关闭资源 jdk7提供了try-with-resources,可以自动关闭相关的资源(只要该资源实现了AutoCloseable接口,jdk7为绝大部分资源对象都实现了这个接口)
staticStringreadFirstLineFromFile(Stringpath)throwsIOException{
try(BufferedReaderbr=newBufferedReader(newFileReader(path))){
returnbr.readLine();
}
}
相关推荐
语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的 某种语法 ,这种语法对语言本身的功能来说没有什么影响,只是为了方便程序员进行开发,提高开发...所以在Java中真正支持语法糖的是Java编译器。
有意思的是,在编程领域,除了语法糖,还有语法盐和语法糖精的说法,篇幅有限这里不做扩展了。但其实,Java虚拟机并不支持这些语法糖,这些语法糖在编译阶段就会被还原
java语法糖介绍
实现算法Java中的语法糖
Java 中的语法糖,真甜 语法糖 泛型 自动拆箱和自动装箱 枚举 内部类 变长参数 增强 for 循环 Switch 支持字符串和枚举 条件编译 断言 try-with-resources 字符串相加 学习语法糖的意义
【深入Java虚拟机(6)】Java语法糖编程开发技术共3页.pdf.zip
极客时间 | 深入拆解 Java 虚拟机讲堂 深入拆解 Java 虚拟机 文章详情2018-08-24 郑雨迪朗读人:郑雨迪 09′58′′ | 4.58M在前
- 泛型擦除前的例子把这段Java代码编译成Class文件,然后再用字节码反编译后,將会发现泛型都不见了,又变回了Java泛型出现之前的写法,泛型类型都变回了原
主要介绍了深入理解Java基础之try-with-resource语法糖,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了不了解这12个语法糖,别说你会Java,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。这让java开发人员羡慕不已,呵呵。
JavaGrande 扩展了 Java 编程语言以支持其他语法。 支持以下内容。 可观察的属性。 Grande 不仅允许您定义新属性,而且任何带有标准 getter 和 setter 的 api 都可以像访问属性一样进行访问。 可选的分号。 任何...
1.语法糖:CoreHighLevel\src\main\java\pers\li\syntacticsuger 1.语法糖使得程序员更容易编写程序,更清晰准确表达业务逻辑 2.语法糖不仅是语法的转换,也包括一些小的改进 3.JDk5,6,7,8,11长期稳定版 4.语法糖: 1...
Java 语法糖详解 集合 知识点/面试题总结 : Java 集合常见知识点&面试题总结(上) (必看 ) Java 集合常见知识点&面试题总结(下) (必看 ) Java 容器使用注意事项总结 源码分析 : ArrayList 源码+扩容机制分析 ...
Java 语法糖详解 集合 知识点/面试题总结: Java 集合常见知识点&面试题总结(上) (必看 ) Java 集合常见知识点&面试题总结(下) (必看 ) Java 容器使用注意事项总结 源码分析: ArrayList 源码+扩容机制分析 ...
比较详细
探讨Lambda是否为语法糖 语法 (1) 形参列表。如果没有参数()表示 (2) -> (3) 代码块 用Lambda语法写线程 快速启动(输出其实并不重要) mvn compile exec:java -Dexec.mainClass=...
java基础语法讲解下集,适合初级人员入门学习
java基础语法讲解上集,适合初级人员入门学习
包括:JavaScript 方法,Objective-C 方法和 Java 方法,以实现将开发 iOS/Mac/Android 原生应用程序的部分代码,用 JavaScript 代码来编写,从而简化开发过程,提高开发效率,以及提高程序质量。