java引用与指针的区别_java对象引用与指针对比,详细解析

java的知识点繁多且复杂,浩瀚如烟海,使得在其中的学者往往需要花费大量的时间与精力才能有所收获。今天就来为大家介绍一下,java对象引用与指针的对比,并且通过详细的代码为大家解析。

我们都知道,在java中没有显式的使用指针同时也不支持程序员使用指针。但是事实上java对象的访问就是使用指针来实现的。一般而言,一个对象会从实际的存储空间的某个位置开始占据一定适量的存储体。这个对象的指针就是一个保存了对象存储地址的变量,并且这个地址就是对象在存储空间中的起始地址。在许多高级语言中指针是一种数据类型,而在java中是使用对象的引用来代替的。事实上,每一个new的语句返回都是一个指针的引用,只不过在大多数时候java并没有表现出来这一点。

假如People类已经定义,我们可以使用下面的代码:People p1 = new People("Csyor");

People p2 = p1;

p2.setName("abc");

System.out.println(p1.getName());

上面这段代码中People类的对象引用p2的name的成员变量进行了重新设置,但是我们会发现对象p1的name输出已经变更成为了“abc”,这是因为p1与p2均是对对象的引用,在p2=p1之后,两个变量就指向了同一个引用的存储空间,所以,p2的修改会影响到p1,因此,输出的p1的name是“abc”。

再看一下另外一段代码,如下所示:People p1 = new People("Csyor");

People p2 = new People("Csyor");

System.out.println(p1 == p2);

从上面可以看出来,虽然p1和p2的成员变量name值相同,但是new了两次,因此p1和p2就指向了不同的存储空间的引用,所以,最后输出的结果会是“false”。

由此可见,如果我们需要copy对象,简单的赋值是没有办法做到的。要达到这一目的可以通过实现Cloneable接口并重写clone方法来实现。假如我们需要判断两个对象的引用是否一致时就必须重写继承自Object的equale方法。

总而言之,指针是可以与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。但java对象引用不行,只能进行赋值运算。

以上就是关于java对象引用与指针对比的详细解析内容。如果你对java知识感兴趣,想要了解更多java基础,敬请关注奇Q工具网。

推荐阅读:

### 回答1: JAVA引用指针区别在于,JAVA引用是一个对象的句柄,它指向一个对象的地址,而指针是一个变量,它存储一个地址,可以指向任何类型的数据。JAVA引用是类型安全的,可以避免指针的一些问题,如空指针引用和野指针等。此外,JAVA引用还可以进行自动垃圾回收,避免内存泄漏的问题。 ### 回答2: Java中的引用指针虽然在表面上看起来相似,但实际上有着本质上的区别。 首先,Java中的引用是由虚拟机自动管理的,无需手动分配和释放内存。而指针则需要程序员手动管理内存,包括分配和释放。这是由于Java中使用了垃圾回收机制,通过追踪对象引用关系来决定内存的分配和释放,使得程序员可以更加专注于业务逻辑的编写。 其次,Java引用提供了更高层次的抽象,隐藏了底层的内存细节。这意味着Java程序员只需关注对象本身而不需要关心内存的具体分配与释放。而指针则需要程序员自行处理内存的细节,容易出现内存泄漏和悬挂指针等问题。 另外,Java中的引用可以为空,即可以指向null值,代表没有指向任何对象。而指针则必须指向有效的内存地址,不允许为空。 最后,Java中的引用具有动态类型的特性,可以在运行时改变指向的对象类型,使得程序更加灵活。而指针则是静态类型,一旦指向一个对象类型,就不能改变。 综上所述,Java中的引用指针在内存管理、抽象程度、空值处理和类型特性等方面存在着明显的区别。这些区别使得Java成为一种更加安全和易用的编程语言,相较于使用指针的语言更容易开发和维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值