您的位置:首页 > 编程语言 > Java开发

JAVA基础 引用类型变量和基本类型变量

2016-08-16 22:32 260 查看
一     基本类型的变量名是变量本身。   包括八种基本数据类型

引用类型变量的名字是复杂数据的存储地点。包括类   数组(字符串)   接口

String s="Hello world!";

许多人都写过这样的语句,但是,我们到底声明了什么呢?一休,你回答一下。

一休:声明了一个String对象,内容是"Hello world!"。

愚公:这样的回答还是比较模糊,准确的回答是这个语句创建了一个字符串对象,另外它声明了一个指向对象的引用,名为s。它可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。

一休:也就是说,我们声明了一个只能指向String对象的引用变量s,并且将s指向了字符串对象"Hello world!"。

愚公:是的,如果在刚才的语句后面再补充一句代码:

String string=s;

是不是又声明了一个新的对象呢?

一休:是的,声明了一个新的对象string。

愚公:不对,我们是声明了另外一个指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来的对象,也就是和s指向同一个对象。String类要弄清楚,因为这个类弄清楚了,许多类就好理解了。

一休:String类这么重要吗?

愚公:是的,因为这个类使用的频率很高,包含许多定制好的属性和方法,我们可以直接使用,而且这个类是final类,我们不能继承它,也不能继承和利用多态性修改它的方法。

一休:那我今后一定好好研究它

二  Java中数据类型分为两大类:基本数据类型与复合数据类型。相应地,变量也有两种类型:基本类型与引用类型。Java的8中基本类型的变量称为基本类型变量,而类、接口和数组变量时引用类型变量。这两种类型变量的结构和含义不同,系统对他们的处理也不相同。

1.基本类型与引用类型变量
*基本类型(primitive type)
基本数据类型的变量包含了单个值,这个值的长度和格式符合变量所属数据类型的要求,可以是一个数字、一个字符或一个布尔值,例如一个整型值是32位的二进制补码格式的数据,而一个字符型的值是16位的Unicode字符格式的数据等。
*引用类型(reference type)
引用型变量的值与基本类型变量不同,变量值是指向内存空间的引用(地址)。所指向的内存中保存着变量所表示的一个值或一组值。
引用在其他语言中称为指针或内存地址。Java语言与其他程序设计语言不同,不支持显示使用内存地址,而必须通过变量名对某个内存地址进行访问。
2.两种变量的不同处理
在Java语言中基本类型变量声明时,系统直接给该变量分配空间,因此程序中可以直接操作。例如,
int a; //声明变量a的同时,系统给a分配了空间
a=12;
引用类型(或称为引用型)变量声明时,只是给该变量分配引用空间,数据空间未分配。因此引用型变量声明后不能直接引用,下列第二条语句是错误的:
MyDate today;
today.day = 14; //错误!因为today对象的数据空间未分配
......
引用类型变量在声明后必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问。通过对引用型变量声明与实例化语句的执行过程分析,可以理解系统对引用型变量的上述处理。例如有如下语句:
MyDate today; 
today = new Date();    //等于MyDate today = new Date ();
第一条语句的执行,将给today变量分配一个保存引用的空间,第二条语句分两个步骤执行,首先执行new Date(),给today变量开辟数据空间,然后再执行第二条语句中的赋值操作,
3.引用变量的赋值
Java中引用型变量之间的赋值是引用赋值。例如,下列语句执行后,内存的布局如图3-5所示。
MyDate a,b; //在内存中开辟两个引用空间
a = new MyDate(); //开辟MyDate对象的数据空间,并把该空间的首地址赋给a
b = a; //将a存储空间中的地址写到b的存储空间中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: