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

2023-12-16 17:05:14

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

?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对象的传递,传递的内容是对象的引用。

文章来源:https://blog.csdn.net/Java_Yangxiaoyuan/article/details/135030338
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。