值传递与引用传递

值传递

  1. 传递对象的一个副本,即使副本被改变,也不会影响源对象,因为值传递的时候,实际上是将实参的值复制一份给形参;
  2. 原始类型数据(整形、浮点型、字符型、布尔型)传递是值传递
package com.oop.Demo01;
public class Demo04 {
public static void main(String[] args) {
//值传递
int a = 1;
System.out.println(a);//1
Demo04.change(a);
System.out.println(a);//1
}
public static void change(int a) {
a = 10;
}
}

image
注:int数据类型使用的值传递,所以调用change方法没有返回值的话并不会改变原来a的值

引用传递

  1. 传递的并不是实际的对象,而是对象的引用,外部对引用对象的改变也会反映到源对象上,因为引用传递的时候,实际上是将实参的地址值复制一份给形参。
  2. 对象传递(数组、类、接口)是引用传递
package com.oop.Demo01;
public class Demo05 {
public static void main(String[] args) {
//引用传递
Person person = new Person();
System.out.println(person.name);//null
Demo05.change(person);
System.out.println(person.name);//helloman
}
public static void change(Person person) {
person.name = "helloman";
}
}
//定义一个类,有名字
class Person {
String name;
}

image
注:String类型使用的是引用传递,将name指向的值在内存中作出了改变,所以change方法后类的名字发生了改变

posted @   每年桃花开的时候  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示