美文网首页
Java传参

Java传参

作者: MVBin | 来源:发表于2017-05-23 11:07 被阅读14次

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对象所在堆内存上的地址,它只是一个对象的引用,而不是对象的本身。在进行传递时,传递的也只是这个引用的副本,当这个副本的值改变时,原引用的值并不会受到影响。

相关文章

  • Mybatis mapper文件中传递多个参数的4种方式

    方法1:顺序传参法 方法2:@Param注解传参法 方法3:Map传参法 方法4:Java Bean传参法

  • Shader传参

    java->shader传参

  • Java传参

    Java中传递参数,要么传递的是基本数据类型的值的副本,要么传递的是引用数据类型的引用(String类型属于引用数...

  • 关于Java、Maven运行jar包的那些事

    1. java -jar xxx.jar 传参 java -Dparam=aaa -jar xxx.jar (⚠️...

  • java引用 VS C++指针小结

    java参数传参都是传引用,其实就是指针,但是java只能传递一级指针 比如上方,test(str);虽然把引用传...

  • java传参问题

    java传参的问题,可以通过如下三个例子进行说明: 例一: 例二: 例三: 总结:如果形参是基本类型,实参传递传递...

  • Java传参方式

    对于基本数据类型(int, char etc.),传递的是基本数据类型的值的拷贝对于对象引用,传递的是对象对象在堆...

  • java 方法传参

    java方法参数的传递过程,是一个值的复制过程而非传递过程: 1)参数类型为基本类型时,复制的是基本类型的值变量 ...

  • java传参【转】

    参数传递 java包括两个数据类型 内置数据类型 引用数据类型 一:搞清楚基本类型和引用类型的不同之处 基本数据类...

  • Java 传参方式

    要说的不是Java传值还是传引的问题,而是在程序中,一个方法获取到上层调用传参的方式有哪些,使用场景都是怎么样的问...

网友评论

      本文标题:Java传参

      本文链接:https://www.haomeiwen.com/subject/jamwxxtx.html