Java语言常规编程特性浅淡

2019-04-25 06:23温立辉
科技资讯 2019年3期
关键词:集合进程

温立辉

摘 要:针对Java编程环境的常规特性,讨论了JDK的字符及编程API接口,详细论述了String对象的实例原理及常量池管理方式,同时阐述了各种不同类型集合的差别及适用场景,对List下的3个子类的实现原理做深刻分析,最后分析了线程与进程的差别以及Java的进程管理方式,剖析了JDK编程环境中如何进行进程管理。

关键词:JDK API 字符对象 集合 进程

中图分类号:TP311 文献标识码:A 文章编号:1672-3791(2019)01(c)-0026-02

Java语言诞生于1995年,Sun公司在1996年推出了第一个JDK版本,随后以其独特的魅力迅速占领了广大的编程市场。随着技术的成熟与更新,今年Sun公司推出JDK10,扩充与完善许多新功能点与特性。对广大的编程人员来说,目前使用最广泛的是JDK6、JDK7,有部分企业用户也在使用JDK8。尽管版本更新的速度非常快,但JDK6以上即可满足常规编程的需要,无需使用过高的版本。JDK6以上的版本中含有丰富编程接口,作为开发人员,应该掌握常见的相关核心部分API,以满足编程业务的需要。

1 编程接口API应用

JDK6的API涉及各个方面,完全覆盖各种的编码需要,包括字符类处理、输入输出、网络编程、对象传递、内存管理、数学计算等,一般来说,无需做到全部熟练掌握,只需在编程中需要使用时懂得如何使用帮助文档来获得有用信息及相关的帮助即可,以下对API的几个应用点做分析。

1.1 字符类实例化处理

String类作为Java语言中用得最广泛的字符处理类,在JVM中其对象实例化过程有别于一般的Java类。Java语言中分两种数据类型,分别是:基本数据类型、用户自定义数据类型,除了八大数据类型为基本数据类型,其他的所有类型都可以归类为用户自定义数据类型。基本数据类型实例化过程都是在JVM的栈空间上存储数据,用户自定义数据类型则是在堆空间存储数据。String类不同于基本数据类型,也属于用户自定义数据类型,但其数据存储方式有别一般的自定义数据类型。

当使用Stringa1=“abc”的方式实例化数据时,栈空间会创建引用a1及在常量池中创建“abc”字符对象,当再次执行 Stringa2=“abc”语句时,则栈空间会创建引用a2,同时指常量池中的“abc”。当使用Stringa3=new String(“abc”)的方式实例化数据时,则会在JVM的堆空间创建引用a3及字符串对象“abc”。

1.2 集合类对象处理

Java语言中集合的作用是临时存储对象,以供应用程序后续处理,一共有3种类型集合,分别是:List、Set、Map,3种类型各有自身的特色,它们之间相互补充共同组成完整集合体系。

List:是Collection下的一个子接口,代表的是有序的对象集合系列,在该类型下的集合系列,所有对象将按一定次序排列,允许重复的添加同一对象,以及空对象,此接口下有3种类型的实现子类,分别是ArrayList、Vector、LinkedList。ArrayList是被最广泛使用的集合类型,其底层使用数组的方式实现对象的存储,通过索引来查找集合中的元素,也叫动态数组集合。Vector是List集合的另一种类型,其底层实现与ArrayList类似,它们之间的根本区别是ArrayList没有实现线程同步,而Vector则是实现了线程的同步加锁,其在并发的状态下线程是安全的,但在执行的效率上却不如ArrayList,这正是ArrayList被大量使用的原因。LinkedList类型集合与前两种类型相差较大,其底层使用链表的方式来实现,其在增加或删除集合中元素时效率非常高,但查询检索集合中元素时效率却远比不上ArrayList类型,因而在使用集合时要考虑是增、减操作频繁还是检索操作频繁。

Set:是Collection的另外一个子接口,此子接口下的所有实现子类型均不能添加重复对象,此接口下有3个实现类型,分别是HashSet、TreeSet、LinkedHashSet。HashSet类型底层使用Hash算法原理实现,存储在此类型中的元素均为无序存储。TreeSet类型底层使用树状结构原理实现元素存储,此類型集合可以对存储在其中的元素按某一维来进行排序。LinkedHashSet类型底层使用Hash算法与链表共同组合实现,此类型里面的元素按添加的顺序存储,在进行增、减操作效率最高。

Map:是一个键值对接口,该类型的作用也是临时存储对象实例,存储在此接口中的元素以键/值(key/value)的方式存在。在添加对象时要设定好相应的key,且key不能重复,否则会被后面的数据覆盖,取值时通过key去取得相应的对象值。该接口的实现子类有HashMap、Hashtable、TreeMap,其中前两种类型均以数组和链表的组合成散列表的形式存在,两者的区别在于HashMap没有实现线程安全,只能适用于单线程操作,而Hashtable是实现了线程同步加锁,可以在线程并发状态使用。TreeMap是用树状结构实现的散列表,其能实现对所存储在其中元素的排序输出。

2 进程类操作处理

在计算机操作系统中有两种不同的任务概念,分别是:进程与线程。进程是任务执行的基本单位,一个正在运行的应用程序就是一个进程,是一个重量级的概念。线程是计算机CPU调度的基本单位,其代表任务执行的一个时间片或资源片,一个进程可以包含多个线程,即一个任务可以由多个资源来共同完成,这就是多线程,计算机系统中能够同时运行多个应用程序就是因为多线程的存在,相对进程来说,线程是轻量级的概念。

在Java编程语言中,只有线程的专用API接口,而没有进程专用API接口,因而要创建进程需要借助于操作系统的环境才能实现相关的功能。在JDK中有一个Runtime类代表JVM与操作系统环境相连的桥梁,其是一个单例类,每个Java应用程序有且仅有其对应的一个Runtime实例,在此类中可通过其内置的静态方法getRuntime()来取得其本类的实例。Runtime类型中包含了一个非静态的exec()方法,在方法中以字符串参数的形式传入操作系统环境中的进程命令,该方法执行完毕后,会返回一个Process类型的实例,代表刚刚启动的这个进程。Process类型中有一个destroy()方法,为进程终止方法,每个进程的任务执行完毕后都必须显示执行此方法销毁进程,否则会影响到后继其他进程的创建、执行。

3 结语

JDK版本的每一次升级都为Java编程环境加入新的活力,JDK5增加泛型的特性,JDK6增加Annotation注解的特性,JDK7在System类型中增加了很多获取环境信息的工具方法,JDK8增加了接口默认方法,随着JDK新版本的进一步发布,其新功能与新特性会越来越多。一般来说,新的特性与功能还要经历时间与市场的检验,最新的版本暂时来说未必就是最完善的版本,就目前来说,JDK6是最适合作为企业级开发的编程环境。

参考文献

[1] 钱宇虹.多线程环境下如何正确使用Java集合类[J].软件工程师,2012(10):45-48.

[2] 笪林梅.用Java字符流类实现数据操作[J].兰州工业高等专科学校学报,2010(4):12-15.

[3] 李乃健,田纪宏,胥国伟,等.操作系统中进程同步算法的仿真研究[J].现代计算机:专业版,2018(9):57-61.

猜你喜欢
集合进程
多核一个都不落CPU极限这样用
Dalvik虚拟机进程模型研究
快速杀掉顽固进程
不留死角 全方位监控系统
谁在后台偷偷搞“串联”
与学生的一次双赢探究
论五声性集合4—23对作品的多层次控制形态
论述高中数学中集合的类型及基本运算
一道数学填空题引发对细节的思考
解读《集合》