1、按照引用传递
2、例子
输出结果:
11
1964、7、22
1964、7、4
输出结果解释:
刚开始日期没有改变是因为创建了新的对象,所以是在新的对象上做出了改变,后来日期改了是因为没有创建新的对象,所以只能在原来的对象上进行改动。
所以,数据是否改变的原因也是与对象的创建与否有关。
3、例子
str="18th"
change(s);
public int change(String s)
{
s="19th";
}
最终str的值是“18th”
可能是在s在赋值为19th的时候,s从指向18th的地方突然指向19th不懂,这是因为,19th实际上是一个新对象,有了一个新对象之后,s就指向了新对象了,所以str是不会改变的。
注意:
(1)数据的变化也与对象有几个有关,没创建对象的话,只能在原来的基础上进行改变,但是创建了对象之后,会指向新的对象,在新的对象的基础上进行改变。
(2)String类存的地方不是堆区,而是数据区。
(3)这样的调用方式是正确的,因为,java中不是必须先声明后使用,与C语言和c++中不一样,只要有这个函数就可以。
4、例题
public static void changeInt(Data t1,Data t2)
{
t1.setT(2);
Data t=t1;
t1=t2;
t2=t;
}
public static void main(String[] args)
{
Data arg1=new Data(1);
Data arg2=new Data(1);
System.out.println(arg1.getT());
System.out.println(arg2.getT());
}
之后是t1和t2交换,运行完changeInt函数之后,t1,t2,t出栈,只剩arg1和arg2。