初学后端开发,相信很多小白跟我刚入门一样,会对于C++和Java存在一定疑惑,今天,阅读了一些相关的内容,我就这里进行一些简单明了的介绍和总结,方便小白对于C++和Java早点入门上手。
首先,我先介绍下C++和Java的概念:
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长**面向对象**程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程Java具有简单性、面向对象、分布式、健壮性、安全性、平***立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java确实是从c语自和C++语言继承了许多成份,甚至可似将Java看成是类c语言发展和衍生的产物。比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和c语言、C++语言完全相同。但同时,Java是一个纯粹的面向对象的程序设计语言,它继承了C++语 盲面向对象技术的核心。Java舍弃了c语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。JDK1.5又引入了泛型编程(Generic Programming)、类型安全的枚举,不定长参数和自动装/拆箱
通常,当我们提到Java时,相信很多同学的第一印象也会是 “ 面向对象 ” ,“没有指针 ,编写效率高,执行效率较低 ”。再更深入、专业一点就谈论 “java内存自动回收(GC垃圾回收机制),多线程编程”。
为了更好理解面向对象和面向过程,在这里我用举例进行说明:
面向过程,例如蔡徐坤打篮球这个事件,那么如果你要再做一个张三打排球的程序呢?是不是程序代码的重新全部做,从头来过?
但是,面向对象,就可以先分解成人的对象、人的运动的动作、运动的器械这三个对象,当你进行蔡徐坤打篮球时,先实例化一个蔡徐坤的对象,对象有一个打篮球的动作,器械是篮球;那么当你想实现张三打排球这个程序是,其实你已经有一个框架了,你需要 带入张三、打排球的动作、排球,就可以实习这个程序。
面向对象能够更好的在抽象的层面来分析问题,在程序实现跨越极大的赋予之前的代码,这是面向过程编码很难实现的,JAVA和C++都拥有这种特点。
java的三大特性是**封装**、**继承**和**多态**。
总结如下:
1、 JAVA的应用在**高层**,C++在中**间件和底层**,也说明了,掌握了一定C++基础再另外学习Java,上门也很快,编程思想是共同的。
2、 JAVA离不开业务逻辑,而C++可以离开业务为JAVA们服务,重点突出了C++更强调底层。
3、 java语言给开发人员提供了更为简洁的语法;取消了指针带来更高的代码质量;完全面向对象,独特的运行机制是其具有天然的可移植性。
4、 java 是运行在JVM上的,之所以说它的可移植性强,是因为jvm可以安装到任何的系统
5、 c++不是不能在其他系统运行,而是c++在不同的系统上运行,需要不同的编码(这一点不如java,只编写一次代码,到处运行)。java程序一般都是生成字节码,在JVM里面运行得到结果。
6、 java 在web网页应用上具有c++ 无可比拟的优势。
7、 java在桌面程序上不如c++实用,C++可以直接编译成exe文件,指针是c++的优势,可以直接对内存的操作,但同时具有危险性 。(操作内存的确是一项非常危险的事情,一旦指针指向的位置发生错误,或者误删除了内存中某个地址单元存放的重要数据,后果是可想而知的)。
8、 垃圾回收机制的区别。c++用析构函数回收垃圾,java自动回收(GC算法),写C和C++程序时一定要注意内存的申请和释放。
9、 java 丰富的插件是java 发展如此迅速的原因。
10、 java 很大的沿袭了c++的一些实用结构 。
11、 对于底层程序的编程以及控制方面的编程,c++很灵活,因为有句柄的存在。
Java并不仅仅是C++语言的一个变种,它们在某些本质问题上有根本的不同:
(1)**Java比C++程序可靠性更高**。有人曾估计每50行C++程序中至少有一个BUG。姑且不去讨论这个数字是否夸张,但是任何一个C++程序员都不得不承认C++语言在提供强大的功能的同时也提高了程序含BUG的可能性。Java语言通过改变语言的特性大大提高了程序的可靠性。
(2)**Java语言不需要程序对内存进行分配和回收**。Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,在Java语言中,内存的分配和回收都是自动进行的,程序员无须考虑内存碎片的问题。
(3)**Java语言中没有指针的概念,引入了真正的数组**。不同于C++中利用指针实现的“伪数组”,Java引入了真正的数组,同时将容易造成麻烦的指针从语言中去掉,这将有利于防止在c++程序中常见的因为数组操作越界等指针操作而对系统数据进行非法读写带来的不安全问题。
(4)**Java用接口(Interface)技术取代C++程序中的多继承性**。接口与多继承有同样的功能,但是省却了多继承在实现和维护上的复杂性。
在这里,还要再补充一些个人见解,如今,我们也可以看到,公司、企业对于Java后台开发人员需求日益增长,相信大伙儿好好认真学习,不断掌握相关知识,笔试前多刷刷题,巩固知识点,笔试面试能顺通过。
祝大伙儿都能够找到心仪的工作~~~~~
本文引用相关文章:
https://blog.csdn.net/lcr_happy/article/details/69802689
http://blog.csdn.net/foreverhuylee/article/details/38590751