2021-9-7 参数的传递

参数的传递

一,参数的传递
1,引用与创建对象
(1)**对象:**对象是通过使用new关键字在堆内存中开辟出一块内存空间。
(2)引用:引用里面保存了内存地址,指向了堆内存中的对象。访问实例相关的数据,必须要通过引用的方式访问,引用需要找到对象。
如果出现了空引用,也就是引用没有找到对象,那么访问对象实例的相关数据会发生异常。在C语言中被称为
空指针异常

例1:

public static void main (String []args) {
		int i=10;
		newWay(i);//该方法调用时,给这个方法传递了一个变量i
	System.out.println(i);//输出为10
	}//此处i变量为局部变量,它本身占有内存,而其中保存的是10这个字面值。
public static void newWay(int i) {
			i++;
    System.out.println(i);//输出为11
	}/*i保存的为10,但在方法调用时,这个10通过构造的方法变成了11并输出,但原先的10仍保存在内存之中,i就像是复制了一份置入了newWay方法区,所以会出现输出分别为11和10的现象。/*

根据以上所述,Java中方法调用时如果出现了参数的传递,那么它(参数)传递的实际上是自己内部中保存的具体值。就如同上述:int i=10;newWay(i)=newWay(10)

例2:

public class person {
	          int age;//成员变量age
	public static void main (String []args) {
       person p=new person();//创建age对象
            p.age=10;//引用age
              add(p);//构造方法
      System.out.println(p.age);//11
	}
	 public static void add(person p) {
		        p.age++;//自增
		System.out.println(p.age);//11
	}
}//发现如果创建了对象,他们的数值均变为了11,不同于例1的情况。

这是因为p本身有内存地址,它是通过new而创建出来的,p中的值是另一个Java对象在堆内存中的内存地址。不过传递的永远都是内存地址,传的、变得都是数值,这个值有时候也可能是java内存地址。
是否new了对象,对最终结果有影响,方法调用时用到了参数的传递,Java中的一个机制,就是把变量中的值传递过去了,而不是复制,所以他们的内存地址或者数值都发生了改变。(记住就好)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值