大家好,欢迎来到程序视点
!我是小二哥。
今天听到一个面试的小伙伴分享了他的面试经历,说面试官第一个问题是:Java语言和C++语言的区别有哪些?
坊间流传,早些年间这个问题能区分一个Java程序员是不是科班出身!小伙伴怎么认为呢?
缘由
由于 Java 本来就是从 C++ 衍生出来的, 而且 Java 语言的对象模型几乎就是 C++ 对象模型的简化版。
因此,Java语言的第一课就会谈到它们的不同点。这就导致有些面试官喜欢以此作为切入点。
但从小二哥个人觉得,面试官们大体不用这样。通过面试人员的专业不就分辨得很清除了吗。
此外,很多小伙伴可能没学过C++,也有像小二哥这样上课不认真听讲的~压根儿没注意这个问题!
Java Vs C++
针对这个问题,耐不住有的面试官喜欢拿咱们 Java 和 C++ 比呀!没办法!!!
就算大家没学过 C++,也要记下来。以下是小二哥总结的一些点。
-
Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,所有代码(包括函数、变量)都必须在类中定义。C++ 兼容 C ,不但支持面向对象,也支持面向过程,比如是全局变量和全局函数。。
-
Java 通过 JVM 虚拟机实现跨平台特性,但是 C++ 依赖于特定的平台。
-
Java源码先一次编译,再被解释器解释成机器码。而C++源码一次编译,直接在编译的过程中链接了,形成了机器码。
-
Java 没有指针,而是引用。Java 的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。
-
Java 支持自动垃圾回收,而 C++ 需要手动回收。Java 的 JVM 有自己的GC机制(虽然有自己的GC机制,但是也会出现OOM和内存泄漏的问题)。C++中有析构函数,需要C++程序员手动调用;Java中Object也有finalize方法,但基本不会手动调用它。
-
Java 中类都是单继承的,而 C++ 支持多重继承。虽然 Java 不支持类的多继承,但可以通过实现多个接口来达到相同目的。注意,接口是可以多继承的哦~
-
Java不支持自动强制类型转换,必须由开发人员进行显式地强制类型转换。如果类型不匹配,会出现ClassCastException宜昌。C++支持自动强制类型转换,虽然这会导致程序的不安全,但它就做了。
-
Java 不支持操作符重载,虽然可以对两个 String 对象执行加法运算,但是这是语言内置支持的操作,不属于操作符重载,而 C++ 可以。
-
Java 的 goto 是保留字,但是不可用,C++ 可以使用 goto。
...
嗯嗯,Java 和 C++ 之间的区别还是很多的。一次性全部死记硬背住还是比较困难。
小二哥建议大家往这个问题深处想:通过上面的答案,我们会发现这些都是Java语言自身非常鲜明的特征。因此,这个问题的本质不是看大家是不是科班出身的,而是想问Java语言的重要特征有哪些!
大家大概记住前面四五个不同点就好啦~
One more thing
欢迎来到【程序视点】,这里会不定时分享一些技术要点,更有一些深受资源收藏爱好者会喜欢的优质学习资料。
如果您对程序员日常趣事、编程技巧和技术干货等充满兴趣,那么不要错过未来我为大家奉上的精彩内容!点击关注,让您的程序员之旅更加丰富多彩,我们一同成长,一同前行!
标签:面试官,Java,语言,支持,C++,科班,小二哥 From: https://www.cnblogs.com/cxsk/p/17984498