java10编程语言都有哪些新特点?

java10编程语言都有哪些新特点?,第1张

前一段时间我们曾经给大家简单介绍了关于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语言很早就在考虑,北大青鸟云南计算机学院http://www.kmbdqn.cn/发现早在2016年正式提交了JEP286提议。后来举行了一次公开的开发工程师调查,获得多建议的是采用类似Scala的方案,“同时使用val和var”,约占一半二多的是“只使用var”,约占四分之一。后来Oracle公司经过慎重考虑,采用了只使用var关键字的方案。

import java.awt.FlowLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JTextField

public class A implements ActionListener {

JFrame jf

JLabel jl1

JLabel jl2

JLabel jl3

JButton jb1

JTextField jtf1

JTextField jtf2

JTextField jtf3

public A(){

init()

showMe()

}

public void init(){

jf=new JFrame("拆分小数点")

jf.setLayout(new FlowLayout())

jl1=new JLabel("请输入小数")

jl2=new JLabel("整数为")

jl3=new JLabel("小数为")

jb1=new JButton("拆分")

jb1.addActionListener(this)

jtf1=new JTextField(10)

jtf2=new JTextField(10)

jtf2.setEditable(false)

jtf3=new JTextField(10)

jtf3.setEditable(false)

jf.add(jl1)

jf.add(jtf1)

jf.add(jl2)

jf.add(jtf2)

jf.add(jl3)

jf.add(jtf3)

jf.add(jb1)

}

public void showMe(){

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

jf.setVisible(true)

jf.setLocation(300, 300)

jf.pack()

}

@Override

public void actionPerformed(ActionEvent e) {

String comm=e.getActionCommand()

if("拆分".equals(comm)){

String s=jtf1.getText()

System.out.println(s)

if(s.contains(".")){

String[] ss=s.split("\\.")

for (int i = 0i <ss.lengthi++) {

System.out.println(ss[i])

}

jtf2.setText(ss[0])

jtf3.setText(ss[1])

}

}

}

public static void main(String[] args) {

new A()

}

}

import java.awt.FlowLayout

import java.awt.GridLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.util.Arrays

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

import javax.swing.JTextField

public class B implements ActionListener {

public JFrame jf

private JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8,jl9,jl10,jl11,jl12

private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8,jtf9,jtf10,jtf11,jtf12

private JPanel jp1,jp2,jp3,jp4,jp5,jp6,jp7,jp8,jp9,jp10,jp11,jp12,jp13

private JButton jb

public B(){

init()

showMe()

}

public void showMe(){

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

jf.setVisible(true)

jf.setLocation(300, 300)

jf.pack()

}

public void init(){

jl1=new JLabel("输入第1个数字")

jl2=new JLabel("输入第2个数字")

jl3=new JLabel("输入第3个数字")

jl4=new JLabel("输入第4个数字")

jl5=new JLabel("输入第5个数字")

jl6=new JLabel("输入第6个数字")

jl7=new JLabel("输入第7个数字")

jl8=new JLabel("输入第8个数字")

jl9=new JLabel("输入第9个数字")

jl10=new JLabel("输入第10个数字")

jl11=new JLabel("最大值为")

jl12=new JLabel("最小值为")

jl11.setEnabled(false)

jl12.setEnabled(false)

jtf1=new JTextField(10)

jtf2=new JTextField(10)

jtf3=new JTextField(10)

jtf4=new JTextField(10)

jtf5=new JTextField(10)

jtf6=new JTextField(10)

jtf7=new JTextField(10)

jtf8=new JTextField(10)

jtf9=new JTextField(10)

jtf10=new JTextField(10)

jtf11=new JTextField(10)

jtf11.setEditable(false)

jtf12=new JTextField(10)

jtf12.setEditable(false)

jp1=new JPanel()

jp2=new JPanel()

jp3=new JPanel()

jp4=new JPanel()

jp5=new JPanel()

jp6=new JPanel()

jp7=new JPanel()

jp8=new JPanel()

jp9=new JPanel()

jp10=new JPanel()

jp11=new JPanel()

jp12=new JPanel()

jp13=new JPanel()

jb=new JButton("确定")

jb.addActionListener(this)

jp1.setLayout(new FlowLayout())

jp1.add(jl1)

jp1.add(jtf1)

jp2.setLayout(new FlowLayout())

jp2.add(jl2)

jp2.add(jtf2)

jp3.setLayout(new FlowLayout())

jp3.add(jl3)

jp3.add(jtf3)

jp4.setLayout(new FlowLayout())

jp4.add(jl4)

jp4.add(jtf4)

jp5.setLayout(new FlowLayout())

jp5.add(jl5)

jp5.add(jtf5)

jp6.setLayout(new FlowLayout())

jp6.add(jl6)

jp6.add(jtf6)

jp7.setLayout(new FlowLayout())

jp7.add(jl7)

jp7.add(jtf7)

jp8.setLayout(new FlowLayout())

jp8.add(jl8)

jp8.add(jtf8)

jp9.setLayout(new FlowLayout())

jp9.add(jl9)

jp9.add(jtf9)

jp10.setLayout(new FlowLayout())

jp10.add(jl10)

jp10.add(jtf10)

jp11.setLayout(new FlowLayout())

jp11.add(jl11)

jp11.add(jtf11)

jp12.setLayout(new FlowLayout())

jp12.add(jl12)

jp12.add(jtf12)

jf=new JFrame("最大值最小值")

jf.setLayout(new GridLayout(13, 1))

jf.add(jp1)

jf.add(jp2)

jf.add(jp3)

jf.add(jp4)

jf.add(jp5)

jf.add(jp6)

jf.add(jp7)

jf.add(jp8)

jf.add(jp9)

jf.add(jp10)

jf.add(jp11)

jf.add(jp12)

jf.add(jb)

}

@Override

public void actionPerformed(ActionEvent e) {

String comm=e.getActionCommand()

if("确定".equals(comm)){

int i1=Integer.parseInt(jtf1.getText())

int i2=Integer.parseInt(jtf2.getText())

int i3=Integer.parseInt(jtf3.getText())

int i4=Integer.parseInt(jtf4.getText())

int i5=Integer.parseInt(jtf5.getText())

int i6=Integer.parseInt(jtf6.getText())

int i7=Integer.parseInt(jtf7.getText())

int i8=Integer.parseInt(jtf8.getText())

int i9=Integer.parseInt(jtf9.getText())

int i10=Integer.parseInt(jtf10.getText())

int arr[]={i1,i2,i3,i4,i5,i6,i7,i8,i9,i10}

Arrays.sort(arr)

int max=arr[9]

int min=arr[0]

jtf11.setText(max+"")

jtf12.setText(min+"")

}

}

public static void main(String[] args) {

new B()

}

}

import java.awt.FlowLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.util.Arrays

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JTextField

public class C implements ActionListener {

private JFrame jf

private JLabel jl1,jl2

private JTextField jtf1,jtf2

JButton jb1

public C(){

init()

showMe()

}

public void init(){

jf=new JFrame("字母排序")

jf.setLayout(new FlowLayout())

jl1=new JLabel("请输入字母")

jl2=new JLabel("排序后")

jb1=new JButton("排序")

jb1.addActionListener(this)

jtf1=new JTextField(10)

jtf2=new JTextField(10)

jtf2.setEditable(false)

jf.add(jl1)

jf.add(jtf1)

jf.add(jl2)

jf.add(jtf2)

jf.add(jb1)

}

public void showMe(){

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

jf.setVisible(true)

jf.setLocation(300, 300)

jf.pack()

}

@Override

public void actionPerformed(ActionEvent e) {

String comm=e.getActionCommand()

if("排序".equals(comm)){

String s=jtf1.getText()

char[] c=new char[s.length()]

if(s.endsWith("#")){

for (int i = 0i <s.length()i++) {

c[i]=s.charAt(i)

}

}

Arrays.sort(c)

String ss=""

for (int i = 0i <c.lengthi++) {

ss=ss+c[i]

}

jtf2.setText(ss.substring(1))

}

}

public static void main(String[] args) {

new C()

}

}

都是有界面的,写界面不难 就是很麻烦。。。我自己写的 都是可以直接运行的,有什么问题可以再问我。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7732629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存