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

在这里插入图片描述
在这里插入图片描述

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

  • ✅Java和C++分别代表两种类型的语言
    • ✅ C++是编译型语言
    • ✅ Java是解释型语言
    • ✅ 两者更多的主要区别如下:
  • ✅知识拓展
    • ✅Java与C的参数方法有什么区别?

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


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

✅ C++是编译型语言

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

✅ Java是解释型语言

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


PS:也有人说ava是半编译、半解释型语言。Java 编译器(ava先将iava源程序编译成Java字节码(.class),JVM负责解释执行字节码文件。


✅ 两者更多的主要区别如下:

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


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


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


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


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


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


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


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

✅知识拓展

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


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

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

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

//Java栈的复制
/**
*  @author 昕宝爸爸爱编程
*/
public class JavaTest {
	private int num;
	//构造代码块
	public JavaTest(int num) {
		this .num = num;
	}
	@Override
	public string tostring() {
		return "JavaTest{" + 
		"num=" + num +
		 '}';
	}
	public static void main(Stringl] args) {
		int i = 10;
		int i = 20;
		swap(i,j);

		//10
		System.out.println(i);
		//20
		System.out.println(j);

		JavaTest ii = new JavaTest(i);
		JavaTest jj = new JavaTest(j);

		swapInstance(ii,jj);
		//Test{num=10}
		System.out.println(ii);
		//20
		System.out.println(jj);
		
	}

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

	private static woid swapInstance(JavaTest i, JavaTest j) {
		JavaTest temp = i;
		i = j;
		j = temp;
	}
}

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


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


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


本站博文参考: Java是值传递还是引用传递


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/252055.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode day24

LeetCode day24 今天主打一个快乐happy(▽ʃ♡ƪ),主要是今天写哈夫曼树被经典文件读取坑麻了(为啥绝对路径能读取,相对不行。罢了) 一个中等题,但是咋感觉很小学捏。。。 2177. 找到和为给定整数的三个连续整数 相…

消息队列有哪些应用场景?

分布式系统不同模块之间的通信,除了远程服务调用以外,消息中间件是另外一个重要的手段,在各种互联网系统设计中,消息队列有着广泛的应用。从本文开始,专栏进入分布式消息的模块,将讨论消息队列使用中的高频…

C++入门篇

呀哈喽,我是结衣。 了解完C的发展历程,我们当然也要会用C啊。今天这篇博客就是来帮助我们来入门C的,当然要入门C当然也要先学会C语言啦。在我学习C的过程中我会一直把C博客更新下去的。 C关键字 我们都知道C语言是有32个关键字的&#xff0…

Linux之进程(四)(进程地址空间)

目录 一、程序地址空间 二、进程地址空间 1、概念 2、写时拷贝 3、为什么要有进程地址空间 四、总结 一、程序地址空间 我们先来看看下面这张图。这张图是我们在学习语言时就见到过的内存区域划分图。 下面我们在Linux下看一看内存区域是不是也是这么划分的。 可见在Li…

EIS(防抖):meshflow算法

视频防抖的应用 对视频防抖的需求在许多领域都有。 这在消费者和专业摄像中是极其重要的。因此,存在许多不同的机械、光学和算法解决方案。即使在静态图像拍摄中,防抖技术也可以帮助拍摄长时间曝光的手持照片。 在内窥镜和结肠镜等医疗诊断应用中&…

Linux下C++程序瘦身

目录 一.前言二.如何瘦身三.如何读取调试信息文件四.其他 一.前言 我们知道,C程序如果带着调试信息的话会比较大,所以一般发布版本都会去掉调试信息,但是我们又希望如果程序崩溃了可以使用core转储文件进行调试,如果不带调试信息…

[已解决】uniapp内置插件,editor富文本报错(附quill.min.js、image-resize.min.js文件)

在使用uni-app运行内置插件editor时,无法输入内容,控制台报错 原因:查看官网得知,需动态引入quill.min.js、image-resize.min.js文件 解决方法: 1.下载quill.min.js、image-resize.min.js到项目static/eidtor文件中 链…

有没有手机电脑同步的工作时间管理软件?

越来越多的职场人士感到每天的工作任务是比较多的,而工作时间又是有限的,所以经常时间不够用。因此,对于上班族来说,高效的时间管理是提高工作效率、按时完成任务的关键。为了满足这一需求,很多网友都在寻找一款既能在…

Golang. channel的关闭

使用内置函数close可以关闭channel,当channel关闭后,就不能再向channel写数据了,但是仍然可以从channel中读取数据。 一旦将channel关闭了,只能读不能写。相当于关闭管道就数据不能进入到队列里面了,只能进行读操作&a…

容器启动不了,折腾了一下午,docker 脚本注意点

1、事件回放 下午的的时候同事说我的项目容器启动不了,一直报错。 项目是一个多模块项目,其他的模块都可以打包成功运行,只有一个特殊的模块怎么都不成功。 在他本地看了一番之后也没发现问题,主要看了Dockerfile 和 start.sh&…

YOLOv8改进:轻量化卷积设计 | DualConv双卷积魔改v8结构

🚀🚀🚀本文改进: DualConv双卷积魔改v8结构,达到轻量化的同时并能够实现小幅涨点 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.DualConv介绍 论文:https://arxiv.org/pdf/2202.07481.pdf 摘要…

我的NPI项目之Android 安全系列 -- EMVCo

最近一直在和支付有关的内容纠缠,原来我负责的产品后面还要过EMVCo的认证。于是,就网上到处找找啥事EMVCo,啥是EMVCo,啥是EMVCo。 于是找到了一个神奇的个人网站:Ganeshji Marwaha 虽然时间有点久远,但是用…

【FPGA/verilog -入门学习11】verilogTestbench中的文本文件写入,读出,打印等操作

本文参考:Verilog中的系统任务(显示/打印类)--$display, $write,$strobe,$monitor-CSDN博客 Verilog:parameter、localparam的区别和用法-CSDN博客 Verilog的系统任务----$fopen、$fclose和$fd…

【计算机组成与体系结构Ⅱ】多处理器部分讨论题目

多处理机课堂讨论 1.并行计算体系结构有哪些? SIMD、MIMD 2.多处理机的存储结构有哪些? 对称式共享存储器结构、分布式共享存储结构 3.什么是多处理机的一致性? 如果对某个数据项的任何读操作均可得到其最新写入的值,则认为这个存储系统是一致的。 4.监听协议的工…

vivado 时间约束窗口

时间约束窗口 “时序约束”窗口仅适用于“合成”和“实施”设计。对于详细的设计约束,您必须直接使用和编辑XDC文件。欲了解更多信息,请参见创建合成约束。可以使用以下三个选项之一打开“计时约束”窗口,如图所示如下图所示: •…

ES-组合与聚合

ES组合查询 1 must 满足两个match才会被命中 GET /mergeindex/_search {"query": {"bool": {"must": [{"match": {"name": "liyong"}},{"match_phrase": {"desc": "liyong"}}]}}…

鼠标点击展开详情

网页部分&#xff1a; HTML部分&#xff1a; <body><br><div id"nav"><div id"dang"></div><ul id"aaa"><li class"a1"><img src"img/U011.jpg" width"195" heig…

鸿蒙南向开发环境的搭建

在嵌入式开发中&#xff0c;很多开发者习惯于使用Windows进行代码的编辑&#xff0c;比如使用Windows的Visual StudioCode进行OpenHarmony代码的开发。但当前阶段&#xff0c;大部分的开发板源码还不支持在Windows环境下进行编译&#xff0c;如Hi3861、Hi3516系列开发板。因此&…

论文阅读:Learning sRGB-to-Raw-RGB De-rendering with Content-Aware Metadata

论文阅读&#xff1a;Learning sRGB-to-Raw-RGB De-rendering with Content-Aware Metadata Abstract 大多数的 Camera ISP 会将 RAW 图经过一系列的处理&#xff0c;变成 sRGB 图像&#xff0c;ISP 的处理中很多模块是非线性的操作&#xff0c;这些操作会破坏环境光照的线性…

MySQL 常用数据类型总结

面试&#xff1a; 为什么建表时,加not null default ‘’ / default 0 答:不想让表中出现null值. 为什么不想要的null的值 答:&#xff08;1&#xff09;不好比较,null是一种类型,比较时,只能用专门的is null 和 is not null来比较. 碰到运算符,一律返回null &#xff08…