传值问题


传值问题

代码

package cduck.cn;
class Person{
    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public Person() {

    }
    public Person(String name) {
        this.name = name;
    }
}


public class TransferValue {
    public void changeValue1(int age){
        age=30;
    }

    public void changeValue2(Person person){
    person.setName("xxx");
    }
    public void changeValue3(String s){
        s ="xxx";
    }


    public static void main(String[] args) {
        TransferValue transferValue=new TransferValue();

        int age=20;
        transferValue.changeValue1(age);
        System.out.println("age----"+age);

        Person person=new Person("zs");
        transferValue.changeValue2(person);
        System.out.println("PersonName----"+person.getName());

        String s="nihao";
        transferValue.changeValue3(s);
        System.out.println("String-----"+s);


    }
}

结果

在这里插入图片描述

age解释(基本数据类型)

像这种基本变量类型,传值 传的都是复印件,不会传原件。
当执行到

   transferValue.changeValue1(age);

就会去changeValue1(age);这个方法。执行完以后,没有返回值啥的,就直接跳回来执行输出语句,所以相当于age 没变。

PersonName解释(引用类型)

new Person(“zs”);
相当于在堆中放了个“zs”这么个对象。

在这里插入图片描述

String的解释(String)

在这里插入图片描述


文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录