欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java与C/C++比较——对象引用方面,java引用

来源: javaer 分享于  点击 35565 次 点评:146

Java与C/C++比较——对象引用方面,java引用


Java与C/C++的比较

  • 一提到Java与C/C++的不同,很多人首先想到的是Java没有指针。本文就是探讨一下这个不同

    • Java没有指针,但只是没有显式指针,其实Java的指针无处不在。

    • Java的基本数据类型的引用与C/C++类似,但对象的引用与C/C++完全不同.

      • 'public class Example{}'为例
      • ` Example example ; //声明对象Example

        在C/C++中会直接申请一个内存空间来存放example实例,而在Java中,example申请的内存空间只存放一个指向真正存放example的空间的内存地址。也就是说Java声明的其实是一个”指针”,我们称之为引用(我感觉引用这个词比指针容易理解多了)。

      • Java声明的是引用!
      • Java声明的是引用!
      • Java声明的是引用!
      • 这个很重要,之后几条靠这个理解就很简单。
    • Java引用声明后如果没初始化(new 一下),则引用指向null(无引用,不分配存储空间)。而C/C++还是会分配内存。但C/C++也可如同Java一般,需用&符显式标明。

    • 对于Example example1=example;
      Java是将因引用(地址)example复制给example1,不是将对象实体复制到example1,而C/C++不同

    • 参考上一条,对于example1==example
      Java判断的是example1与example是否是同一引用。即是否是同一个对象(地址相同),而C/C++判断的是是否为相同的对象(内容相同)。Java想判断内容相同需要函数equals();

    • C/C++用指针在方法间传递参数,从而避免拷贝对象,而Java直接传递引用就可以。

    • Java会自动删除并释放无效引用,不用手动操作内存。具体的会在其它博客说明。

相关文章

    暂无相关文章
相关栏目:

用户点评