JAVA语言对比C++语言的几个优点和自身的关键特性
之所以写这篇博客不是为了比较JAVA语言和C++语言到底孰优孰劣,而是从语言本身出发进行对比总结程序编码设计上的差别。因水平有限,某些内容可能太过片面,欢迎指正和讨论。
JAVA语言在设计上很好地借鉴了C++语言,是一种完全“面向对象”的编程语言。JAVA语言的语法与C++语言的结构语法非常相似,这使得C++程序猿学习JAVA变得非常容易。
JAVA语言的最大优点就是“Wirte Once,Run Everywhere”,就是“一次编写,到处运行”的意思。JAVA语言相对C++来说,增加了一些新的特性:1)提供了GC,对内存进行自动管理,程序猿无需再程序中进行分配、释放内存,一般来说不用再担心内存分配错误;2)不再使用指针,而是采用其他的方法来弥补;3)与C++相比,JAVA取消了多重继承这个类特性,使得类的继承变得简洁;4)避免了赋值语句和逻辑语句的混淆,同时取消了其他值与布尔值之间的自动转换,这一点有效地降低了某些运行时错误。
关于JAVA语言的关键特性方面,这也是面试过程中容易问到的题,它从宏观方面说明了你对这一门编程语言的理解。JAVA语言是一门非常优秀的编程语言,具有很多有效的特性,最主要的有以下几个。
简洁有效。JAVA语言是一门简洁的“面向对象”的语言,相比C++而言来说更加严谨简洁,它没有C++语言中所有的难以理解的、容易混淆的特性,例如指针、结构、运算符重载、虚拟基础类等。
面向对象。JAVA语言一门完全面向对象的语言,不支持类似C语言那样的面向过程的程序设计技术,这也是JAVA语言最重要的语言特性。JAVA语言将数据和对数据的操作都封装在一个类中,并提供类,接口和继承,JAVA类(class)仅支持单继承(C++支持多继承),接口(interface)支持多继承,类与接口之间有实现(implements)机制。JAVA在面向对象上类似于SmallTalk,但从其他方面来说优于SmallTalk。
可移植性。JAVA应用程序可以在配备了JAVA解析器和运行环境的任何计算机系统上运行,这使得JAVA应用有了便于移植的良好基础。
解释型。JAVA语言是一门解释型语言,相对C/C++来说,JAVA程序执行效率低,速度慢,但是正是因为JAVA通过在不同的平台上运行JAVA解释器,对JAVA代码进行解释,从而实现了“Wirte Once,Run Everywhere”的跨平台目标。有舍有得啊,另一面来说,随着机器性能的提高,解释技术的改进(像即时编译,just in time),用户或许不会在乎这种性能上的差异。
适合分布式计算。Java是一种适合于网络应用程序开发的语言,用Java语言编写Socket通信程序可以像访问本地文件系统那样通过URL访问远程对象,可以实现公共网关接口(CGI)脚本的开发,还可以应用Java小应用程序(Applet)、Java服务器页面(Java Server Page,JSP)、Servlet等方式进行网络应用开发。
JAVA语言对比C++语言的几个优点和自身的关键特性的更多相关文章
- java语言对比,jvm,垃圾回收
1.java/c++/ruby/python集中语言的对比 java和c++ 1,没有指针 2,没有多继承 3,没有const 4,在实现多态上的区别 tc++里面的虚函数,纯续函数和java里 ...
- Java语言与C++语言的差异总结
Java的设计者曾说过,设计这门语言的灵感主要来自于C++. 世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史.所以在Java语言学习过程中,将其与C++语言对比是 ...
- 关于Lisp和函数式编程 & 各种语言对比 & TIOBE
上一篇文章提到了,今天又读到Lisp的一些内容 <为什么Lisp如此先进>ruanyifeng(Link).关于Lisp的八卦,可以参考我前面两篇文章 http://www.cnblogs ...
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...
- java安全沙箱(三)之内置于Java虚拟机(及语言)的安全特性
java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及J ...
- [转]深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
以下内容转自: 作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-l ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- Java编写的C语言词法分析器
Java编写的C语言词法分析器 这是java编写的C语言词法分析器,我也是参考很多代码,然后核心代码整理起来,放在QQ空间和博客上,目的是互相学习借鉴,希望可以得到高手改进.这个词法分析器实现的功能有 ...
- Java学习笔记--脚本语言支持API
Java语言的动态性之脚本语言支持API 随着Java平台的流行,很多的脚本语言(scripting language)都可以运行在Java虚拟机啊上,其中比较流行的有JavaScript.JRuby ...
随机推荐
- .NET知识点总结一(笔记整合)
1. .net framework原理简介,C#程序的两次编译 .NET源代码——>语言编译器(第一次编译)——>MSIL+元数据(exe文件)——>CLR(公共语言运行时——类 ...
- 简述TVS是的命名和封装
1. 瞬态抑制二极管简称TVS (Transient Voltage Suppressor ),TVS的电气特性由P-N结面积,参杂浓度及晶片阻质决定的.其耐突波电流的能力与其P-N结面积成正比. 特 ...
- windows设备驱动安装接口(自己仿写)
/***************************************** Author:foo_hack This is File named:Setup.h The Funtion Im ...
- BZOJ1108: [POI2007]天然气管道Gaz
1108: [POI2007]天然气管道Gaz Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 410 Solved: 211[Submit][Sta ...
- myeclipse实现Servlet实例(1) 通过继承servlet接口实现
1.在myeclipse新建web project,配置Tomcat(在myeclipse的Window--preferences) 2.然后在src新建servlet文件( 此处放在com.tsin ...
- Java中普通代码块,构造代码块,静态代码块的代码演示样例及区分
//运行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 当中静态代码块仅仅运行一次.构造代码块在每次创建对象是都会运行. 1 普通代码块 <span ...
- [2011山东省第二届ACM大学生程序设计竞赛]——Identifiers
Identifiers Time Limit: 1000MS Memory limit: 65536K 题目:http://acm.sdut.edu.cn/sdutoj/problem.php?act ...
- 退役笔记一#MySQL = lambda sql : sql + ' Source Code 4 Explain Plan '
Mysql 查询运行过程 大致分为4个阶段吧: 语法分析(sql_parse.cc<词法分析, 语法分析, 语义检查 >) >>sql_resolver.cc # JOIN.p ...
- Android中Service类onStartCommand
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStart ...
- How to build UDK2015?
UDK2015 is a stable release of portions of the EDKII project. 本文记录在Win7下用VS2012 编译UDK2015的过程. Step1, ...