zoukankan      html  css  js  c++  java
  • java中值传递和引用传递

    本来今天刚学习的内容,然后去其他博客看了下,发现都吵起来了,就是名字原因,有的说java有值传递和引用传递,有的说引用传递本质就是值传递,我管你杂说的,只要自己理解好,代码知道运行结果就好了。

    我用自己的话,自己的理解来解释下,反正都是自己写着玩,自己看的

    值传递:传递的值,这个值以后怎么改变,值不会发生改变的。

    引用传递:将对象的引用地址传递过去,如果值发生改变,那么源值也发生改变。

    代码如下:

    值传递

    public class Test1 {

        public static void main(String[] args) {        
            int a=1;
            fun(a);
            System.out.println("main中的值"+a);
        }
        public static void fun(int a){
            a=2;
            System.out.println("fun中的值"+a);
        }
    }

    console结果:

    fun中的值2
    main中的值1

    引用传递:

    class Demo1{
        private String msg="hello";
        public Demo1(String msg) {        
            this.msg = msg;
        }
        public String getMsg() {
            return msg;
        }
        public void setMsg(String msg) {
            this.msg = msg;
        }    
    }
    public class Test2 {

        public static void main(String[] args) {
            Demo1 demo=new Demo1("world");
            fun(demo);
            System.out.println(demo.getMsg());
        }
        public static void fun(Demo1 demo){
            demo.setMsg("hi");
        }

    }

    console结果:hi

    补充一个例题:

    class Value{
    	public int i=15;
    }
    public class Test{
    	public static void main(String argv[]){
    	Test t=new Test( );
    	t.first( );
    }
    
    	public void first( ){
    		int i=5;
    		Value v=new Value( );
    		v.i=25;
    		second(v,i);
    		System.out.println(v.i);
    	}
    
    	public void second(Value v,int i){
    		i = 0;
    		v.i = 20;
    		Value val = new Value( );
    		v = val;
    		System.out.println(v.i+" "+i);
    	}
    }
    

     console结果:15,0,20

     

  • 相关阅读:
    数论知识点整理
    《STL 源码剖析》 list 实现原理
    《STL 源码剖析》 vector 实现原理
    用户偏爱曲风分析(二)
    C++ 静态库 与 动态库
    用户偏爱曲风分析(一)
    C++ 编程中 的性能问题
    《C++API 设计》4.6 类设计
    《C++ API设计》 4.5 架构设计
    Boost 时间库使用 笔记
  • 原文地址:https://www.cnblogs.com/lbloveab/p/7242108.html
Copyright © 2011-2022 走看看