Java传参

来源:互联网 发布:在淘宝网上怎么买车 编辑:程序博客网 时间:2024/05/16 09:19

Java传参

Java中传递参数,要么传递的是基本数据类型的值的副本,要么传递的是引用数据类型的引用(String类型属于引用数据类型,但由于它是final类,不可变类型,故在传参过程中,其值不会改变)

参数类型为基本数据类型

示例代码

public class Test {    public static void main(String[] args) {        int a = 10;        boolean b = true;        float f = 2.3f;        char c = 'c';        changeInt(a);        changeBoolean(b);        changeFloat(f);        changeChar(c);        System.out.println(a);//10        System.out.println(b);//true        System.out.println(f);//2.3        System.out.println(c);//c    }    public static void changeChar(char c) {        c = 'r';    }    public static void changeFloat(float f) {        f = 5.4f;    }    public static void changeBoolean(boolean b) {        b = !b;    }    public static void changeInt(int a) {        a = 100;    }}

根据以上代码的输出结果可以看出:当传参类型为基本数据类型时,传递的是值的副本,并不会改变值本身。

参数类型为引用数据类型

示例代码

public class Test {    public static void main(String[] args) {        char[] ch = {'l', 'o', 'v', 'e'};        StringBuilder sb = new StringBuilder("abc");        System.out.println(ch);//love        System.out.println(sb);//abc        changeCh(ch);        changeSb(sb);        System.out.println(ch);//dove        System.out.println(sb);//abcefg    }    private static void changeSb(StringBuilder sb) {        sb.append("efg");    }    private static void changeCh(char[] ch) {        ch[0] = 'd';    }}

根据以上代码的输出结果可以看出,当参数的数据类型为引用数据类型时,传递的是引用的副本。我们应当了解引用数据类型的创建方式:User u1 = new User();这样就创建了一个User类的对象,u1是变量名,它存放在栈内存上,u1的值为其指向的user对象所在堆内存上的地址,它只是一个对象的引用,而不是对象的本身。在进行传递时,传递的也只是这个引用的副本,当这个副本的值改变时,原引用的值并不会受到影响。

0 0
原创粉丝点击