java中对象作为方法参数和返回值时均传递地址值,参数修改对象属性会影响原对象,但重赋引用无效;返回对象即返回其地址,支持链式调用,需注意null判空。

Java 中方法可以自然地接收对象作为参数,也能直接返回对象,这是面向对象编程的基础能力。关键在于理解对象在 Java 中是通过引用传递的,而方法签名和实现需明确类型。
用对象作参数:传的是引用,不是副本
当把对象传给方法时,实际上传递的是该对象的引用(内存地址),方法内对对象属性的修改会反映到原对象上。但重新赋值引用本身不会影响外部变量。
- 参数类型必须与实参对象的类或其父类/接口匹配
- 常见写法:public void updatePerson(Person p) { p.setName("Alice"); } —— 这会改变原始 Person 对象的 name
- 但 p = new Person(); 不会影响调用处的变量,只是让形参指向新对象
用对象作返回值:返回的是引用,可链式调用
方法声明中用类名(如 String、List、自定义类)作返回类型,return 后跟对应类型的实例即可。
- 返回 null 是允许的,但调用方需注意判空,避免 NullPointerException
- 常用于构建器模式或封装逻辑,例如:public Person createDefaultPerson() { return new Person("Unknown", 0); }
- 返回集合、包装类、或自己写的业务对象都很常见
组合使用:参数进、对象出,体现封装思想
典型场景是根据输入对象加工数据,生成新对象或更新后返回——比如转换、校验、复制等。
- 示例:把 User 转为 DTO:public UserDTO toDto(User user) { return new UserDTO(user.getId(), user.getName()); }
- 注意区分“修改原对象并返回它”和“创建新对象返回”,前者适合 fluent API,后者更安全、无副作用
- 若需不可变行为,推荐返回新对象,避免意外修改原始数据
小提醒:泛型与多态让对象参数/返回更灵活
配合泛型和继承,能写出通用性强的方法。比如一个处理任意类型列表的工具方法:
- public
List filter(List items, Predicate condition) - 参数可以是 List
或 List ,返回类型自动适配 - 接口类型(如 List、Runnable)也常作为参数或返回值,提升扩展性
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











