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

一休:愚公,我又有困惑了。

愚公:说说看。

一休:我知道Java有8种基本类型,又发现对应有8个包装类(Warper),它们起到的作用是相同的,都表示一种类型的数。于是我就随手编了一句:

int i=Ineger(8);

结果编译出错了。

愚公:编程不能想当然。Java的面向对象的原则是数据和数据之上的操作要绑定在一起,这就是类,即引用数据类型。因此,类也是一种类型。Java本来可以不设置基本类型,只是为了提高操作效率,才设置了基本类型。基本类型和引用类型的最主要区别是:

基本类型的变量名是变量本身。

引用类型变量的名字是复杂数据的存储地点。

这两种类型的对应存储方式如图6所示。

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

一休:这个问题我明白一点的,例如基本类型表示简单数据,引用类型表示复杂数据。

愚公:那你举个例子看看。

一休:比如说,多少钱、多长、多高等这些简单的数据就可以用基本类型表示。较复杂的事物,就用引用类型表示,如汽车、动物等,这些事物包含很多特性和行为,也就是属性和操作。

愚公:可以这样理解。关于对象,有很多概念需要理解清楚。例如,下面的声明:

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类,我们不能继承它,也不能继承和利用多态性修改它的方法。
一休:那我今后一定好好研究它!