问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++语言与Java语言的区别有哪些?(面试题)

发布网友 发布时间:2022-04-23 19:17

我来回答

2个回答

热心网友 时间:2023-10-14 13:04

C++语言与Java语言的区别可以从如下三个方面来看:

1. 变量和类型
1.1 Java没有无符号整数。(无符号右移在Java中强制用三个右尖括号表示)。
1.2 Java有内置类型String,而C++没有。C++的std::string是可变的,类似于Java的StringBuffer。
1.3 C++的整型随机器的位数而变化,但是Java不会。(C++的int在16位机器上16位,32位级以上为32位。long在32位及以下为32位,64位机器上为64位。)
1.4 Java字符串在内存中以Unicode存储,C++与源码的编码相同。
1.5 Java中不存在指针。Java的引用是功能弱化的指针,只能做“调用所指对象的方法”的操作。
1.6 Java的Stream对象(除了PrintStream)功能较单一,只能按字节读写,需要Reader或者Writer的辅助。C++的任何流都可以按字节、字符串、整形的方式读或者写。
1.7 Java是少数几种不能用双等号比较字符串的语言。
1.8 Java的泛型参数不允许是基元类型。(坑)
1.9 Java强制局部变量初始化。

2. 类机制
2.1 Java是完全面向对象的,所有方法都必须写在类中。
2.2 Java强制异常规约。
2.3 Java单根继承,所有对象都继承自Object。并且提供接口机制。
2.4 Java在覆盖时默认为虚函数。
2.5 Java没有默认参数。
2.6 Java中没有运算符重载,和转换函数。
2.7 Java无引用传值。(标准库中一般用Boxing代替。)
2.8 Java没有Struct或者Union。
2.9 Java可以委托构造,而C++14才加入这个特性。
2.10 Java的对象(包括数组)存放于堆上,用new实例化。C++可以选择存放于栈上或者堆上。
2.11 Java可以定义abstract类和final类,即必须被继承,或者无法被继承。C++直到C++1?才支持这个特性。
2.12 Java强制一个文件中只能有一个public的类/接口,并且文件路径强制为它的包名和类名。

3. 其它语言特性

3.1 Java没有delete运算符,由于有gc托管,无需delete。
3.2 Java没有typedef,以及任何和它作用相同的语法。
3.3 Java没有宏。(另一方面这也是种好处,宏是另一个万恶之源)。
3.4 Java使用点运算符做C++用::运算符的事情。而Java的::运算符可以将一个静态函数或者带着对象的动态函数变成一个闭包(Java8)。
3.5 Java的lambda表达式在Java8中被引入,C++是从C++11。
3.6 C++11中引入了range循环,Java是从Java5。
3.7 C++在查找名字时只查找当前代码文件中那行以上的部分。而Java的查找范围是整个项目。(这就是为什么C++需要include而Java不用。)
3.8 Java的标准库比较丰富(尤其是带GUI)。C++如果要实现相同的功能,除了第三方库之外,可以调用系统的api。
3.9 Java在8之前,switch不支持字符串。C++从11起支持短字符串的Switch(长度4字节之内,会映射成int来判断)。
3.10 由于Java是半编译半解释的,运行速度略慢。jvm启动速度不是一般的慢。

热心网友 时间:2023-10-14 13:05

1、Java源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。
2、C++源码一次编译,直接在编译的过程中链接了,形成了机器码。
3、C++比Java执行速度快,但是Java可以利用JVM跨平台。
4、Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如是全局变量和全局函数。
5、C++中有指针,Java中没有,但是有引用。
6、C++支持多继承,Java中类都是单继承的。但是继承都有传递性,同时Java中的接口是多继承,类对接口的实现也是多实现。
7、C++中,开发需要自己去管理内存,但是Java中JVM有自己的GC机制,虽然有自己的GC机制,但是也会出现OOM和内存泄漏的问题。C++中有析构函数,Java中Object的finalize方法。
8、C++运算符可以重载,但是Java中不可以。同时C++中支持强制自动转型,Java中不行,会出现ClassCastException(类型不匹配)。

基本上就是以上内容,回答中有什么遗漏欢迎网友们补充,希望对您有所帮助。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 软件测试员面试为什么还需要了解Java虚拟机 学习java有必要看 深入jvm 吗 java web面试 Java面试题:什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? java面试,问性能调优从哪些方面着手 请问各位JAVA面试都问一些什么问题? 学Java的面试都会问些什么? 初级java面试,面试官是如何出题的 java基础面试题有哪些? 苹果7无通话声音,这个指令是什么意思? iphone7plus代码是多少? 我的苹果7快捷指令系统设置在那 苹果怎么找所有快捷指令方式 苹果7没有快捷指令吗 财信人寿保险公司怎么下载 农银人寿保险app下载? 如何把一台手机上的哔哩哔哩视频转移到另一台手机上? 怎样用手机哔哩哔哩上传视频?? 用手机录的视频传到电脑上,可以投稿到bilibili吗(๑> <๑) 怎么用手机上传自己录的视频到哔哩哔哩上,急,谢谢 哪里有java程序员面试题啊,谢谢 jvm会先去方法区中找有没有相应类的.class存在.如果有,就直接使用_百 ... 面试Java虚拟机 有什么用 深入java虚拟机,*和深入理解Java虚拟机:JVM高级特性与最佳实践。 梦见自己抱住大树差点掉海里 梦到要掉到海里,什么意思 梦到自己坐在船上,差点掉到海里?? 青少年做梦梦见自己下差点掉海里 昨天晚上梦见掉河里了,什么征兆呢? 梦见自己差点从桥上跳下海,海里还有鱼? 梦见自己差点被风刮进大海里 奕字取名寓意好吗? 姓姚,男孩,农历2021年三月二十日上午十点二十分出生,求取名!中间带奕字,姚奕? 为什么要忌讳奕字取名? 起名字姓黄男孩戴个奕字 姓闫,男孩,带个奕字,取什么名好啊? 姓韦带奕字取名,男孩 取个带奕字的名字,我孩子是男孩一二年正月初七生的 起名字,名字中间的字“奕”,求名字中最后一个字,赖奕()希望好听点,寓意也好的,男孩,今年龙年生 李姓起名中间要带奕字辈