按引用传值

引用传值

引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。
引用类型常见的引用类型:类类型,接口类型和数组。

public class PassingByReference {
    static class Entity{
        int key;
        String value;
        @Override
        public String toString() {
            return "Entity{" +
                    "key=" + key +
                    ", value='" + value + '\'' +
                    '}';
        }
    }
    private static void demo(Entity e) {
        Entity demo = e;
        demo.key = 1;
        demo.value = "end";
        System.out.println("参数的对象:"+ e.toString());
        System.out.println("demo:"+ demo.toString());
    }
    public static void main(String[] args) {
        Entity entity = new Entity();
        entity.key = 0;
        entity.value = "start";
        System.out.println("开始时的对象entity:" +entity.toString());
        demo(entity);
        System.out.println("结束时的对象entity:" +entity.toString());
    }
}

运行结果:
 开始时的对象entity:Entity{key=0, value='start'}
 参数的对象:Entity{key=1, value='end'}
 demo:Entity{key=1, value='end'}
 结束时的对象entity:Entity{key=1, value='end'}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,799评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,828评论 8 265
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,929评论 18 399
  • 开启我的写作1(电影感受) 这两天很无聊,与其说无聊不如说是对自己失望。进入到不忙的小学期,时间大把大把的流逝,自...
    夏落樱阅读 929评论 0 0
  • 突然发现老妈是因为感统失调,所以很多事情她觉得无能为力。当我们不理解他人的时候是不是也能用对待孩子的角度多一些理解...
    遇见哟哟鱼阅读 1,534评论 0 0