| Java | C++ |
|---|---|
| 解释型语言,Java编译器(javac)将源代码编译为Java字节码(class文件),JVM负责执行字节码 | 编译型语言,编译器将源代码编译成机器码,机器直接执行机器码 |
| 跨平台,基本类型都有标准的范围限制和字节长度 | 平台相关,其数据类型的字节长度在不同的操作系统可能长度不一致 |
| 通过JNI调用本地系统库 | 直接调用本地系统库 |
| 面向对象 | 面向对象和面向过程 |
| 自动垃圾回收,无析构函数(对象销毁自动调用的方法) | 显式内存管理,有析构函数 |
| 不支持多重继承 | 支持多重继承 |
| 值传递(数值,引用地址都是值) | 指针、引用、值传递 |
值传递和引用传递的区别:看传递的内容是否是传递副本,如果是,则是值传递,反之引用传递
Java传递参数如果是对象引用,是通过复制对象的引用,即对象的地址,故仍然是值传递
public class Demo {
public static void main(String[] args) {
String str = new String("hello world");
System.out.println(str);
changeit(str);
System.out.println(str);
}
public static void changeit(String string) {
string = new String("hello go");
}
}
输出:
hello world
hello world
参考资料
Hollis 大神的《2023全新Java面试宝典课程,八股文学习资料》