zoukankan      html  css  js  c++  java
  • 深拷贝和浅拷贝

    <?php
    /**
    *深拷贝、浅拷贝
        深拷贝:将被拷贝对象中引用的类一起拷贝
        浅拷贝:拷贝对象时,不能够将对象中引用的其他对象进行拷贝
    *
    */
    
    class Test{
        public $a = 1;
    }
    
    class TestOne{
        public $b = 2;
        public $obj;
        public function __construct(){
            $this->obj = new Test();
        }
    }
    
    $test = new TestOne();
    
    /**
    * 浅拷贝
    */
    
    $test_shallow = clone $test;
    $test_shallow->b = 3; //改变拷贝出来的对象中的$b的值 被拷贝对象的$b的值不变
    echo $test->b."
    "; //输出 2
    
    $test_shallow->obj->a = 5; //改变拷贝出来的对象中引用的obj的$a的值,被拷贝对象中相应的值也会改变,说明两个对象中的obj指向了同一个对象
    echo $test->obj->a; //输出5
    
    
    
    /**
    *深拷贝  无论如何改变$test_deep的值都和$test对象无关
    */
    $test_deep = serialize($test);
    $test_deep = unserialize($test_shen);
    $test_deep->obj->a = 6;
    echo $test->obj->a;
  • 相关阅读:
    FileUpload组件
    国际化
    dbutils
    BeanUtils
    c3p0连接池]
    JDBC代码模板
    JDBC基础与连接sql2012
    JSP以及JSP解析原理
    Tomcat使用,部署
    JAVA---反射
  • 原文地址:https://www.cnblogs.com/itsuibi/p/10948588.html
Copyright © 2011-2022 走看看