之前学习java仅仅是单纯的学习,老师要求学习。所以就学习。可是没有细致考虑过java的一些特别之处,比方,我们为什么要学习java而不是其它的语言,它必定有选择它的特点。所以,从如今開始,仅仅有埋头苦学的日子已经过去,接下来的几个月里,都是埋头苦学加上抬头看路了。

前两天九期忙忙活活的前后准备了好几次面试,晚上闹得家里也不得安宁,于是趁着小左和张薄在沙发上用功的准备面试题的时候,我也随便查了一下java的面试题,发现。关考java特点的就有好几道,要知道面试题和应试教育有一个共同的优点就是。能频繁考到的肯定都是重点。于是今天整理了下java的特点。

java是一种能够撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。Java自面世后就很流行。发展迅速。对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。同一时候拥有全球最大的开发人员专业社群。在全球云计算和移动互联网的产业环境下。Java更具备了显著优势和广阔前景。

那么,java有哪些特点呢?

Java语言是易学的。

Java语言的语法与C语言和C++语言非常接近,使得大多数程序猿非常easy学习和使用Java。还有一方面,Java丢弃了C++中非常少使用的、非常难理解的、令人迷惑的那些特性,如操作符重载、多继承、自己主动的强制类型转换。特别地,Java语言不使用指针。而是引用。并提供了自己主动的废料收集,使得程序猿不必为内存管理而担忧。

Java语言是强制面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,仅仅支持类之间的单继承。但支持接口之间的多继承,并支持类与接口之间的实现机制(keyword为implements)。

Java语言全面支持动态绑定。而C++语言仅仅对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

Java语言是分布式的。

Java语言支持Internet应用的开发,在主要的Java应用编程接口中有一个网络应用编程接口(java net)。它提供了用于网络应用编程的类库,包含URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

Java语言是健壮的。

Java的强类型机制、异常处理、垃圾的自己主动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。

Java的安全检查机制使得Java更具健壮性。

Java语言是安全的。Java通常被用在网络环境中。为此。Java提供了一个安全机制以防恶意代码的攻击。

除了Java语言具有的很多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后能够在实现这个Java平台的不论什么系统中执行。这样的途径适合于异构的网络环境和软件的分发。

Java语言是可移植的。这样的可移植性来源于体系结构中立性,另外。Java还严格规定了各个基本数据类型的长度。Java系统本身也具有非常强的可移植性。Java编译器是用Java实现的。Java的执行环境是用ANSI C实现的。



Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后能够在实现这个Java平台的不论什么系统中执行。

在执行时,Java平台中的Java解释器对这些字节码进行解释执行。执行过程中须要的类在联接阶段被加载到执行环境中。

Java是性能略高的。与那些解释型的高级脚本语言相比,Java的性能还是较优的。

Java语言是原生支持多线程的。在Java语言中。线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。

通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口。因此,不论什么一个线程均有它的run方法,而run方法中包括了线程所要执行的代码。

线程的活动由一组方法来控制。Java语言支持多个线程的同一时候执行,并提供多线程之间的同步机制(keyword为synchronized)。

Java语言是动态的。Java语言的设计目标之中的一个是适应于动态变化的环境。Java程序须要的类可以动态地被加载到执行环境。也可以通过网络来加载所须要的类。

这也有利于软件的升级。

另外。Java中的类有一个执行时刻的表示,能进行执行时刻的类型检查。

Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也降低了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可执行的特性使得它可以提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。

当然,进一步想,java的这些特点都源于它的各种机制,想要知道java的工作机制,敬请期待!

java总结(1)——java的特点的更多相关文章

  1. java head space/ java.lang.OutOfMemoryError: Java heap space内存溢出

    上一篇JMX/JConsole调试本地还可以在centos6.5 服务器上进行监控有个问题端口只开放22那么设置的9998端口 你怎么都连不上怎么监控?(如果大神知道还望指点,个人见解) 线上项目出现 ...

  2. 【Java大系】Java快速教程

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei Java是面向对象语言.这门语言其实相当年轻,于1995年才出现,由Sun公司出品.James Gosling领 ...

  3. 《深入理解Java虚拟机》Java内存区域与内存溢出异常

    注:“蓝色加粗字体”为书本原语 先来一张JVM运行时数据区域图,再接下来一一分析各区域功能:   程序计数器 程序计数器(program Counter Register)是一块较小的内存空间,它可以 ...

  4. Tomcat报java.lang.OutOfMemoryError: Java heap space错误停止运行如何解决

    最近开发的一个商业项目,部署完成后,经常出现Tomcat挂掉的现象,报的异常是:java.lang.OutOfMemoryError: Java heap space,上网google了一下,了解了一 ...

  5. MyCAT报java.lang.OutOfMemoryError: Java heap space

    早上同事反映,mycat又假死了,估计还是内存溢出,查看了一下错误日志. INFO | jvm | // :: | java.lang.OutOfMemoryError: Java heap spac ...

  6. 【Java】实战Java虚拟机之五“开启JIT编译”

    今天开始实战Java虚拟机之五“开启JIT编译” 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实战Ja ...

  7. Java提高篇——Java 异常处理

    异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用Syst ...

  8. Java import以及Java类的搜索路径

    如果你希望使用Java包中的类,就必须先使用import语句导入.import语句与C语言中的 #include 有些类似,语法为:    import package1[.package2-].cl ...

  9. [Java] SoapUI使用Java获取各时间日期方法

    import java.util.*; import java.text.SimpleDateFormat; // current date String dateNew = today() // t ...

  10. Tomcat 启动项目报错 java.lang.OutOfMemoryError: Java heap space

    近日使用myeclipse 部署web项目,启动tomcat时报错: SEVERE: Error waiting for multi-thread deployment of directories ...

随机推荐

  1. Solr学习之三 solr配置说明之一

    严格来说,我这篇内容,主要是根据Solr in Action关于配置的说明,以及参考Solr的wiki写的算是读书笔记吧,所有的图片默认来自Solr in Action这本书. 这本书我觉得对学习So ...

  2. linux安装mysql全纪录[包括yum和rpm安装,编码,远程连接以及大小写问题]

    linux安装mysql全纪录[包括yum和rpm安装,编码,远程连接以及大小写问题] 一.查看mysql是否已经安装 使用“whereis mysql”命令来查看mysql安装路径: [root@h ...

  3. C#中关于用户名和密码的验证问题。

    本次练习的目的是使用LinQ to XML,正则表达式,明天在这个基础上练习使用序列化和反序列化,继续加点儿小功能. 首先,这是一个窗体程序,设计如下: 存放用户名和密码的XML如下: 实现的代码如下 ...

  4. Qt学习之路2---窗口组件及窗口类型

    窗口组件: 图形用户界面由不同的窗口和窗口组件构成: Qt以组件对象的方式,构建图形用户界面. 组件的类型包括: ---容器类(父组件):用于包含其他的界面组件 ---功能类(子组件):用于实现特定的 ...

  5. UserAgent判断浏览器类型或爬虫类型

    ### 浏览器------------------------------- IEMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; T ...

  6. tomcat架构分析 (connector NIO 实现)

    出处:http://gearever.iteye.com 上一篇简单记录了缺省配置的connector的内部构造及消息流,同时此connector也是基于BIO的实现.除了BIO外,也可以通过配置快速 ...

  7. ios UITextField文本框基本使用,以及所有代理方法的作用

    /* UITextField文本输入框 */ UITextField * textField = [[UITextField alloc]initWithFrame:CGRectMake(50, 50 ...

  8. 【Unity笔记】UGUI的自动布局功能

    一些RectTransform的物体(UGUI元素)已经实现了ILayoutElement接口,如Image. 如果一个RectTransform的物体(UGUI元素)的其中一个组件实现了ILayou ...

  9. FireFox火狐不能设置新标签页

    问题:已经在Tab Mix Plus中设置了新建标签页为自定义的网址,但依然没用. 百度很多都是让改about:config中的browser.newtab.url,然而这并没卵用. 办法:https ...

  10. Java类型的生命周期

    以上就是我今天没有总结学习类加载器时候对类加载器仅有的知识,虽然有个大概印象,但是还是有点模糊.今天一口气总结一下,参考文献我就不列举了.本文不生产知识,只是知识的搬运工. 静态.class文件到内存 ...