用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
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短