java方法的参数传递

Java 程序设计语言对对象采用的不是引用调用,实际上, 对象引用是按
值传递的。
下面总结一下 Java 中方法参数的使用情况:
•一个方法不能修改一个基本数据类型的参数
一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
一个方法可以改变一个对象参数的状态。
一个方法不能让对象参数引用一个新的对象。

package com.wise;

/**
 * @author zj
 * @date 2020/11/30 16:05
 */
public class EmployeeTest {
    public static void main(String[] args) {
        //一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。这里是值传递
        int c = 10;
        int d = 11;
        System.out.println("(int)成员变量c:"+c + "------" +"成员变量d:"+ d);
        swapNum(c, d);
        System.out.println("执行交换数字方法后::成员变量c:"+c + "------" +"成员变量d:"+ d);
        //java方法的对象传参,不是对象调用,而是对象拷贝的引用,也是值传递,不过的地址值的传递
        Employee a = new Employee();
        a.setA(1);
        Employee b = new Employee();
        b.setA(2);
        System.out.println("(Employee)成员变量a:"+a + "------成员变量b:"+ b);
        swapObj(a, b);
        System.out.println("执行交换地址方法后::(Employee)成员变量a:"+a + "------" +"成员变量b:"+ b);
        //java方法的对象传参,不是对象调用,而是对象拷贝的引用,也是值传递,不过的地址值的传递,所以地址值不会变,但会修改对象状态
        change(a,b);
        System.out.println("执行change方法:再次交换地址并设置属性值:a:"+a.getA()+ "------b:"+b.getA());
    }

    public static void swapObj(Employee a, Employee b) {
        Employee temp = null;
        temp = a;
        a = b;
        b = temp;
        System.out.println("方法内(Employee)局部变量a:" + a + "------局部变量b:"+ b);
    }

    public static void swapNum(int c, int d) {
        int temp = 0;
        temp = c;
        c = d;
        d = temp;
        System.out.println("方法内(int)局部变量c:" + c + "------局部变量d:"+ d);
    }
    public static void change(Employee a, Employee b) {
        //各个变量指代的内存地址交换
        Employee temp = null;
        temp = a;
        a = b;
        b = temp;
        System.out.println("方法内地址交换成功:a的地址值变更为:" + a +"---a的属性参数数值为:"+a.getA()+ "------b的地址值为:" + b+"---b的属性参数数值为:"+b.getA());
        a.setA(11);
        b.setA(22);
        System.out.println("方法内地址交换成功:a的地址值变更为:" + a +"---a的属性参数数值为:"+a.getA()+ "------b的地址值为:" + b+"---b的属性参数数值为:"+b.getA());

    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值