>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 30995 个阅读者 刷新本主题
 * 贴子主题:  Java语法糖(Syntactic Sugar) 回复文章 点赞(0)  收藏  
作者:javathinker    发表时间:2016-09-23 10:10:04     消息  查看  搜索  好友  复制  引用

语法糖(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 int enumStringSwitch() {
  int a=0;
  String str = "fans";
  switch (str) {
    case "fans":a=1;break;
    case "leiwen":a=2;break;
    default:a=3;

  }
  return a;
}

10.在try语句中定义和关闭资源
jdk7提供了try-with-resources,可以自动关闭相关的资源(只要该资源实现了AutoCloseable接口,jdk7为绝大部分资源对象都实现了这个接口)

staticStringreadFirstLineFromFile(Stringpath)throwsIOException{
  try(BufferedReaderbr=newBufferedReader(newFileReader(path))){
    returnbr.readLine();
  }
}


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->第一个Java程序
  JavaWeb开发-->JSP中使用JavaBean(Ⅰ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->XML数据处理
  精通Spring-->Vue简介
  Vue3开发-->创建综合购物网站应用
  为网站代码块pre标签增加一个复制代码按钮代码
  JDK17的新特性
   JAVA进阶之IO模型深入解析
  快速理解 函数式编程,响应式编程,链式编程
  Java如何遍历Enumeration
  18 张图弄懂面试官必问的一致性哈希
  Java 语言中十大“坑爹”功能!
  关于新书
  NoClassDefFoundError和ClassNotFoundException的区别
  超详细的Java运算符修炼手册(优秀程序员不得不知道的运算技...
  JAVA常用数据结构
  正则表达式基础入门
  Java入门实用代码: 集合中添加元素
  Java入门实用代码:集合转数组
  Java入门实用代码:获取数组长度
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 kericnnoe 
威望: 未知
级别: 未知
魅力: 未知
经验: 未知
现金: 未知
发文章数: 未知
注册时间: 未知
 复制  引用


完美娛樂城是眾所周知的一個線上真人娛樂城,原因在於百家樂在台灣的排名是第一名,想當然名次越高知道的人一定就越多,而為何完美娛樂城會這麼有名呢?原因在於WM娛樂城實在是太好玩且太好贏錢

百家樂在台灣的排名是第一名
发文章时间 2023-03-07 00:26:06
 IPIP: 已设置保密 1 楼     
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。