java的基本数据类型与引用

来源:互联网 发布:telnet23端口连接失败 编辑:程序博客网 时间:2024/05/05 17:52

Java定义了8个简单的数据类型其余均为引用数据类型:

1、简单数据类型:

1、字节型(byte),2、短整型(short),3、整型(int),4、长整型(long),5、字符型(char),6、浮点型(float),7、双精度型(double),8、布尔型(boolean).

2、引用数据类型:

例如 :String

变量的初始化以及所占空间:

java中成员变量而局部变量没有默认值故必须人为初始化,为其赋初值如果没有初始化则系统会给其一默认值。各数据类型的默认值以及所占空间大小如下表:

数据类型在内存中的分配

(其中堆栈stack与堆(或内存堆 heap)可参考Java变量以及内存分配》或访问:http://www.cnblogs.com/zhxhdean/archive/2011/03/26/1996468.html

由上已知在Java中的引用类型,是指除了基本的变量类型之外的所有类型。而无论是基本数据类型还是引用类型,所有的类型都会在内存中被分配一定的存储空间,(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失),

1、基本的变量类型只有一块存储空间(分配在堆栈stack 中);

2、而引用类型有两块存储空间(一块在堆栈stack 中,一块在堆(或内存堆 heap) 中):

(heap)内存用来存放由 new创建的对象和数组。 由Java虚拟机的自动垃圾回收器来管理。

堆(heap)中产生了一个数组或对象后,还会在栈(堆栈stack )中定义一个特殊的变量(即引用),让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。(也可以理解为对象的引用变量就表示堆栈stack 中一段内存且该内存中存储的是对象在堆(或内存堆 heap) 内存中地址)。

方法形参的值传递(引用)是指形参和传进来的参数指向同一个值的内存(heap)中;(注意理解这句话!)

什么是引用?

简单的说,引用其实就像是一个对象的名字或者别名 (alias),一个对象在堆(heap)内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在堆(heap)内存中的数据,而是通过引用去访问。引用也是一种数据类型,引用与基本数据类型一样也存储在堆栈stack中我们可以把它想象为类似 C 语言中指针的东西,它指示了对象在堆(heap)内存中的地址——只不过我们不能够观察到这个地址究竟是什么。


如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的堆栈stack内存空间来保存。但是它们的值是相同的,都指示同一个对象在堆(heap)内存的中位置。

0 0
原创粉丝点击