形参与实参之间的传递

形参与实参中间参数的传递

基本类型传递的是实际值,不能修改实参值

引用类型传递的是地址值,能够修改实参值

public class test1 {
    public static void main(String[] args) {
       person person = new person();
       person.name="a";
       person.age=15;

       changeobject(person);

       System.out.println(person.name);

       int a = 10;
       changebase(a);

        System.out.println(a);


    }

    public static void changeobject(person x){
        x.name="b";
    }

    public static void changebase(int x){
        x+=10;
    }

}

  上面的person对象实参被改变了,基本整形 int 不会被改变 

 

比较特殊的是String类型

public class test1 {
    public static void main(String[] args) {
       String s1 = "a";
       String s2 = "b";
       String s3 = changstring(s1);

       System.out.println(s1);

        System.out.println(s2 == s3);
    }

    public static String changstring(String x){
        x="b";
        return x;
    }

}

上面这个代码分别输出 “a” 和 true

s1 并没有被改变

s2 和 s3 却指向同一个地址

这是因为有字符串常量池存在

当 s1 指向的字符串改变,会先在字符串常量值中查找是否已有相同的字符串

有就直接指向改字符串的地址

没有就新开辟一个内存,存放新字符串,而原地址的字符串是不会被修改的(描述的不清晰)

比如 s1 = "a";

变成 s1 = "b";

会现在字符串常量池找有没有 “b”,有的话s1 直接指向“b”的地址

没有s1就新建一个常量“b”,并且指向“b”

 

形参与实参之间的传递

上一篇:VS Code 配置和使用


下一篇:Eclipse中和windows中的换行