Java 中对象传递和返回
众所周知,Java 中始终是按值传递,而不是按引用传递。因此,本文将重点介绍在传递基本类型和传递引用到方法的情况下的验证方式。
当基本类型作为参数传递给方法时,分配给该基本类型的数值将传递给该方法,并且该数值对该方法来说是局部的,这意味着方法对该数值的任何更改都不会改变您传递给该方法的基本类型的数值。
当将引用传递给方法时,Java 仍然遵循按值传递的相同规则,让我们了解一下它是如何发生的。
众所周知,Java 中的引用保存已创建对象的内存位置(如果已分配给该引用,否则初始化为 null)。此处需要记住的是,引用的值是分配给该特定引用的对象的内存位置,因此,每当我们将引用作为参数传递给任何方法时,我们实际上是传递分配给该特定引用的对象的内存位置。从技术上讲,这意味着目标方法拥有我们创建对象的内存位置,并且可以访问它。因此,如果目标方法访问我们的对象并更改其任何属性,那么我们将在原始对象中遇到更改后的值。
示例
public class PassByValue {
static int k =10;
static void passPrimitive(int j) {
System.out.println("the value of passed primitive is " + j);
j = j + 1;
}
static void passReference(EmployeeTest emp) {
EmployeeTest reference = emp;
System.out.println("the value of name property of our object is "+ emp.getName());
reference.setName("Bond");
}
public static void main(String[] args) {
EmployeeTest ref = new EmployeeTest();
ref.setName("James");
passPrimitive(k);
System.out.println("Value of primitive after get passed to method is "+ k);
passReference(ref);
System.out.println("Value of property of object after reference get passed to method is "+ ref.getName());
}
}
class EmployeeTest {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}输出
the value of passed primitive is 10 Value of primitive after get passed to method is 10 the value of name property of our object is James Value of property of object after reference get passed to method is Bond
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP