Java 5-11新特性的整理(转)

作者:拔剑少年

简书地址:https://www.jianshu.com/p/38985b61ea83
博客地址:https://it18monkey.github.io

Java 5

1 泛型 (Generics)

     List<Integer> list = new ArrayList<Integer>(16);
     Map<String, Object> map = new HashMap<String, Object>(32);

2 增强for循环(Enhanced for Loop)

        List<Integer> list = new ArrayList<Integer>(16);
Map<String, Object> map = new HashMap<String, Object>(32); list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (Integer integer : list) {
System.out.println(integer);
} map.put("name", "zhangsan");
map.put("age", 20);
map.put("sex", 1);
map.put("department", "Source");
for (Entry<String, Object> entry : map.entrySet()) {
System.out.println("key:"+entry.getKey()+",value:"+entry.getValue());
}

3 自动拆装箱(Autoboxing/Unboxing )

八大基本类型和它们的包装类型能够自动的转换。包装类是引用类型,在使用==和equels比较时应当注意一下!

数据类型  包装类  字节长度  默认值  有效位
byte Byte  1  0  -128~127
short Short  2  0  -32768~32767
int  Integer   4  0  -2^31-1~2^31
long  Long   8  0l或0L  -2^63~2^63-1
float  Float   4  0.0f或0.0F  24(二进制)=7~8(十进制)
double  Double   8  0.0  53(二进制)=10~11(十进制)
char  Character   2  u0000  
boolean  Boolean   1  false  

4、枚举(Typesafe Enums)

枚举是一种实现线程安全的单例模式的好方法

public enum TypeEnum {

    OnLine(1,"线上模式"),
OffLine(2,"线下模式"); private int code;
private String name; TypeEnum(int code,String name){
this.code = code;
this.name = name;
} }

5 可变参数(Varargs)

语法:(type... arguments)

可变参数本质仍然是用一个数组存储参数,只是java隐藏了这一过程。需要注意的是如果一个方法声明中含有可变参数,那必须放在最后一个位置。

String[] strings = new String[]{"1","2","3","4"};
testVarargs(strings);
private static void testVarargs(String... strings){
  System.out.println("可变参数长度:"+strings.length+",可变参数类型:"+strings.getClass().getSimpleName());
  for (String string : strings) {
    System.out.println("可变参数的值分别为:"+string);
  }
}

打印结果

可变参数长度:4,可变参数类型:String[]
可变参数的值分别为:1
可变参数的值分别为:2
可变参数的值分别为:3
可变参数的值分别为:4

6 静态导入(Static Import)

通过import类来使用类里的静态变量或方法(直接通过名字,不需要加上类名),简化了代码的书写。过去的版本中只能通过继承类或实现接口才能使用。

//单个导入
import static java.lang.Math.PI;
//批量导入
import static java.lang.Math.*;

7 注解(Annotations)。关键字@interface

//注释注解的注解又叫做元注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotations {
//注解内可以添加方法,也可以不添加
//注解方法的返回值只能是基本类型,String,Class类,枚举,注解,可以有默认值。
int id();
String name() default "whh";
Class classType();
TestEnum enumType();
}

8 新的线程模型和并发库(java.util.concurrent)

Java 5-11新特性的整理(转)的更多相关文章

  1. JDK 5 ~ 11 新特性倾情整理

    为了大家对JDK有一个全面的了解,下面我为大家整理了JDK5~11的所有关键新特性! 先看一下JDK的版本迭代图: 注:   OpenJDK和JDK区别  GPL协议通用性公开许可证(General ...

  2. [转载] C++11新特性

    C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百 ...

  3. Java 9和Java 10的新特性

    http://www.infoq.com/cn/news/2014/09/java9 Java 9新特性汇总 继2014年3月份Java 8发布之后,Open JDK加快了开发速度, Java 9的发 ...

  4. C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)

    因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...

  5. [转] Java 8的新特性

    简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们将学习这些新特性,并用实际的例子 ...

  6. Java 8的新特性—终极版

    作者:杜琪[译] 原文链接:http://www.jianshu.com/p/5b800057f2d8 1. 简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本 ...

  7. JDK 5 ~ 10 新特性倾情整理!

    JDK 5 ~ 10 新特性倾情整理! 最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了. 为了大家对JDK ...

  8. Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结

    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...

  9. java8 新特性精心整理

    前言 越来越多的项目已经使用 Java 8 了,毫无疑问,Java 8 是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和 JVM 等方面的十多个新特 ...

随机推荐

  1. springboot集成rabbitmq并手动注册容器实现单个queue的ack模式

    原文:https://blog.csdn.net/qq_38439885/article/details/88982373 进入正题,本文会介绍两种实现rabbitmq的ack模式的方法,分别为: 一 ...

  2. 个性化召回算法实践(五)——item2vec

    item2vec将用户的行为序列转化成item组成的句子,模仿word2vec训练word embedding将item embedding.基本思想是把原来高维稀疏的表示方式(one_hot)映射到 ...

  3. 容器上使用Docker还是Rocket?为什么不一起用呢?

    在2014年接近尾声时,CoreOS在Docker发布了Rocket,声称Docker的流程模型有着“根本性的缺陷”.虽然CoreOS的创始人Alex Polvi尽量缓和语气,但是他坚持自己的基本观点 ...

  4. Mybatis二级缓存的简单应用

    1.接口 public interface MemberMapperCache { public Members selectMembersById(Integer id); } 2.POJO类 实现 ...

  5. 微信公众号开发--微信JS-SDK分享到朋友圈和分享给朋友

    之前写过一篇使用微信JS-SDK来实现扫一扫功能的博客 微信公众号开发–微信JS-SDK扫一扫功能 在该博客里介绍了微信JS-SDK的基本用法,其中包括以下几个步骤 还详细介绍了通过config接口注 ...

  6. Linux 查看系统配置参数

    原文链接:http://www.cnblogs.com/aric2016/p/10971690.html 查看 cpu信息: cat /proc/cpuinfo 查看内存信息: grep MemTot ...

  7. idea创建springmvc项目创部署成功,但访问controller层报错404

    这个问题网上有很多解决问题,检查配置文件是否正确?controller注解是否扫描?项目启动是否成功等等. 访问报错404,而且后台也没错误,归根结底还是访问路径错了. 1.如图,idea配置tomc ...

  8. html表格按长度换行

    <table style="table-layout:fixed; WORD-BREAK: break-all; WORD-WRAP: break-word; width:200px; ...

  9. YARN构建--解决cypress下载慢问题

      背景 注意:      此方案仅适合已经自行搭建私有仓库的用户使用      如非必要,尽可能使用软件开发云或其他服务提供的镜像站,避免此类特殊处理(会导致仓库维护成本增加) 场景描述 YARN构 ...

  10. BZOJ 1576 树剖+LCT

    题意:给定一张图,保证 $1$ 号点到其他所有点的最短路径是唯一的,求:对于点 $i$,不经过 $1$ 到 $i$ 最短路径上最后一条边的最短路. 题解:可以先建出最短路树,然后枚举每一条非树边. 对 ...