b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

微信java [ 转 ]C++和JAVA的区别(7)

电脑杂谈  发布时间:2018-01-06 03:03:59  来源:网络整理

(13) 被定义成类成员的对象句柄会自动初始化成null。

对基本类数据成员的初始化在Java里得到了可靠的保障。若不明确地进行初始化,它们就会得到一个默认(零或等价的)可对它们进行明确的初始化(显式 初始化):要么在类内定义它们,要么在构建器中定义。采用的语法比C的语法更容易理解,而且对于static和非static成员来说都是固定不变 的。我们不必从外部定义static成员的存储方式,这和C是不同的。

(14) 在Java里,没有象C和C那样的指针。

用new创建一个对象的时候,会获得一个引用(或者叫句柄)例如: Strings = new String("helloworld");

然而,C引用在创建时必须进行初始化,而且不可重定义到一个不同的位置。但Java引用并不一定局限于创建时的位置。它们可根据情况任意定义,这便消除了对指针的部分需求。

在C和C里大量采用指针的另一个原因是为了能指向任意一个内存位置(这同时会使它们变得不安全,也是Java不提供这一支持的原因)。指针通常被看作 在基本变量数组中四处移动的一种有效手段。Java允许我们以更安全的形式达到相同的目标。解决指针问题的终极方法是“固有方法”。将指针传递给方法时, 通常不会带来太大的问题,因为此时没有全局函数,只有类。而且我们可传递对对象的引用。Java语言最开始声称自己“完全不采用指针!”但随着许多程序员 都质问没有指针如何工作?于是后来又声明“采用受到限制的指针”(有人管它叫隐藏了的指针)。大家可自行判断它是否“真”的是一个指针。但不管在何种情况 下,都不存在指针“算术”。微信java

JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c语言中指针操作失误,如野指针所造成 的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。

其实,取消指针(Pointer)这样数据类型,可能会让许多熟悉C语言的程序设计师大吃一惊。在C语言里,灵活地运用指针是许多程序设计师的得 意之作,但是占整个除错时间最久的也是指针的问题。配合上C对内存管理的态度,程序设计师必须要自己去追踪自己向系统要到的内存,最后确实地交还给系 统,并且在使用指针时,要小心翼翼地注意不要跨过合法的记忆空间,造成Segmentation Fault或General Protection Fault之类的问题。

Java去掉了指针类型,并不表示程序设计师在开发高级数据结构,像堆栈(stack)、队列(queue)、二元树(binarytree)时,都必须要像在传统Basic上,利用大范围的数组来自行模拟系统内存,自行建构类指针的表示方式。

相反地,Java提供了和Lisp语言中相的Reference类型,通过Reference去读取配置到的内存内容,可以确保不会去读取到不属于自己 的内存空间,而另一方面,程序的执行系统也可以动态地去做内存垃圾回收的工作,将没有被reference参考到的内存空间回收给系统使用。 ff(15) Java提供了与C类的“构建器”(Constructor)。

如果不自己定义一个,就会获得一个默认构建器。而如果定义了一个非默认的构建器,就不会为我们自动定义默认构建器。这和C是一样的。注意没有复制构建器,因为所有自变量都是按引用传递的(注意:而C++中对象可由或引用传递。)


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-58491-7.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...