理论教育 Java引用数据类型

Java引用数据类型

时间:2023-11-25 理论教育 版权反馈
【摘要】:在上面的小节中已经对原始数据类型进行了讲解,接下来再来理解引用数据类型。例如:3.为引用类型赋值在Java 编程语言中,一个被声明为类的变量,叫作引用类型变量,这是因为它正在引用一个非原始数据类型,这对赋值具有重要的意义。

Java引用数据类型

Java 有3 种引用数据类型:数组、类和接口。在上面的小节中已经对原始数据类型(也称为主数据类型)进行了讲解,接下来再来理解引用数据类型。

1.创建一个类对象

为克服Java 中数据类型的不完整性,Java 编程语言使用类来创建新类型,如例2.2 所示。(这里只做了解,在后面的章节中会具体讲解类的创建)

例2.2:用Person 类抽象出一个人类。

p1 是引用指向类Person 构造出的实际内存空间。P2 是引用类型,并不实际存储这些数据。

2.创建一个类对象

当任何原始数据类型(如boolean,byte,short,char,int,long,float 和double类型)的变量被声明时,内存空间同时被分配,此分配的空间属栈。

使用非原始数据类型(如class)变量的声明,不为对象同时分配内存空间。事实上,使用class 类型声明的变量不是数据本身,而是数据的引用(reference)。引用可以理解为C 语言的指针(Pointer),但是不能像C 语言那样计算指针。

在使用引用变量之前,必须为它分配实际的存储空间。这个是通过使用关键字new 来实现的。例如:

3.为引用类型赋值

在Java 编程语言中,一个被声明为类的变量,叫作引用类型变量,这是因为它正在引用一个非原始数据类型,这对赋值具有重要的意义。请看下面的代码:

上面有两个原始数据类型int 和两个引用类型String。x 的值是5,而这个值被赋值给y。x 和y 是两个独立的变量且其中任何一个变化都不会对另外一个变量造成影响。

至于变量s 和t,只有一个String 对象存在,它包含了文本“Hello,重庆!”,s和t 均引用这个单一的对象。(www.daowen.com)

将变量t 重新定义:t="World",则新的对象“World”被创建,而t 引用这个对象。

4.按值传递与按引用传递

Java 中的参数传递,可以分为按值传递和按引用传递。按值传递就是在方法内部改变参数的值并不会影响传递进来的外部对象。按引用传递与按值传递相反,它会影响传递进来的外部对象。

对原始数据类型是按值传递(pass by vaIue),存储在栈中;而对引用类型则是按引用传递(pass by ref),存储在堆中。

例2.3:测试按值传递。

以上程序运行结果如下:

这说明什么,原始数据类型是按值传递的,按值传递指的是进行赋值时的行为。

例2.4:测试按引用传递。

以上程序运行结果如下:

上面的例子说明:进行对象赋值操作时,传递的是对象的引用。

这里传对象其实也是传值,这个传值是指针之间的赋值,因为在Java 里没有指针,所以就将它称为引用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈