美文网首页
Java填坑笔记:值传递与引用传递

Java填坑笔记:值传递与引用传递

作者: 倚岚听风 | 来源:发表于2017-07-11 19:41 被阅读25次

Java中没有指针,只存在值传递

对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。但是不要被这个假象所蒙蔽,实际上这个传入函数的值是对象引用的拷贝,即传递的是引用的地址值,所以还是按值传递。

  • 值传递

    • 示例:
public class Test3 {
    public static void change(int a){
        a=50;
    }
    public static void main(String[] args) {
        int a=10;
        System.out.println(a);
        change(a);
        System.out.println(a);
    }
}

很显然输出的 是10,10。传递的是值得一份拷贝,这份拷贝与原来的值没什么关系。

  • 内存分析:


  • 引用传递
    • 示例:
public class Test3 {
    public static void change(int []a){
        a[0]=50;
    }
    public static void main(String[] args) {
        int []a={10,20};
        System.out.println(a[0]);
        change(a);
        System.out.println(a[0]);
    }
}

显然输出结果为10 50。实际传递的是引用的地址值。

  • 内存分析:


  • 示例:

class Emp {
    public int age;
}
public class Test {
    public static void change(Emp emp)
    {
        emp.age = 50;
        emp = new Emp();//再创建一个对象
        emp.age=100;
    }
    
    public static void main(String[] args) {
        Emp emp = new Emp();
        emp.age = 100;
        System.out.println(emp.age);
        change(emp);
        System.out.println(emp.age);
        System.out.println(emp.age);
    }
}

输出为:100 50 50.

  • 内存分析:


  • 对于String类:
public class Test {
    public static void change(String s){
        s="zhangsan";
    }
    
    public static void main(String[] args) {
        String s=new String("lisi");
        System.out.println(s);
        change(s);
        System.out.println(s);
    }
}

输出为:lisi lisi,由于String类是final修饰的,不可变,它会在内存中在开辟一块新空间。

转载:http://www.cnblogs.com/coderising/p/5697986.html

相关文章

  • Java填坑笔记:值传递与引用传递

    Java中没有指针,只存在值传递 对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。...

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

  • Java 与值传递

    问: 什么是值传递?什么是引用传递?为什么说 Java 中只有值传递? 一、值传递与引用传递 实参与形参: 实际参...

  • [译] Java 值传递 VS 引用传递

    Java是值传递还是引用传递一直都有争论,我们最终下个结论,Java是值传递而不是引用传递。如果Java是引用传递...

  • 自整理3 值传递和引用传递

    java的值传递和引用传递 首先,由于java没有指针机制,所有java归根究底只有值传递,没有引用传递。java...

  • Java的传值与传引用

    最近在工作中踩到了一个坑,就是Java的值传递和引用传递。对于值传递和引用传递定义有了解,但编写代码时没有特别注意...

  • Java值传递、数据加密

    值传递 Java 基本类型值传递,引用类型值传递 内存图解:

  • Java面试题疑难点

    1. java值传递和引用传递 String为什么是值传递而不是引用传递 答:String是final的

  • Java值传递

    “在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值...

  • JAVA值传递与引用传递

    回顾一下数据类型 JAVA的数据类型分为基本类型和引用类型两种。 基本类型包含 byte short int lo...

网友评论

      本文标题:Java填坑笔记:值传递与引用传递

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