(3) 下列语言中,不能用来编写操作系统的是 ( )
A. ASM B. Java C. C D. C++
是java麽????
------解决方案--------------------
这个题目有问题啊,上面的几种语言都可以写操作系统。
比如Java,假设有一种CPU实现了对Java字节码的解释,即硬件JVM,那么就可以直接运行Java代码了。
再者,即使没有这样的CPU。那么可以用汇编实现一个小的JVM,然后就可以运行Java程序。
我们通常所说的Windows、Linux,其实不就是一个C语言的runtime吗?
------解决方案--------------------
作为学校考试题的话
果断java
------解决方案--------------------
Java则是完全面向对象的语言。它摒弃了其它语言的不足之处,从根本上解决了C++固有缺陷。
指针:JAVA语言让编程者无法找到指针来直接访问内存,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
多重继承:c++支持多重继承,这是c++的一个特征,它允许多个父类派生一个子类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends + implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
数据类型及类 :Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
自动内存管理 :Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法:
如何理解java中没有指针?
Java中没有指针的概念,只是对于对象的引用A a;类似于c++中的指针B *b,b是指向一个B类型的对象的首地址的,而a实际上是存放的一个A类型的对象的地址,对象的初始化a=new A()操作等同于c++中的用b=new B()给指针动态分配堆内存,给对象分配空间是和c++中动态给指针分配空间一样的,而且在java中分配的堆内存(new 出来的东东)的管理由jvm负责,程序不能控制。而在c++中,这个指针是程序可以完全控制的,可以delete它,也可以对它进行指针可以有的加减操作等例如:b=b+2; *(b+1);来任意的访问b指向的一段内存中的任何一部分,而在java中这样是不允许的(为了安全的需要)。
所以说java中还是没有指针等,java中程序也是不能控制运行时的内存空间的。这是他和c++的一个区别,也是和c++相比的一个优点/缺点。这样的语言如何来写OS?
还有,Java拿来写OS,如何解决插入汇编直接操作硬件的问题?