首页 > 试题广场 > 关于Java和C/C 的比较,下列哪个描述是错误的?
[不定项选择题]
关于Java和C/C++的比较,下列哪个描述是错误的?
  • Java不支持指针,C/C++支持
  • Java程序不需要显式地关心内存释放,而C/C++需要
  • Java和C++一样,是纯编译型语言,因此它们的class都是在编译时静态联编(static binding)的
  • Java数组、字符串不可能溢出,C/C++数组、字符串则有可能溢出边界

21个回答

添加回答
推荐
答案:CD
C,java不完全算是编译型语言,他编译的字节码文件运行时是解释执行的,其次,java和C++的类也不都完全是静态绑定的,比如C+++的虚函数,java的父类引用子类对象等情况。
D,java也可以数组溢出,溢出是会抛出异常,也就是ArrayIndexOutOfBoundsException
编辑于 2015-01-27 14:14:28 回复(5)
编译型语言和解释性语言:编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。但是,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种,用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。
静态联编是指编译时多态,动态联编是指运行时多态,看网上多指C++。
java字符串可以拼接,这个溢出的限定不好判断,但是数组是一定可以溢出的。

发表于 2017-02-09 21:49:35 回复(0)
选CD
Java和C++的区别:
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(类型不匹配)。

编辑于 2018-07-16 09:55:53 回复(0)
Java和C/C++的比较
1. Java不支持指针,C/C++支持
2. Java程序不需要显式地关心内存释放,而C/C++需要
3. Java程序需要编译成字节码文件,然后再解释执行。
4. Java数组可能溢出,C/C++数组、字符串则有可能溢出边界
发表于 2016-06-22 21:01:24 回复(0)
D
Java数组可能溢出
发表于 2015-01-18 17:22:53 回复(0)
说java不支持指针 难道一定要->表示的吗  类似指针的概念不就好了
发表于 2018-10-14 10:47:53 回复(0)
不支持指针太过绝对了吧,java只是把指针封装起来了,底层源码还是用到了呀,像unsafe
发表于 2017-10-13 23:10:22 回复(0)
蒙对了,因为ab必对,又是多选,选的cd
发表于 2017-09-17 16:57:55 回复(0)
C,java不完全算是编译型语言,他编译的字节码文件运行时是解释执行的,其次,java和C++的类也不都完全是静态绑定的,比如C+++的虚函数,java的父类引用子类对象等情况。
发表于 2017-05-10 10:57:01 回复(0)
C,D. Java程序需要编译成字节码文件,然后再解释执行。
发表于 2014-10-27 09:23:55 回复(1)
静态联编是指编译时多态,动态联编是指运行时多态。
java是一种先编译后解释型语言。
发表于 2018-09-25 16:23:30 回复(1)
java没有指针?那链表呢?
发表于 2018-07-30 08:17:57 回复(0)
能不能说明多选,老是以为单选
发表于 2018-05-02 20:31:33 回复(0)
眼花了,选了AB.
发表于 2018-03-07 20:42:00 回复(2)
不支持指针这个太严格了。既然用到了指针就应该算支持指针
发表于 2017-08-01 18:07:07 回复(0)
java严格来说是不支持指针,但是内部有用到。
动态联编是运行时才明确调用者和被调用者,静态联编是编译时就确定这些了。
staitc就是静态联编的表现。所以java和C++都有静态联编和动态联编。因此并不是所有的类都是静态联编。
字符串这个是常识,都会溢出。
CD
发表于 2017-03-27 16:18:33 回复(0)
用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。
发表于 2017-02-14 19:48:12 回复(0)

Java比较特殊,.java文件经过编译之后,再利用解释的方式在运行。

     即,经过编译之后形成了字节码文件(.class)文件,字节码文件可以跨平台运行。其可以在任何一种操作系统中的任何一个JVM上来被解释运行,即JVM是一个字节码解释器。

     所以,Java先编译,再解释。C错误,至于D,很明显java中数组是可以溢出的

发表于 2016-10-08 22:15:09 回复(0)
java中多态就是动态绑定
发表于 2016-08-22 09:56:47 回复(0)
JAVA也可能发生数组溢出。
发表于 2016-05-24 18:38:20 回复(0)
多态是动态联编
发表于 2016-03-09 15:22:25 回复(0)