java基础之对象与引用
来源:互联网 发布:韩国genie软件最新版 编辑:程序博客网 时间:2024/06/09 15:56
我们都知道,java是一门面向对象的语言,了解C++的人呢,对指针肯定也是听了很多次,那么,java语言中有没有指针呢?java对象和指针有什么关系呢?
首先,准确地讲,java中也是有“指针”的,只是被换了一个称呼,叫做“引用”。那么,除了称呼不同以外,java中的引用与C++的指针有什么区别呢?
java中对于引用的管理是比较严格的,我们不能随意进行操作;而在C++中,我们可以在代码里对指针进行随意操作(当然了,我们不是说要搞破坏)。java中,我们只能借助于引用来访问它所指向的对象,或者将一个引用所指向的对象赋值给另一个引用;如此一来,java对象就被很好地保护了起来,非常安全。
class Test {private int a;protected void test(){system.out.println("hello");}}//<span style="font-family: KaiTi_GB2312; font-size: 18px;">这里,我们定了一个非常简单的类Test,在不使用这个类的时候,它是不消耗内存的。</span>Test t1;//声明了一个变量,或者说定义了一个引用,此时它不指向任何一个对象,变量也是存储在内存中的。t1 = new Test();//在内存中创建了一个Test类型的对象,将其在内存中的首地址放入变量t1中。Test t2 = new Test();t1 = t2;//赋值操作,将引用t2所存放的第二个对象的首地址也存放到引用t1中。
声明的变量/引用和创建的对象都是存放在内存中的;一般变量/引用占据的空间比较小,而对象则需要占据内存中一段连续的存储空间,所占据的空间大小与类的复杂程度有关。
赋值操作没有改变对象,是针对变量/引用的操作,会改变相关变量/引用所指向的对象。
那么,java对象与引用又有什么关系呢?
显然,从上例可以看出,一个对象可以被零个、一个或多个变量所引用。对象被零个变量引用,即不被引用时,就是我们说的垃圾对象。
另一方面,一个变量可以引用多少个对象呢?答案是:零个或者一个。
为什么不能是多个呢?我们可以这么理解:变量在内存中占用的空间是固定的,这个空间只能存放一个地址值,而不能存放多个。一个不恰当的比喻:一个圆珠笔筒中最多只能容纳一个笔芯,而不能容纳多个。
当一个变量引用零个对象的时候,我们说这个变量是NULL,或者说它引用了一个空对象。此时你或许想到了最常见的一个异常之一 NullPointerException,是的,空指针异常,这也就说明了我们说的变量/引用,跟指针在实质上是一样的。
综上所述,java中也是有指针的,我们称其为变量/引用;一个对象可以被任意个变量引用,而一个变量却只引用0或1个对象。
- java基础之对象与引用
- java基础之引用与解引用
- java-引用与对象
- JAVA对象与引用。
- 【java】对象与引用
- Java对象与引用
- Java学习之对象与对象引用的区别
- java初学之对象引用与对象的区别
- java之对象引用与对象的区别
- JAVA基础——对象与引用概念(转载)
- Java基础之引用
- JAVA基础之引用
- Java 基础之引用
- Java 对象引用与对象
- java 对象与对象引用
- Java基础11 对象引用
- Java基础11 对象引用
- Java基础11 对象引用
- hadoop总结总结吧
- canvas
- 递归实现数字转换成字符串
- Android文件的读写
- IOS UIImage类方法总结
- java基础之对象与引用
- 码了5年代码,积累了些东西
- IMAGE_EXPORT_DIRECTORY
- HDoj-1709-The Balance-母函数
- 批处理禁止指定的IE的加载项
- 通信信号处理的一些基本常识
- 联合分布
- IOS UIView 之类方法篇 Class Methods
- java中的super关键字用法