震惊!某专家道出Java中的值传递与引用传递居然......

it2023-09-13  77

值传递与引用传递实质就是方法操作在内存中是自己单开了一个空间自己玩自己的,还是在对象的空间中陪对象一起玩这样一个问题,废话不多说,直接上代码,具体的内容均在注释中.

public class Test { //定义一个Test类 int i ; //成员变量i void change(int i){ //无返回值方法change,形式参数i,会用形式参数的值来初始化自己得存储单元格,和实参是两个不同的存储单元,方法执行中形参值改变不影响实际参数值 i++; //方法内执行 System.out.println(i);//方法内输出,1 } void change1(Test t){ //无返回值方法change1,形式参数是引用数据类型,实参会把对象引用(即地址)传递过来,故在此方法中的所有操作实质上都是在对象上进行的,方法执行中形参值改变实参也会改变. t.i++; System.out.println(t.i); } public static void main(String[] args) {//main方法 Test ta = new Test();//创建一个对象Test(),并用ta指向Test的对象引用 System.out.println(ta.i); //输出了成员变量i,默认值为0 ta.change(ta.i);//调用change方法,传入值0,实质上只是把change中的形参值进行了初始化,对自身并无影响 System.out.println(ta.i); //输出的值仍是0 ta.change1(ta); //将对象Test直接传入change1中,形参中的操作是在对对象操作,会被保存下来,改变实参 System.out.println(ta.i);//输出为1 } }
最新回复(0)