参数传递
由于要说到参数传递,首先要区分属性和参数(针对参数名和属性名相同的情况),能起到区分作用的是关键字this。
This 关键字
用途:
区分参数和属性,加this的是属性,注意输出时是要输出哪一个,有时候输出的是属性,有时候输出的是参数;
在类中调用构造方法、普通方法和属性。
表示:当前调用方法的对象
值传递:适用于九种数据类型 byte,short,int,long,float,double,char,boolean,String
值传递的传递方式:传递内容的副本
引用传递
何引用:在程序执行到某一部分是可能会用到另外地方的值,这时候需要把这个值给拿过来用,但不是把这个值给换到要用的地方,这个过程称为引用
引用传递 (地址传递),c和C++里为指针传递,引用的时候用对象名表示,比如一个学生对象,名叫“张三”,当使用“张三”这个名字时,引用的就是这个学生对象,但这个学生对象实体和“张三”这个名字不是同一个东西,此时称“张三”这个名字引用了这个对象;
适用类型:对象类型(类类型、引用类型)和数组
对象名里编存储的是对象在内存中的首地址
字符赋值和构造函数初始化有不同
例如 st1=“abc”,在内存里面是先给st1开辟一个存储空间,然后将abc这个字符串放在存储空间里面
如 Studdent st1=new Student(“abc”);则是在池中(堆)开辟一个存储空间,把abc这个值放在里面,记录下这个地址,然后把这个地址指向st1,当调用st1时,就相当于是访问地址,根据这个地址把视线转到堆中,找到堆中存储的东西。
注意:如果是值传递方式,则传递后,两个参数间不再相互影响;如是
引用传递的方式,由于传递的是存储地址,两个参数存的是同一个地址,表示同一个位置,就相当于一个人有两个名字一样,如果改变地址,则两个参数都会改变。
由于要说到参数传递,首先要区分属性和参数(针对参数名和属性名相同的情况),能起到区分作用的是关键字this。
This 关键字
用途:
区分参数和属性,加this的是属性,注意输出时是要输出哪一个,有时候输出的是属性,有时候输出的是参数;
在类中调用构造方法、普通方法和属性。
表示:当前调用方法的对象
值传递:适用于九种数据类型 byte,short,int,long,float,double,char,boolean,String
值传递的传递方式:传递内容的副本
引用传递
何引用:在程序执行到某一部分是可能会用到另外地方的值,这时候需要把这个值给拿过来用,但不是把这个值给换到要用的地方,这个过程称为引用
引用传递 (地址传递),c和C++里为指针传递,引用的时候用对象名表示,比如一个学生对象,名叫“张三”,当使用“张三”这个名字时,引用的就是这个学生对象,但这个学生对象实体和“张三”这个名字不是同一个东西,此时称“张三”这个名字引用了这个对象;
适用类型:对象类型(类类型、引用类型)和数组
对象名里编存储的是对象在内存中的首地址
字符赋值和构造函数初始化有不同
例如 st1=“abc”,在内存里面是先给st1开辟一个存储空间,然后将abc这个字符串放在存储空间里面
如 Studdent st1=new Student(“abc”);则是在池中(堆)开辟一个存储空间,把abc这个值放在里面,记录下这个地址,然后把这个地址指向st1,当调用st1时,就相当于是访问地址,根据这个地址把视线转到堆中,找到堆中存储的东西。
注意:如果是值传递方式,则传递后,两个参数间不再相互影响;如是
引用传递的方式,由于传递的是存储地址,两个参数存的是同一个地址,表示同一个位置,就相当于一个人有两个名字一样,如果改变地址,则两个参数都会改变。