个人理解只有一句话,在参数传递的过程中,基本类型变量是值传递,引用型变量时地址传递(类似于c++中的指针,不过java中没有指针这个说法)
下面具体说下,声明变量,定义变量是的内存分配问题
在java中基本类型变量声明是,系统直接为该变量分配内存空间(c++中不是这样,c++中只用在定义的时候才会分配内存空间,声明的时候不会分配),因此内存中可以直接操作。
引用型变量声明时,只为该变量分配引用空间,数据空间尚未分配,因此引用类型不可直接使用
如:
mydate today;
mydate.today=14;
上面这句话明显是错误的。
正确的是:
mydate today;
today=new mydate()
其实,第一条语句的执行将给today变量分配一个保存引用的空间 today null
第二句话将分两步进行,第一步执行new mydate(),给today变量开辟数据空间,第二部为today中的成员变量赋值,默认初始化为0。
引用变量间的赋值,就行当于指针间的赋值,改变一个对另外一个有影响(传址)。 |