Java 中的参数传递

版权声明:本文为博主原创文章,转载请附上出处。 https://blog.csdn.net/k_runtu/article/details/82663758

       Java 中的参数传递方式是传递值, 也称为”值传递”。 当参数变元是一个简单类型时,值传递意味着这个方法不能改变参数变元的值,即方法中变量所做的改变在方法外都是不可见的,也可以说不起作用; 当参数变元是一个引用类型时, 值传递意味着这个方法不能改动这个对象的引用,但是方法可以调用该对象的方法来修改该对象中可访问的变量。
示例

public class StringTester {
    public static void changeString(String s, StringBuffer sb) {
        s += " by Definition";
        sb.append(" by Definition");
    }

    public static void main(String args[]) {
        String string = new String("Java");
        StringBuffer buffer = new StringBuffer("java");
        changeString(string, buffer);
        System.out.println("String after method call: " + string);
        System.out.println("StringBuffer after method call: " + buffer);
    }
}

输出
这里写图片描述

说明
       在方法changeStrings中,字符串”by Definition” 和 s 拼接起来后,产生一新字符串”Java by Definition”。于是变量s指向这个新字符串,这是由String类的性质决定的, 即要改变一个String对象的值,就是创建一个新的字符串赋给它,但是这种改变只是发生在方法内部,在方法外是不可见的,这是由”值传递”的性质决定的。
       另一方面,变量sb使用append方法修改了所指向数据的内容,”by Definition” 被加入其后,但是sb这个引用的值并未发生改变,因为sb和buffer仍然指向原来的地址,而它们指向的对象的值的改变是方法外可见的。

猜你喜欢

转载自blog.csdn.net/k_runtu/article/details/82663758