在java中有一种被称为类类型的变量,它不同于基本类型变量存储值的方式。不管是基本变量还是类类型变量,都实现为一个内存位置。但是,由于基本变量所需的内存数量是相同的,所以系统可以给它设置一个固定的空间保持命名对象的变量。类类型变量则不同,由于它的长度不确定,从而使得系统难以给其分配一个固定的空间来保存命名对象的变量。因此,对于类类型变量,它存储的是对象的内存地址,而不是对象本身。下面举个例子加以证明:

/**
 * Comments:类类型之间赋值的特点实例
 * @author 塞上名猪
 * Create Time:2013-09-12
 *
 */
public class StringTest {
    private String str;
    public String getStr() {
        return str;
    }
    public void setStr(String str) {
        this.str = str;
    }
    public static void main(String[] args) {
        StringTest str1=new StringTest();
        StringTest str2=new StringTest();
        str1.setStr("111111");
        str2.setStr("222222");
        //类类型之间的赋值,是将str1的内存地址赋值给了str2,赋值后它俩指向了同一内存地址
        str2=str1;
        str2.setStr("333333");
        System.out.println(str1.getStr());      //输出结果为333333
        System.out.println(str2.getStr());      //输出结果为333333
    }
}

从输出的结果可以看出,类类型变量并不是简单的将赋的值存储于命名对象中,而是将地址存放于类类型变量中。所以类类型变量之间的赋值语句赋值的是内存地址,赋值后两个变量指向同一地址。


相关博文:java类类型参数:http://zuohao1990.blog.51cto.com/6057850/1297313

        java类类型的存储特点:http://zuohao1990.blog.51cto.com/6057850/1304854