个人关于java与指针的理解
来源:互联网 发布:淘宝卖家被处罚要几天 编辑:程序博客网 时间:2024/05/21 17:41
尽管java中没有显示的使用指针并且也不允许程序员使用指针,而实际上对象的访问就是指针的实现。一个对象会从实际的存储空间的某个位置开始占据一定数量的存储体。该对象的指针就是保存了该对象的存储地址的变量,并且这个存储地址就是对象在改空间开始的位置。在需要编程语言中指针是一种数据类型 在java中指针实际上就是对象的引用。
我们来举个例子说下吧:
People p=null;People q=new People("name","age");
这里创建了2个对于对象的引用的变量p,q (他们被放置在栈内存之中)。变量p被初始化为null(初始化的数据是被放置在堆内存之中) 其实null就是一个空指针,每个对象的引用都可以初始化为null 他表示次对象不指向任何地方,也就是他不指向任何类的对象。
变量q是一个对于people类的实例的引用 操作符new的意思是 告诉计算机申请足够的内存的 ,而引用q就是这个内存地址的指针。
为此请读者考虑如下代码的运行结果:
People p1 = new People("钱志鹏","23");People p2 = p1;p2.setName("qzp");System.out.println(p1.getName());
估计很多人跟我考虑的结果一样 p1.getName="钱志鹏" 但是结果并不是这样的 因为当你执行people p2=p1的时候 也就是说 原来p1跟p2都是对象的引用 当你执行完赋值之后
他们2个都指向了同一个内存地址 因此对于p2的修改 同样也会影响到p1的
请读者继续考虑以下代码的运行结果:
People p1 = new People("David","0004");People p2 = new People("David","0004");System.out.println(p1= = p2);
这虽然p1跟p2的值都相同 但是由于他们指向不同的存储空间 因此输出为false。
可见如果我们希望通过完成对象的拷贝 使用一个简单的赋值语句是无法完成的。要达到这个目的可以通过事项cloneable借口并重写clone方法来完成。如果我们希望判断两个对象的引用是否一致 可以通过equie方法来进行判断
0 0
- 个人关于java与指针的理解
- 个人关于指针的理解
- 关于c语言二维数组与指针的个人理解及处理办法。
- 关于C的指针,Java/Python的引用,形参与实参个人理解
- 常量指针与指针常量的一些个人理解
- 关于Java nofity wait的个人理解
- 关于java反射的个人理解
- 关于指针的引用与指针的指针的理解
- 指针与引用的个人理解----C++初学之路
- 关于数组与指针的理解
- 关于指针的思考与理解
- 关于对象指针与对象的理解
- c++指针的个人理解
- C++指针的个人理解
- 关于函数指针的个人理解,uboot中二重函数指针的实例分析
- 关于指针的个人见解
- 关于指针的理解
- 关于信息熵与期望的关系的个人理解
- WindowManager.LayoutParams详解
- 安卓的系统架构和项目结构分析
- 面试题积累(六)
- aidl
- 虚拟网卡影响网速变慢问题
- 个人关于java与指针的理解
- getParameter 与 getAttribute的区别
- Yii2 在view里加css
- K2工作流学习系列(三)--- K2介绍
- 分页查询的那些坑和各种技巧
- 数据结构学习——单链表ADT(程序化)
- 求三个长方体的体积
- Launch into space
- 【javascript笔记】关于javascript中的闭包<五>