java值传递

本文通过示例详细讲解了Java中的值传递概念,包括基本类型和引用类型的值传递区别。在函数调用中,值传递会复制实际参数到函数内部,对参数的修改不会影响到原始变量。示例中展示了不同类型的交换方法及其效果,强调了Java中所有传递都是值传递。
摘要由CSDN通过智能技术生成

什么是值传递

值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

示例引入

猜一猜下列程序运行的输出是什么?

import com.company.desgine.SingleInstance;
import com.company.forTest.Student;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        SingleInstance instance = SingleInstance.getInstance();
        Student a = new Student();
        Student b = new Student();
        a.setName("zhangsan");
        b.setName("lisi");
        System.out.println(a);
        System.out.println(b);
        swap1(a,b);
        System.out.println(a);
        System.out.println(b);
        swap(a,b);
        System.out.println(a);
        System.out.println(b);
        int c =10;
        int d=20;
        Integer e =10;
        Integer f=20;
        swap(c,d);
        System.out.println(c);
        System.out.println(d);
        swap(e,f);
        System.out.println(e);
        System.out.println(f);
    }

    private static void swap1(Student e, Student f) {
        String name = e.getName();
        e.setName(f.getName());
        f.setName(name);
    }

    private static void swap(Student e, Student f) {
        Student a= e;
        e=f;
        f=a;
    }

    private static void swap(int a, int b) {
        int c =a;
        a=b;
        b=c;
    }
    private static void swap(Integer a, Integer b) {
        Integer c =a;
        a=b;
        b=c;
    }
}

结果如下:
在这里插入图片描述
第一次输出:
在这里插入图片描述
第二次输出
传入方法参数,新引入栈针,调用get、set方法完成后a’和b’ 、name出栈,可交换。
在这里插入图片描述
第三次输出
e,f 出栈后不影响原内容指向
在这里插入图片描述
第四、五次输出
基本类型,直接在栈里分配
swap的操作都是对红框内容的操作,不影响原有值,
在这里插入图片描述

总结

java中全部都是值传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值