Java 和 C++ 主要区别有哪些?各有哪些优缺点?

面试回答

Java 和 C++ 分别代表了两种类型的语言:

C++是编译型语言(首先将源代码编译生存机器语言,再由机器运行机器码),执行速度快、效率高;依赖编译器、跨平台性差些。

Java 是解释型语言(源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行),执行速度慢、效率低;依赖解释器、跨平台性好。

Java 是半编译、半解释型语言。Java 编译器(javac)先将 Java 源代码编译成 Java 字节码(.class),JVM 负责解释执行字节码文件。

二者更多的主要区别如下:

C++平台相关 的,Java 是平台无关的。

C++ 对所有的数字类型有标准的范围限制,但字节长度是跟具体实现相关的,同一个类型在不同操作系统可能长度不一样。Java 在所有平台上对所有的基本类型都有标准的范围限制和字节长度。

C++ 除了一些比较少见的情况之外和 C 语言兼容。Java 没有对任何之前的语言向前兼容。但在语法上受 C/C++ 的影响很大。

C++ 允许直接调用本地的系统库。Java 要通过 JNI 调用,或者 JNA。

C++ 允许过程式程序设计和面向对象程序设计。Java 必须使用面向对象的程序设计方式。

C++ 支持指针,引用,传值调用。Java 只有值传递。

C++ 需要显式的内存管理,但有第三方的框架可以提供垃圾搜集的支持。支持析构函数。Java 是自动垃圾收集的。没有析构函数的概念。

C++ 支持多重继承,包括虚继承。Java 只允许单继承,需要多继承的情况要使用接口。

知识扩展

Java 与 C 的参数方法有什么区别?

C语言是通过指针的引用传递

复制代码
void swap(int *i,int *j){
	int temp = *i;
    int *i=*j;
    *j=temp;
}

Java 会拷贝当前栈中的值传递过去

复制代码
public static void main(String[] args){
    int i=10;
    int j=20;
    swap(i,j);

    Test ii=new Test(i);
    Test jj=new Test(j);
    swapInstance(ii,jj);
}

private void swap(int i,int j){
	int temp=i;
    i=j;
    j=temp;
}

private void swapInstance(Test i,Test j){
    Test temp=i;
    i=j;
    j=temp;
}

编程语言中的需要进行方法间的参数传递,这个传递的策略叫做求值策略。

在程序设计中,求值策略有很多种,比较常见的是值传递和引用传递。还有一种传递的特例------共享对象传递。

值传递和引用传递最大的区别是传递的过程中有没有复制出一个副本来,如果是传递副本,那就是值传递,否则就是引用传递。

Java 对象的传递,是通过复制的方式把引用关系传递了,因为有复制的过程,所以是值传递,只不过对于 Java 对象的传递,传递的内容是对象的引用。

相关推荐
weixin_4407841116 小时前
【HandlerThread实现原理】
android·java·开发语言
天空'之城16 小时前
C 语言工业级通用组件手写 24:互补滤波
c语言·开发语言·互补滤波·嵌入式算法·工业级组件
leoZ23116 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
XR12345678816 小时前
工厂车间无线网络方案对比:AGV漫游哪家强?
开发语言·php
傻啦嘿哟17 小时前
某短视频平台视频爬虫实战:抓取推荐流视频信息,绕过反爬的3种技巧
开发语言·爬虫·python
現実君18 小时前
【硬件进阶】AD22上位替换JLEDA教程
开发语言·php
mubei-12318 小时前
SpringDAO的用法
java·开发语言·数据库
happymagic18 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
2601_9561219720 小时前
二分算法(知识点+题目)
c++·算法
格林威20 小时前
多相机微秒级对齐:硬件触发 vs PTP(IEEE 1588)方案实战对比
开发语言·人工智能·数码相机·机器学习·计算机视觉·视觉检测·机器视觉