java7新特性

java7新特性
java7新特性

Java 1.7的新特性

2011-07-22 09:48 | 5829次阅读| 【已有4条评论】发表评论

来源:外刊I T评论| 收藏到我的网摘

导读:本文是从《What's Up in Java 1.7》这篇文章翻译而来。译文来自外刊IT评论《Java 1.7 里有什么?》。文中例举了Java 1.7新功能的一些用法,相信里面有很多很酷的东西,值得您去学习。

内容如下:

下面是Java 1.7里新出现的功能的一些用法例子:

对集合的支持

创建List / Set / Map 时写法更简单了。

?Listlist = ["item"];

?String item = list[0];

?Setset = {"item"};

?Mapmap = {"key" : 1};

?int value = map["key"];

对资源的自动回收管理

下面的代码看起来有点麻烦… 不是吗

?BufferedReader br = new BufferedReader(new FileReader(path));

?try {

? return br.readLine();

?} finally {

? br.close();

?}

相信你一定会喜欢下面这种写法

?try (BufferedReader br = new BufferedReader(new FileReader(path )) {

? return br.readLine();

?}

泛型实例创建过程中类型引用的简化当声明你的对象的接口是,你肯定是不想重复指明泛型类型

看看下面的这种写法多好呀…

?

?Maphello = new Map<>();

在数字中使用下划线

?int billion = 1_000_000_000;

我不知道这个能有多少用处

对字符串进行sw itch case

?String availability = "available";

?switch(availability) {

? case "available":

? //code

? break;

?

? case "unavailable":

? //code

? break;

?

? case "merged":

? //code

?

? default:

? //code

? break;

?}

注意:在把字符串传进Sw itch case之前,别忘了检查字符串是否为Null。

二进制符号

你可用作二进制字符前加上0b 来创建一个二进制类型。

?int binary = 0b1001_1001;

一个catch里捕捉多个异常类型

?try {

?Here comes your code....

?}

?catch(IOException | NullPointerException | ..........) {

?}

如果有人能说出更多的新特征,那就更好了。我相信里面有更多的很酷的新东西。

Java 8新特性探究(4)-类型注解 复杂还是便捷

Java 8新特性探究(4):类型注解复杂还是便捷 注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什么?复杂还是便捷? AD: 注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什么?复杂还是便捷? 什么是类型注解 在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性;java 8里面,注解可以应用在任何地方,比如: 创建类实例 new @Interned MyObject(); 类型映射 myString = (@NonNull String) str; implements 语句中 class UnmodifiableList T implements @Readonly List @Readonly T { ... } throw exception声明 void monitorTemperature() throws @Critical TemperatureException { ... } 需要注意的是,类型注解只是语法而不是语义,并不会影响java的编译时间,加载时间,以及运行时间,也就是说,编译成class文件的时候并不包含类型注解。 类型注解的作用 先看看下面代码 Collections.emptyList().add( One );inti=Integer.parseInt( hello );System.console ().readLine(); 上面的代码编译是通过的,但运行是会分别报UnsupportedOperationException;NumberFormatException;NullPointerException异常,这些都是runtime error; 类型注解被用来支持在Java的程序中做强类型检查。配合插件式的check framework,可以在编译的时候检测出runtime error,以提高代码质量。这就是类型注解的作用了。 check framework check framework是第三方工具,配合Java的类型注解效果就是1+1 2。它可以嵌入到javac 编译器里面,可以配合ant和maven使用,也可以作为eclipse插件。地址是checker-framework。 check framework可以找到类型注解出现的地方并检查,举个简单的例子: importcheckers.nullness.quals.*;publicclassGetStarted{voidsample(){@NonNullObjec tref=newObject();}} 使用javac编译上面的类 javac-processorcheckers.nullness.NullnessCheckerGetStarted.java 编译是通过,但如果修改成 @NonNullObjectref=null; 再次编译,则出现 GetStarted.java:5:incompatibletypes.found:@Nullable nulltype

JDK1.7.0安装与环境变量设置详细图解

JDK1.7.0安装与环境变量设置详细图解 Windows系统中设置环境变量如下图 右击“我的电脑”,选择“属性”。 点击“高级”选项卡,选择“环境变量”。 在“系统环境变量”中设置上面提到的3个环境变量,如果变量已经存在就选择“编辑”,否则选“新建”。

配置系统变量: a.新建JA V A_HOME C:\Program Files\Java\jdk1.7.0 (JDK的安装路径) b.新建PA TH %JA V A_HOME%\bin;%JA V A_HOME%\jre\bin c.新建CLASSPA TH .;%JA V A_HOME%\lib;%JA V A_HOME%\lib\tools.jar特别注意: ◆环境变量值的结尾没有任何符号,不同值之间用;。 ◆CLASSPA TH变量值中的.表示当前目录。 四、JDK1.6安装的最后检验 测试环境变量配置是否成功: 开始-->运行--〉CMD 键盘敲入:JA V AC JA V A 出现相应的命令,而不是出错信息,即表示配置成功! 第一个简单程序HelloWorld: 打开记事本,输入如下代码: class HelloWorld{ public static void main(String[] args) { System.out.println("Hello World!"); } } 保存为HelloWorld.java(文件名一定要和文件内的类名保持一致,之一大小写也要一样)

然后打开DOS(命令框内输入“cmd”并回车) 进入HelloWorld.ava文件所在文件夹(“cd”命令可以进入文件夹)输入以下命令: javac HelloWorld.java(编译) 回车 java HelloWorld(运行) 回车

Java 1.7的新特性

内容如下: 下面是Java 1.7里新出现的功能的一些用法例子: 对集合的支持 创建List / Set / Map 时写法更简单了。 1.Listlist = ["item"]; 2.String item = list[0]; 3.Setset = {"item"}; 4.Mapmap = {"key" : 1}; 5.int value = map["key"]; 对资源的自动回收管理 下面的代码看起来有点麻烦… 不是吗 1.BufferedReader br = new BufferedReader(new FileReader(p ath)); 2.try { 3. return br.readLine(); 4.} finally { 5. br.close(); 6.} 相信你一定会喜欢下面这种写法 1.try (BufferedReader br = new BufferedReader(new FileRea der(path)) { 2. return br.readLine(); 3.} 泛型实例创建过程中类型引用的简化当声明你的对象的接口是,你肯定是不想重复指明泛型类型 看看下面的这种写法多好呀… 1. 2.Maphello = new Map<>(); 在数字中使用下划线

1.int billion = 1_000_000_000; 我不知道这个能有多少用处 对字符串进行switch case 1.String availability = "available"; 2.switch(availability) { 3. case "available": 4. //code 5. break; 6. 7. case "unavailable": 8. //code 9. break; 10. 11. case "merged": 12. //code 13. 14. default: 15. //code 16. break; 17.} 注意:在把字符串传进Switch case之前,别忘了检查字符串是否为Null。 二进制符号 你可用作二进制字符前加上0b 来创建一个二进制类型。 1.int binary = 0b1001_1001; 一个catch里捕捉多个异常类型 1.try { 2.Here comes your code.... 3.} 4.catch(IOException | NullPointerException | ..........) { 5.} 如果有人能说出更多的新特征,那就更好了。我相信里面有更多的很酷的新东西。

JAVA8-新特性总结及案例

一 Lambda函数(箭头函数) Lambda 表达式,也可称为闭包,它是推动Java 8 发布の最重要新特性。Lambda 允许把函数作为一个方法の参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变の更加简洁紧凑。 (parameters) ->expression或(parameters) ->{ statement1; statement2; ...... } lambda表达式の重要特征: 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选の参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选の大括号:如果主体包含了一个语句,就不需要使用大括号。 可选の返回关键字:如果主体只有一个表达式返回值则编译器会自动返回,大括号需指定表达式返回数值。 本质上,Lambda函数是对匿名内部类对象の简写。 应用举例1(比较JAVA7与JAVA8):Lambda函数做类の属性 运行结果: 应用举例2(比较JAVA7与JAVA8):Lambda函数做main函数变量

应用举例3: 应用举例4:多线程启动时使用Lambda函数

应用举例5:在 1.7中,匿名内部类只能使用定义为finalの外部变量,1.8会自动为Lambda函数使用の外部变量加上final,因此final可以省略不写。

二方法引用(::方法名 ----》调用了方法对象)应用举例1:

应用举例2:

三函数式接口 函数式接口(Functional Interface)就是一个具有一个方法の普通接口。函数式接口可以被隐式转换为lambda表达式。 函数式接口可以现有の函数友好地支持 lambda。 JDK 1.8之前已有の函数式接口: https://www.360docs.net/doc/303981721.html,ng.Runnable java.util.concurrent.Callable java.security.PrivilegedAction https://www.360docs.net/doc/303981721.html,parator

史上最全Java基础知识点归纳

史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资

深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。

JAVA发展史详细版

JAVA发展史 从JDK诞生到现在已经有15年的时间了。沧海桑田一瞬间。转眼15年过去了,JDK已经发布了6个版本。在这15年里诞生了无数和Java相关的技术和标准。现在让我们进入时间隧道,重新回到1995年,再来回顾一下Java的发展轨迹和历史变迁。 一、 JDK前传 在这个世界上,熟悉Java历史的人非常多,如果要问一个人Java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的Windows95也是在这一年发布的)。但事实上Java早在上个世纪90年代初就开始酝酿了。 1991年4月,Sun公司的James Gosling领导的绿色计划(Green Project)开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行。而Green项目组的成员一开始使用C++语言来完成这个项目,由于Green项目组的成员都具有C++背景,所以他们首先把目光锁定了C++编译器,Gosling首先改写了C++编译器,但很快他就感到C++的很多不足,需要研发一种新的语言Java来替代它,一杯飘香的咖啡成为了它的标志。 在17 个月后,整个系统完成了,这个系统是更注重机顶盒式的操作系统,不过在当时市场不成熟的情况下,他们的项目没有获得成功,但Java语言却得到了Sun总裁McNealy 的赏识。 直至 1994年下半年,由于Internet的迅猛发展和环球信息网 WWW的快速增长,第一个全球信息网络浏览器Mosaic诞生了;此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求;Games Gosling决定改变绿色计划的发展方向,他们对Oak进行了小规模的改造,就这样,Java在1995年的3月23日诞生了!Java的诞生标志着互联网时代的开始,它能够被应用在全球信息网络的平台上编写互动性及强的Applet程序,而1995年的Applet无疑能给人们无穷的视觉和脑力震荡。我们姑且将Java的这段历史称为Java 前传吧。 其实Java的诞生颇有那么一股“有心栽花花不开,无心插柳柳成阴”的味道。就象当年Unix和它的前身MULTICS系统一样。 二、JDK的幼年时期(1995~1998) Sun继Green项目后又经过了几年的研究,终于在1995年5月23日在SunWorld'95上正式发布Java和HotJava浏览器。在同年,有很多公司先后获得了Java许可证,如Netscape 在1995年8月,Oracle在1995年10月分别获得了Java许可证。Sun在 1995年发布第一个Java版本后,于1996年1月宣布成立新的业务部门──JavaSoft部,这个部分主要负责开发、销售并支持基于Java技术的产品,由AlanBaratz先生任总裁。 在1995年Sun虽然推出了Java,但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持还行。因此,Sun在1996 年1月23日发布了JDK1.0。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK)。在运行环境中包括了核心API、集成API,用户界面API,发布技术,Java虚拟机(JVM)五个部分。而开发环境还包括

java特点、优劣势

优劣势 java优势,是适合团队开发,软件工程可以相对做到规范,这是一个很难比拟的优势。 java劣势,是j2ee的架构很完美,第一版软件可以做满意,但是很不适合互联网模式的持续不断修改。互联网软件工程管理上的不足,持续的修修补补导致架构的破坏。系统更新需要重启web服务,很难接受。 编辑本段基本概念 final类:为防止他人从你的类上派生新类,此类是不可扩展的。 多态类:在java中,对象变量是多态的。而java中不支持多重继承。 抽象类:规定一个或多个抽象方法的类本身必须定义为abstract。 接口:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 Java中的每一个类都是从Object类扩展而来的。 object类中的equal和toString方法。 equal用于测试一个对象是否同另一个对象相等。 toString返回一个代表该对象的字符串,每一个类都会从Object类继承该方法,有些类重写了该方法,以便返回当前状态的正确表示。 (toString 方法是一个很重要的方法) 通用编程:任何类类型的所有值都可以同object类型的变量来代替。 封装:就是把数据和行为结合起在一个包中,并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)。 重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载。编译器必须挑选出调用哪个方法。 重写:在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。 数组列表:ArrayList动态数组列表,是一个类库,定义在java.util 包中,可自动调节数组的大小。

windows xp下安装java8(jdk8)

windows xp下安装java8(jdk8) 分步阅读 java8已经正式发布有一段日子了,带来了令人振奋的新特性。但是java8有一个无法接受的特点就是不支持windows XP。安装时会报出[无法定位程序输入点RegDeleteKeyExA 于动态链接库ADVAPI32.dll 上。]错误。如下图所示,此文就为大家分享如何解决此恶心问题 工具/原料 ?jdk8安装包 ?7-zip解压工具 方法/步骤 1. 1 下载jdk8安装包,地址: https://www.360docs.net/doc/303981721.html,/technetwork/java/javase/downloads/jdk8-do wnloads-2133151.html 2. 2 下载7-zip解压工具包并安装,地址: 32位版:https://www.360docs.net/doc/303981721.html,/sevenzip/7z920.exe

64位版:https://www.360docs.net/doc/303981721.html,/sevenzip/7z920-x64.msi 3. 3 将下载所得java安装包放到将要安装的jdk路径下,我是放在C:\Program Files\Java\jdk8下的;使用7-zip解压工具将安装包解压到当前目录下得到tools.zip包 4. 4 将提取到的tools.zip再次通过7-zip解压到当前目录下得到jdk文件: bin db include jre lib LICENSE

README.html THIRDPARTY LICENSEREADME-JAVAFX.txt THIRDPARTY LICENSEREADME.txt javafx-src.zip release 5. 5 打开lib目录你会发现以前的tools.jar变成了tools.pack以及jre/lib下的rt.jar变成了rt.pack

Java培训大纲

MLDN 人才培养大纲(V 3.0) 1、魔乐科技软件学院(MLDN) 魔乐科技软件学院,位于中关村科技园区德胜科技园内,是一家从事高端JAVA技术培养的技术公司,由各大型软件 企业的高级软件开发工程师、系统架构师等技术骨干组成的高端IT人才培养公司,致力于培养Linux平台、Oracle大型关系数据库、JAVA EE技术、Android开发者和企业级应用的中高级软件人才。自成立以来,为各大型软件公司输送了大量的 中、高级人才,其中,也有不少学员就业于IBM、新浪、中科软等大型公司,受到各用人单位的好评。 2、培养目标:高级软件开发工程师 本中心专注于培养企业需求量大、就业率高,但人才市场紧缺的面向行业的Java EE架构和开源的Struts/Struts 2.0/Hibernate/Spring框架和开源的JBoss/Tomcat中间件服务器、面向,Oracle、MySQL数据库,精通Java开发语言,精通Android 3G技术开发的中高级软件工程师。成绩合格的毕业生将具备1-2年大型软件设计及开发经验。 3、完备合理的知识学习体系 ·操作系统:Windows Linux ·中间件:Tomcat JBoss ·数据库:MySQL Oracle ·JAVA SE:环境搭建基础程序面向对象应用程序 Java新特性 JDBC ·JAVA EE WEB:HTML JavaScript JSP JavaBean DAO Smartupload Servlet MVC ·开源框架:Struts 1.x AJAX Hibernate Spring Struts 2.0 JSF DWR JSON JQuery ·分布式开发:RMI Web Services EJB 3.0 ·搜索引擎:Lucene、HTMLParser、Heritrix ·工作流:JBPM ·XML:语法、解析 4、主流企业开发技术 JAVA SE / JAVA EE JBoss / Tomcat / MyEclipse Oracle / MySQL Struts / Struts 2.0 / Spring / Hibernate XML / EJB 3.0 / Web Services 5、“项目/案例”教学法-让你在培训期增加300%项目经验 本课程中采用众多的企业项目案例,由浅入深进行逐层讲解,每个项目都源自于真实项目,包括电信计费系统、信息

黑马集合知识测试(带解析)

集合部分测试题 考试宣言: 同学们,考试考多少分不是我们的目的!排在班级多少的名次也不是我们的初衷! 我的考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了,那么不用怕,考完试后,导师讲解的时候你要注意听!那时候学会了,记住了,也一样不影响你高薪就业!本套题共40道不定项选择题,其中单选30道,多选10道。单选2 分/题,多选4分/题。多选题不全对半分,全对满分。 1.单列集合的顶层接口是( ) a)java.util.Map b)java.util.Collection//这是单列集合的老大,必须记住 c)java.util.List d)java.util.Set 2.ArrayList类的底层数据结构是( ) a)数组结构//看名字也能猜出来底层的数据结构. b)链表结构 c)哈希表结构 d)红黑树结构 3.LinkedList类的特点是( ) a)查询快 b)增删快//由于底层是链表结构,所以增删快,查询慢.

c)元素不重复 d)元素自然排序 4.Vector类的特点是( ) a)线程同步//这是早期工具的特性之一,安全性高,后来出现的集合都是求效率.b)线程不同步 c)增删快 d)底层是链表结构 5.关于迭代器说法错误的是( ) a)迭代器是取出集合元素的方式 b)迭代器的hasNext()方法返回值是布尔类型 c)List集合有特有迭代器ListIterator d)next()方法将返回集合中的上一个元素//返回下一个元素. 6.在我们所学知识中,下面哪几项是接口( ) a) java.util.Map b) java.util.Collection c) java.util.List d) java.util.Set 7.实现下列哪个接口,可以启用比较功能( ) a)Runnable接口 b)Iterator接口 c)Serializable接口

Java高级特性 总结

一、集合框架和泛型 1.集合框架 (1)定义:java中的集合是指一系列存储数据的接口和类,这些类和接口都位于java.util包 中 (2)原因(为什么使用集合框架):a、数组的大小是固定的;b、数组保存数据类型是单一的; c、数组操作数据比较复杂 (3)分类:主要有Collection、Map两个接口组成。 Collection接口是集合中最大的接口(与Map接口是等级并列关系)

Collection接口的常用方法,所有的List Set都有这些方法 <1>Collection 接口存储一组不唯一、无序的对象. <2>List 接口存储一组不唯一、有序的对象. <3>Set 接口存储一组唯一、无序的对象. <4>Map 接口存储一组键值对象, 提供key-value(k-v)的映射. <5>Iterator:迭代器. <6>Collections:工具类.(提供了对集合进行排序、遍历等多种算法实现) 2、List 接口. List 接口的实现类: <1>ArrayList:实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素效率高. *常用方法:

<2>LinkedList:采用了链表存储方式,插入、删除元素是效率较高. *常用方法: 3、Set接口 <1>存储唯一、无序的对象. <2>Set 里面存放的是对象的引用. <3>采用equals()方法比较两个对象是否为同一对象. <4>Set是接口,没法new,不存在get()方法(因为set无序)

set接口中的数据不能通过下标去访问 遍历集合:转换成数组增强型for 迭代器 Set 接口的实现类: HashSet HashSet集合的特点:集合内的元素是无序排列的 HashSet类是非线性安全的 允许集合元素值为null 4、Iterator接口 <1>增强型for <2>迭代器Iterator *获取Iterator:Collection 接口的iterate()方法. *Iterator 的方法: *boolean hasNext(): 判断是否存在另一个可访问的元素. *Object next(): 返回要访问的下一个元素. 5、Map 接口. Map 接口存储一组成对的键key 值value Key:唯一无序value:不唯一无序 (1) 以键值对形式存储数据(2)不允许出现重复键(3) 元素存储顺序无序Map 接口实现类: <1>HashMap. *常用方法:

JAVA8十大新特性详解

JAVA8 十大新特性详解 本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API “Java is still not dead—and people are starting to figure that out.” 本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字。 一、接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: default double sqrt(int a) { return Math.sqrt(a); } } Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用。 formula.calculate(100); // 100.0 formula.sqrt(16); // 4.0 文中的formula被实现为一个匿名类的实例,该代码非常容易理解,6行代码实现了计算sqrt(a * 100)。在下一节中,我们将会看到实现单方法接口的更简单的做法。

译者注:在Java中只有单继承,如果要让一个类赋予新的特性,通常是使用接口来实现,在C++中支持多继承,允许一个子类同时具有多个父类的接口与功能,在其他语言中,让一个类同时具有其他的可复用代码的方法叫做mixin。新的Java 8 的这个特新在编译器实现的角度上来说更加接近Scala的trait。在C#中也有名为扩展方法的概念,允许给已存在的类型扩展方法,和Java 8的这个在语义上有差别。 二、Lambda 表达式 首先看看在老版本的Java中是如何排列字符串的: Collections.sort(names, new Comparator() { @Override public int compare(String a, String b) { return https://www.360docs.net/doc/303981721.html,pareTo(a); } }); 只需要给静态方法 Collections.sort 传入一个List对象以及一个比较器来按指定顺序排列。通常做法都是创建一个匿名的比较器对象然后将其传递给sort方法。 在Java 8 中你就没必要使用这种传统的匿名对象的方式了,Java 8提供了更简洁的语法,lambda表达式: 看到了吧,代码变得更段且更具有可读性,但是实际上还可以写得更短: 对于函数体只有一行代码的,你可以去掉大括号{}以及return关键字,但是你还可以写得更短点:

JAVA7 新特性介绍(官方公布)中文版

Java7 新特性集合(中文版) Java 7平台标准版文档 甲骨文有两个产品实现Java平台标准版(Java SE)7:Java SE的开发工具包(JDK),7和Java SE的运行环境(JRE)7。 JDK 7中的JRE 7的一个超集,并包含在JRE 7的一切,再加上开发applets 和应用程序所必需的编译器和调试器等工具。 JRE7提供了类库,Java虚拟机(JVM),和其他运行使用Java编程语言编写的applets和应用程序所需的组件。 下面的概念图说明了Java组件技术:

文档之“新” 文档定期更新,以提供在Java平台上的新功能的深入了解信息的开发。一些最近的更新包括: 1.Swing 包括以下主题: JLayerClass Swing包中的新组件,可支持自定义绘制 NimbusLook & Feel Swing包中最新的U组件,可支持自定义皮肤 Heavyweightand Lightweight Components Swing包中的最新属性,可实现透明和半透明窗体 Shapedand Translucent Windows Swing包中的最新组件,可实现自定义形状窗体Hue-Saturation-Luminance(HSL) Color Selection in JColorChooser Class色彩选择器,可支持色彩饱和度和亮度

Image 2 TranslucentWindow Image 3 GradientWindow Image 4 ShapedWindow 2. Java SE 7的网络增强 URLClassLoader.close方法已被添加。这种方法有效地消除了如何支持从一个特定的代码库,特别是在JAR文件中加载的类和资源更新的实现的问题。有关更多信息,请参阅合为URLClassLoader。

Java各版本特性一览-从Java1.0到Java12

Java各版本特性一览-从Java1.0到Java12 JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢。 JDK Version 1.1 1997-02-19 – JDBC(Java DataBase Connectivity); –支持内部类; – RMI(Remote Method Invocation) ; –反射; – Java Bean; JDK Version 1.2 1998-12-08 Playground(操场) –集合框架; – JIT(Just In Time)编译器; –对打包的Java文件进行数字签名; – JFC(Java Foundation Classes), 包括Swing 1.0, 拖放和Java2D类库; – Java插件; – JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型; – Applet中添加声音支持 JDK Version 1.3 2000-05-08 Kestrel(红隼) – Java Sound API; – jar文件索引; –对Java的各个方面都做了大量优化和增强; JDK Version 1.4 2004-02-06 Merlin(隼) – XML处理; – Java打印服务; – Logging API; – Java Web Start;

– JDBC 3.0 API; –断言; – Preferences API; –链式异常处理; –支持IPV6; –支持正则表达式; –引入Imgae I/O API JAVA 5 2004-09-30 Tiger(老虎) –泛型; –增强循环,可以使用迭代方式; –自动装箱与自动拆箱; –类型安全的枚举; –可变参数; –静态引入; –元数据(注解); – Instrumentation; JAVA 6 2006-12-11 Mustang(野马) –支持脚本语言; – JDBC 4.0API; – Java Compiler API; –可插拔注解; –增加对Native PKI(Public Key Infrastructure), Java GSS(Generic Security Service),Kerberos和LDAP(Lightweight Directory Access Protocol)支持; –继承Web Services; JAVA 7

PowerBI技巧之Java 10 新特性介绍

作为当今使用最广泛的编程语言之一的 Java 在 2018 年 3 月 21 日发布了第十个大版本。为了更快地迭代、更好地跟进社区反馈,Java 语言版本发布周期调整为每隔 6 个月发布一次。Java 10 是这一新规则之后,采用新发布周期的第一个大版本。Java 10 版本带来了很多新特性,其中最备受广大开发者关注的莫过于局部变量类型推断。除此之外,还有其他包括垃圾收集器改善、GC 改进、性能提升、线程管控等一批新特性。本文主要针对Java 10 中的新特性展开介绍,希望读者能从本文的介绍中快速了解 Java 10 带来的变化。 局部变量类型推断 局部变量类型推断是 Java 10 中最值得开发人员注意的新特性,这是 Java 语言开发人员为了简化 Java 应用程序的编写而进行的又一重要改进。 这一新功能将为 Java 增加一些新语法,允许开发人员省略通常不必要的局部变量类型初始化声明。新的语法将减少 Java 代码的冗长度,同时保持对静态类型安全性的承诺。局部变量类型推断主要是向 Java 语法中引入在其他语言(比如 C#、JavaScript)中很常见的保留类型名称var。但需要特别注意的是:var不是一个关键字,而是一个保留字。只要编译器可以推断此种类型,开发人员不再需要专门声明一个局部变量的类型,也就是可以随意定义变量而不必指定变量的类型。这种改进对于链式表达式来说,也会很方便。以下是一个简单的例子: 清单 1. 局部变量类型推断示例 1. var list = new ArrayList(); // ArrayList 2. var stream = list.stream(); // Stream 看着是不是有点 JS 的感觉?有没有感觉越来越像 JS 了?虽然变量类型的推断在 Java 中不是一个崭新的概念,但在局部变量中确是很大的一个改进。说到变量类型推断,从 Java 5 中引进泛型,到 Java 7 的<>操作符允许不绑定类型而初始化 List,再到 Java 8 中的 Lambda 表达式,再到现在 Java 10 中引入的局部变量类型推断,Java 类型推断正大刀阔斧地向前进步、发展。 而上面这段例子,在以前版本的 Java 语法中初始化列表的写法为: 清单 2. Java 类型初始化示例 List list = new ArrayList(); Stream stream = getStream(); 在运算符允许在没有绑定ArrayList <>的类型的情况下初始化列表的写法为: 清单 3. Java 7 之后版本类型初始化示例 List list = new LinkedList<>(); Stream stream = getStream(); 但这种 var 变量类型推断的使用也有局限性,仅局限于具有初始化器的局部变量、增强型 for 循环中的索引变量以及在传统 for 循环中声明的局部变量,而不能用于推断方法的参数类型,不能用于构造函数参数类型推断,不能用于推断方法返回类型,也不能用于字段类型推断,同时还不能用于捕获表达式(或任何其他类型的变量声明)。

JDK7新特性版_

https://www.360docs.net/doc/303981721.html,- 做最棒的软件开发交流社区 作者: janeky https://www.360docs.net/doc/303981721.html, <p>这段时间陆陆续续写了这个JDK7系列的文章,希望对大家有用。从简介到语法,到各个 特性,尽量用简单的例子来说明。更多的技术文章,欢迎访问我的 blog<a href="https://www.360docs.net/doc/303981721.html,">https://www.360docs.net/doc/303981721.html,</ a></p>

目 录 1. jdk7 1.1 JDK7新特性<一>概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 1.2 JDK7新特性<二> 语法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 1.3 JDK7新特性<三> JDBC4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 1.4 JDK7新特性<四> NIO 2.0 文件系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 1.5 JDK7新特性<五> fork/join 框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 1.6 JDK7新特性<六> 监听文件系统的更改 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 1.7 JDK7新特性<七> 遍历文件树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 1.8 JDK7新特性<八>异步io/AIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29

Java8新特性之JavaFX 8

Java8新特性之JavaFX 8 JavaFX主要致力于富客户端开发,以弥补swing的缺陷,主要提供图形库与media库,支持audio,video,graphic,animation,3D等,同时采用现代化的css方式支持界面设计。同时又采用XUI方式以XML方式设计UI界面,达到显示与逻辑的分离。与android这方面确实有点相似性。 JavaFX历史 跟java在服务器端和web端成绩相比,桌面一直是java的软肋,于是Sun公司在2008年推出JavaFX,弥补桌面软件的缺陷,请看下图JavaFX一路走过来的改进 从上图看出,一开始推出时候,开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。因为JavaFX Script将会被编译为Java bytecode,程序员可以使用Java代码代替。JavaFX 2.0之后的版本摒弃了JavaFX Script语言,而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。JavaFX 2.0 包含非常丰富的UI 控件、图形和多媒体特性用于简化可视化应用的开发,WebView可直接在应用中嵌入网页;另外2.0 版本允许使用FXML 进行UI 定义,这是一个脚本化基于XML 的标识语言。从JDK 7u6开始,JavaFx 就与JDK捆绑在一起了,JavaFX团队称,下一个版本将是8.0,目前所有的工作都已经围绕8.0库进行。这是因为JavaFX 将捆绑在Java 8中,因此该团队决定跳过几个版本号,迎头赶上Java 8。 JavaFx8的新特性 全新现代主题:Modena 新的Modena主题来替换原来的Caspian主题。不过在Application的start()方法中,可以通过setUserAgentStylesheet(STYLESHEET_CASPIAN)来继续使用Caspian主题。

Java新手必学的21个技术点

Java新手必学的21个技术点 以下为大家盘点作为Java新手必学的21个技术点,希望能够对想要学习编程,学习JAVA的人有些帮助! JNI Java Native Interface,可以允许Java中调用本地接口方法,一般用于C/C++代码的调用。需要注意的是在java中加载so/dll文件的路径问题,本身调用接口并不复杂,但是经常在是否加载了所需的本地接口库中花费较多时间 RMI RemoteMethodInvocation ,java语言特有的远程调用接口,使用还是比较简单方便。不过需要跨语言的情况下,就需要使用 webservice 等其他方式来支持。一般来说,程序都不需要使用RMI,不过可以在特定的情况下使用,我就在一个项目中,使用RMI来进行程序远程启动停止的控制。 标注 也是jdk5 之后引入的。Spring是个优秀的框架,最开始就以xml作为标准的配置文件。不过到了Spring3 之后,尤其是 spring-boot 兴起之后,越来越推崇使用标注来简化xml配置文件了,对于开发者来说,可以节省不少xml配置的时间。但是劣势是在于标注散落在各个类中,不像xml,可以对所有配置有个全局性的理解和管理,所以还没有办法说完全就取代所有的xml。对于一般开发者,会使用标注即可,一些公共组建的开发者可能会需要了解标注的定义和实现,可以在具体需要的时候再细看。 泛型

这是JDK5开始引入的新概念,其实是个语法糖,在编写java代码时会有些许便利,一般的应用或者是业务的开发,只需要简单使用,不一定会用到定义泛型这样的操作,但是开发一些基础公共组件会使用到,可以在需要的时候再细看这个部分,一般情况下只要会简单使用即可。 Maven的使用 Maven 也不是Java里面的内容,但是maven是革命性的,给java开发带来了巨大的便利。从依赖的引入和管理,开发流程的更新和发布产出,乃至版本的更新,使用maven可以大大简化开发过程中的复杂度,从而节省大量时间。可以说,maven已经成为java开发者的标配了。所以我把maven也作为一个java开发者对于基础必备的知识点。以后会再放上一些我的一些对于maven使用的经验和技巧等,这里就不再细说了 XML解析/ JSON解析 其实这两块内容都不是J2SE里面的内容,但是在日常开发中,和其他程序交互,和配置文件交互,越来越离不开这两种格式的解析。 不过对于一个开发者来说,能够了解一些XML/JSON具体解析的原理和方法,有助于你在各个具体的场景中更好的选择合适你的方式来使得你的程序更有效率和更加健壮。 XML:需要了解 DOM解析和 SAX解析的基本原理和各自的适用场景JSON:需要了解一些常用JSON框架的用法, 如 Jackson, FastJson, Gson 等。 时间日期处理

相关文档
最新文档