java中的引用是指针吗,JAVA中的指针,引用及对象的clone

本文探讨了Java中对象与引用的区别,指出虽然Java没有显式的指针,但对象的传递实际涉及引用传递。通过示例代码展示了改变对象属性与基本类型变量的不同效果,引出了对象复制问题,特别是clone方法的应用。文章详细阐述了影子clone与深度clone的差异,强调了在Java开发中正确理解和使用对象复制的重要性。
摘要由CSDN通过智能技术生成

Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引

用的区别,本文会试图澄清这一概念。并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对

象。本文会让你了解什么是影子clone与深度clone,认识它们的区别、优点及缺点。

看到这个标题,是不是有点困惑:Java语言明确说明取消了指针,因为指针往往是在带来方便的同时也是导致代码不安全的根源,同时也会使程序的变得非常复

杂难以理解,滥用指针写成的代码不亚于使用早已臭名昭著的"GOTO"语句。Java放弃指针的概念绝对是极其明智的。但这只是在Java语言中没有明确

的指针定义,实质上每一个new语句返回的都是一个指针的引用,只不过在大多时候Java中不用关心如何操作这个"指针",更不用象在操作C++的指针那

样胆战心惊。唯一要多多关心的是在给函数传递对象的时候。如下例程:

package reference;

class Obj{

String str = "init value";

public String toString(){

return str;

}

}

public class ObjRef{

Obj aObj = new Obj();

int aInt = 11;

public void changeObj(Obj inObj){

inObj.str = "changed value";

}

public void changePri(int inInt){

inInt = 22;

}

public static void main(String[] args)

{

ObjRef oRef = new ObjRef();

System.out.println("Before call changeObj() method: " + oRef.aObj);

oRef.changeObj(oRef.aObj);

System.out.println("After call changeObj() method: " + oRef.aObj);

System.out.println("==================Print Primtive=================");

System.out.println("Before call changePri() method: " + oRef.aInt);

oRef.changePri(oRef.aInt);

System.out.println("After call changePri() method: " + oRef.aInt);

}

}

/* RUN RESULT

Before call changeObj() method: init value

After call changeObj() method: changed value

==================Print Primtive=================

Before call changePri() method: 11

After call changePri() method: 11

*

*/

这段代码的主要部分调用了两个很相近的方法,changeObj()和changePri()。唯一不同的是它们一个把�

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值