>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 30994 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->面向对象开发方法概述之UML语言(下)
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->用Swing组件展示HTML文档
  精通Spring-->绑定CSS样式
  Vue3开发-->绑定表单
  解决javac编译错误: 编码UTF8/GBK的不可映射字符
  我是如何把一个15分钟的程序优化到了10秒的
  Java虚拟机(JVM)参数配置说明
  搞定这24道JVM面试题,要价30k都有底气
  Java是如何实现自己的SPI机制的?
  Java设计模式中的工厂模式和策略模式范例
  Java并发编程之验证volatile不能保证原子性
  Synchronized与ReentrantLock区别总结
  JNI_Java Native Interface的用法
  Java设计模式:迭代器模式
  Java入门实用代码:100以内整数求和运算
  Java入门实用代码:向文件写入字符串
  Java入门实用代码:数组元素的反转
  通过java.net.URL类连接HTTP服务器时获取响应结果的头部信息
  java Pattern和Matcher详解
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 kericnnoe 
威望: 未知
级别: 未知
魅力: 未知
经验: 未知
现金: 未知
发文章数: 未知
注册时间: 未知
 复制  引用


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

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


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