编程语言
首页 > 编程语言> > Java与值传递和引用传递

Java与值传递和引用传递

作者:互联网

参数传递值得时候,在不声明指针传递的情况下,传递的是值还是指针呢

结论:

基本数据类型:当基本数据类型作为参数传递时,传递的是实参值的副本,即传的是值,无论在函数中怎么操作这个副本,实参的值是不会被改变的

复合数据类型(对象):复合数据类型由构造器内定义的代码实现初始化,构造器在类的创建函数(比如“new”之类)应用到类变量的时候被调用。
构造器被调用之前,类的各个成员被初始化为各自的默认值或者显式赋予的初值 复合数据类型由构造器内定义的代码实现初始化,构造器在类的创建函数(比如“new”之类)应用到类变量的时候被调用。构造器被调用之前,类的各个成员被初始化为各自的默认值或者显式赋予的初值

实例一:

public class test {
    public static void main(String[] args) {
        int i = 1;
        System.out.println("before change, i = "+i);
        change(i);
        System.out.println("after change, i = "+i);
    }
    public static void change(int i){
        i = 5;
    }
}

实例二:

public class test {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("Hello ");
        System.out.println("before change, sb is "+sb.toString());
        change(sb);
        System.out.println("after change, sb is "+sb.toString());
    }
    public static void change(StringBuffer stringBuffer){
        stringBuffer.append("world !");
    }
}

实例三:

public class test {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("Hello ");
        System.out.println("before change, sb is "+sb.toString());
        change(sb);
        System.out.println("after change, sb is "+sb.toString());
    }
    public static void change(StringBuffer stringBuffer){
        stringBuffer = new StringBuffer("Hi ");
        stringBuffer.append("world !");
    }
}

所以传递对象时候,将指针更改就不会影响原有的值。否则两个指向同一个地址,会改变原有值

 

标签:Java,StringBuffer,System,传递,与值,sb,public,change,out
来源: https://www.cnblogs.com/xuweiqiang/p/16197591.html