1.对象作为函数的参数传递过去的时候,是以原对象的引用的方式传递的,更改参数对象的值,会影响原来的对象。 2.对象作为函数的返回值的时候,传递过来的也是一个引用传递,更改传递过来的对象的时候,会影响原来的对象 3.对象A给另一个对象B赋值的时候(无论B是否经过了new 开辟新空间),此时的B是对A对象的一个引用,更改B会影响A 4.唯一的不是引用传递的方式是: 使用 基本数据类型赋值的方式,来对对象进行拷贝比如上例中的最后一种方式。这样出现的对象是一个新对象,不是原始对象的引用 补充: 1. java中的String类型虽然也为一个对象,但是在赋值传递的时候,走的是值传递的路线,和一般数据类型是同样的。String为一个特例。 总结: 对象的传递过程中, 基本上都是以引用传递来进行的,唯一的非引用传递的方法是: 自己开辟新的对象空间后,使用基本数据类型赋值方法(也可以自己实现一个copy复制函数)。

附上测试代码和结果:

        String str = new String("abc");
char[] ch = {'a','b','c'}; Log.d("levin", str+"\n");
Log.d("levin", String.valueOf(ch)); change(str,ch); System.out.print("\n");
Log.d("levin", str+"\n");
Log.d("levin", String.valueOf(ch)); Person person = new Person();
person.name = "bill";
person.age = 10;
changePerson(person);
Log.d("levin", person.name+"\n");
Log.d("levin", String.valueOf(person.age));
    public void changePerson(Person person){
person.name = "Jobs";
person.age = 50;
}

06-07 12:33:57.178: D/levin(8091): abc 06-07 12:33:57.578: D/levin(8091): abc 06-07 12:33:58.548: D/levin(8091): abc 06-07 12:33:58.988: D/levin(8091): gbc 06-07 12:34:00.158: D/levin(8091): Jobs 06-07 12:34:00.418: D/levin(8091): 50

最新文章

  1. Unknown lifecycle phase "mvn". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
  2. CentOS/Redhat VNC 服务
  3. setInterval小问题
  4. leetcode 154. Find Minimum in Rotated Sorted Array II --------- java
  5. spring3.2.2+mybatis3.2.3+c3p0项目整合
  6. iOS开发之静态库.a的制作教程
  7. TCP与UDP网络编程总结(一)
  8. angular router ui bug !
  9. web前端CSS2学习2017.6.17
  10. Entity Framework Core 2.0 新特性
  11. 关于mysql保存数据的时候报问题分析  普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、涉及无线相关的 MySQL 数据库建议都提前采用 utstring value:'\xF0\x9F\x98\x82\xF0\x9F...' for ...
  12. 【c#】RabbitMQ学习文档(四)Routing(路由)
  13. maven-compiler-plugin报错
  14. prufer编码
  15. linux下混杂模式
  16. Shell - 简明Shell入门06 - 循环语句(Loop)
  17. 小组冲刺第十四天站立会议(Beta版发布)
  18. laravel 单元测试设置模拟时间
  19. Linux 系统结构详解【转】
  20. uva-10054-欧拉回路

热门文章

  1. Android ListView两种长按弹出菜单方式
  2. 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld
  3. FileDescriptor
  4. Codeforces 510B Fox And Two Dots 【DFS】
  5. Raphael Js矢量库API简介:
  6. 网页制作之JavaScript部分3--事件及事件传输方式(函数调用 练习题 )重要---持续更新中
  7. tomcat启动后ids页面无法访问
  8. 14-UIKit(拖拽手势、布局)
  9. Qt 富文本处理(QTextDocument和QTextBlock和QTextFrame和QTextTable和QTextList和QTextDocument)
  10. RESTful最佳实践之基于 jersey 的增删改查