代码部分

主函数
【java】形参改变与实参的关系
change函数
【java】形参改变与实参的关系
运行结果
【java】形参改变与实参的关系
结论
变量传递到函数中时是形参,是不是数组都有参数。对于非数组变量,引用类型形参和实参的地址不一样但是他们指向的地址是一样的,但是形参改变时会指向另一个地方而实参指向的地方值不会变比如下图
假如有s=”hel”;现在有函数改变他为s=”pic”
实际变化如下图
基本数据变量,地址又不一样,形参改变完全不影响实参
但是对于数组变量,形参和实参实际地址依然不一样但是指向的地址相同,且修改时修改的是对应地址的值。所以实参对应的值会改变(例如String,形参改变时创建一个新的常量并指向它,所以实参才不会改变)

【java】形参改变与实参的关系
Q/A
Q:我创建一个类时也有变量,也有改变变量的函数。会不会出现这种情况。
A:会的,如果你把你想改变的变量作为形参输入就会有这种问题。但是谁这么写啊?类中赋值一般都是下面那样(需要改变的量不作为参数传入),如果被迫需要作为形参输入的话一般有反回值返回。注意下面这种赋值和上面那种赋值的区别,上面需要改变的变量作为形参相当于新开辟了一个String对象,改变新的对象不影响实参。下面这种是直接改变实参。

public void change(String str)
	{
		this.str = str;
	}
	
public void change()
	{
		this.str = "changed";
	}

Tips:
基本类型:直接保存在Stack中
引用类型:例如String,实际内容在Heap中,但是Stack中的值指向了Heap的地址。顺便说一下常量池是Heap的一部分。

相关文章:

  • 2022-12-23
  • 2021-11-30
  • 2021-10-15
  • 2021-09-20
  • 2021-11-30
猜你喜欢
  • 2021-08-24
  • 2022-02-07
  • 2021-11-12
  • 2021-04-22
  • 2022-12-23
  • 2021-06-17
相关资源
相似解决方案