一、java10编程语言都有哪些新特点
前一段时间我们曾经给大家简单介绍了关于java10的特性以及发布日期等事情。今天,我们一起来正式了解一下java10编程开发语言的新特性都有哪些,以及针对这些特性的使用方法。
Java10新特性
这次发布的Java10,新带来的特性并不多。
根据官网公开资料,共有12个JEP(JDKEnhancementProposal特性加强提议),带来以下加强功能:
JEP286,var局部变量类型推断。
JEP296,将原来用Mercurial管理的众多JDK仓库代码,合并到一个仓库中,简化开发和管理过程。
JEP304,统一的垃圾回收接口。
JEP307,G1垃圾回收器的并行完整垃圾回收,实现并行性来改善坏情况下的延迟。
JEP310,应用程序类数据(AppCDS)共享,通过跨进程共享通用类元数据来减少内存占用空间,和减少启动时间。
JEP312,ThreadLocal握手交互。在不进入到全局JVM安全点(Safepoint)的情况下,对线程执行回调。优化可以只停止单个线程,而不是停全部线程或一个都不停。
JEP313,移除JDK中附带的javah工具。可以使用javac-h代替。
JEP314,使用附加的Unicode语言标记扩展。
JEP317,能将堆内存占用分配给用户指定的备用内存设备。
JEP317,使用Graal基于Java的编译器,可以预先把Java代码编译成本地代码来提升效能。
JEP318,在OpenJDK中提供一组默认的根证书颁发机构证书。开源目前Oracle提供的的JavaSE的根证书,这样OpenJDK对开发人员使用起来更方便。
JEP322,基于时间定义的发布版本,即上述提到的发布周期。版本号为\$FEATURE.\$INTERIM.\$UPDATE.\$PATCH,分别是大版本,中间版本,升级包和补丁版本。
部分特性说明
1.var类型推断。
这个语言功能在其他一些语言(C#、JavaScript)和基于JRE的一些语言(Scala和Kotlin)中,早已被加入。
在Java语言很早就在考虑,北大青鸟云南计算机学院发现早在2016年正式提交了JEP286提议。后来举行了一次公开的开发工程师调查,获得多建议的是采用类似Scala的方案,“同时使用val和var”,约占一半;二多的是“只使用var”,约占四分之一。后来Oracle公司经过慎重考虑,采用了只使用var关键字的方案。
二、java中10的n次方怎么表示
java中10的n次方的表示方式:
方法声明:Math.pow(double m, double n)
参数说明:m为要求方的数,n为次方数
当然如果你愿意也可以自己写个方法来实现m的n次方,实现起来也相当简单。
下面是自己写的例子,我觉得用整数做参数就行了,一般都是整数去求方的。
public static long pow(long m, long n){
long result= 1L;//0次方时为1
for(int=0;i<n;i++){
result*= m;//每次乘上次计算次方的结果
}
return result;//计算好了,返回值
}
三、Java10的主要新特性总结
Java 10发布于2018年3月20日,其主要新特性包括12个重要更新。其中最受关注的是局部变量类型推导(JEP 286)特性,它允许编译器推导局部变量类型,简化代码并提升可读性。在示例代码中,使用保留类型名称"var",编译器可以推导出变量类型,例如"String"或"ArrayList"。
在使用"var"时,需要注意它只能用于局部变量,不能用于定义实例或类变量,或在方法参数和返回类型中使用。在经典和增强的for循环中,可以使用"var"从迭代器推导类型。
Java 10的其他主要更新包括JEP 296中的JDK代码仓库合并、JEP 304+JEP 307中的GC改进和内存管理、JEP 310中的应用程序类数据共享、JEP 312中的线程-局部变量管理、JEP 313中移除Native-Header生成工具javah、JEP 314中的Unicode语言标签扩展、JEP 316中在备用存储装置上进行堆分配、JEP 317中基于Java的实验性JIT编译器、JEP 319中根证书内置、JEP 322中修改基于时间的版本发布模式等。
此外,Java 10引入了JEP 310中应用程序类数据共享功能,可以将应用程序类的共享部分缓存到本地内存中,提高启动速度和内存使用效率。JEP 312引入了一种在线程上执行回调的新方法,便于停止单个线程而不影响其他线程。JEP 313中,javah工具已被正式移除,其功能已被javac编译器的-h选项取代,以生成native方法头文件。JEP 314增强了java.util.Locale及其相关API,以实现语言标记语法的其他Unicode扩展(BCP 47)。JEP 316允许HotSpot VM在备用内存设备上分配Java对象堆内存。
Java 10还提供了基于时间的版本发布模式,修改了Java SE平台和JDK的版本字符串方案及版本控制信息。此外,Java 10还更新了一些工具,如删除了一些由于Java 1.2被永久删除的API,以及弃用了java.security.acl包和java.security包中的各种相关类,包括Certificate、Identity、IdentityScope、Singer、auth.Policy等。另外,java.io.FileInputStream和java.io.FileOutputStream中的finalize()方法,以及java.util.zip.Deflater/Inflater/ZipFile类中的finalize()方法也被标记为弃用。