Java基础系列(九):方法参数

本文探讨Java中方法参数的传递机制,强调即使是对象参数,也只能修改对象状态而非改变引用。基础数据类型参数不会被修改,而对象参数可以改变其状态但不改变引用。文中通过实例分析了对象的修改状态和交换操作,明确了方法不能让对象参数引用其他对象。
摘要由CSDN通过智能技术生成
前言

首先,我们要认识到一点Java中方法参数的传递都是按值调用的,方法得到的是所有参数值的一个拷贝,它并不能修改传递给它的参数变量的值。下面我们就来详细了解一下,为什么会这么说?

方法参数有两种类型:

  1. 基础数据类型(数字,布尔值)
  2. 对象

下面我们分别来分析这两种情况。

基础数据类型
/**
 * 方法参数为基础数据类型
 */
public class ParamTest1 {
   

    public static void main(String[] args) {
        int number = 10;
        changeValue(number);
        System.out.println(number);
    }

    public static void changeValue(int x) {
        x = x + 3;
    }
}

打印结果为10,并没有发生任何的改变,这是为什么呢?我们来看一下具体的执行流程:

  1. x被初始化为percent值的一个拷贝
  2. x + 3 后等于13,但是我们要注意,这里是x等于13,但是percent仍然等于10
  3. 方法结束之后,x不再使用,而percent的值并没有发生任何改变。

也就是说,一个方法不可能修改一个基本数据类型的参数。

对象

对象引用作为参数的话,是可以修改参数的状态的,但是修改的是这个对象引用的地址值所对应的对象的状态,而不是修改了对象的地址值,也就是说实际上方法参数是对象的话,虽然可以修改参数的状态,但是并没有修改参数的值。
当然,对象引用中又分为两种情况:

修改对象状态
/**
 * 方法参数为对象时,修改该对象的状态
 */
public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值