public
class
Example{
String str=
new
String(
"good"
);
char
[]ch={
'a'
,
'b'
,
'c'
};
public
static
void
main(String args[]){
Example ex=
new
Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+
" and "
);
System.out.print(ex.ch);
}
public
void
change(String str,
char
ch[]){
//引用类型变量,传递的是地址,属于引用传递。
str=
"test ok"
;
ch[
0
]=
'g'
;
}
}
输出:
good and gbc
1、
java语言参数之间只有值传递,包括按值调用和按引用调用。
一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。
按值调用:包括八大基本数据类型都是按值调用。传值的时候,也就是说方法得到的是所有参数值的一个
拷贝。
按引用调用:数组、对象。传值时候,传递的是引用地址的拷贝,但是都是指向同一个对象。
2、
String是不可变类(final and Immutable),这里只是把副本的指向修改成指向“test ok”,原地址str的指向的值没有发生改变
由于String不可变,故当执行change方法时候,str的地址会指向“test ok”,但是当执行完以后,依旧会输出原来地址指向的“good”,而char类型是可变的