Java 值传递

Posted 走路带_风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 值传递相关的知识,希望对你有一定的参考价值。

public class Main 

    public static void main(String[] args) 
        String name = "muhuo";
        int age = 26;
        setName(name);
        setAge(age);
        System.out.println(name + " " + age);
    
    private static void setName(String name) 
        name = "other name";
    
    private static void setAge(int age) 
        age = 18;
    

输出为:muhuo 26

以上证实基本无论是基本数据类型或者引用数据类型都是值传递,调用setName、setAge的参数都是参数的拷贝不影响其原始值

 

public class Main 

    private String name;

    private int age;

    public static void main(String[] args) 
        Main main = new Main("muhuo", 20);
        System.out.println(main);
    

    private static void  mod(Main main) 
        main.name = "other name";
        main.age = 18;
    

    public Main(String name, int age) 
        this.name = name;
        this.age = age;
    

    @Override
    public String toString() 
        final StringBuffer sb = new StringBuffer("Main");
        sb.append("name='").append(name).append('\\'');
        sb.append(", age=").append(age);
        sb.append('');
        return sb.toString();
    

输出为:Mainname='muhuo', age=20

所以对于对象来说,这里调用mod方法的参数是拷贝了mian对象的引用,但是这里引用所指向的真实地址是没变的,所以mod方法内部确实对原始对象中的值进行了改变。

以上是关于Java 值传递的主要内容,如果未能解决你的问题,请参考以下文章

Java只有值传递

java只有值传递,不存在引用传递

java中参数传递--值传递,引用传递

java引用传递和值传递

JAVA值传递和引用传递

Java中的值传递和"引用"传递