为什么要将变量赋给另一个变量?

时间:2014-10-02 18:43:12

标签: java variable-assignment

我不明白为什么要这样做:

public class Example {
    private String name;
    private String surname;

    Example(String firstName, String secondName) {
        name = firstName;
        surname = secondName;
    }
    // whatever other code goes here
}

我不明白为什么我需要设置name = firstNamesurname = secondName。为什么我不能直接设置namesurname

5 个答案:

答案 0 :(得分:5)

这些变量不是同一类:

  • firstNamesecondName是方法参数。方法结束后,这些变量就会超出范围
  • 另一方面,
  • namesurname是班级中的字段。只要实例存在,它们就会“附加”到该类的实例。

以下是这意味着什么的说明:

String a = "Hello";
String b = "World";
// For the duration of the constructor, a becomes firstName,
// and b becomes secondName
Example e = new Example(a, b);
// Once the constructor exists, firstName and secondName disappear.
// Resetting a and b after the call is no longer relevant
a = "Quick brown fox jumps";
b = "over the lazy dog";
System.out.println(e.getName()+" "+e.getSurname());

ab的值已更改,但Example中存储的值仍设置为传递给构造函数的值。

答案 1 :(得分:2)

你最好这样写(好的做法):

Example(String firstName, String secondName) {
    this.name = firstName;
    this.surname = secondName;
}

这是指这个对象。 firstname和secondname都是您稍后将传递的参数。因此,您要为Example对象的字段分配两个值

答案 2 :(得分:0)

调用方法时,您将名称作为参数传递给参数名称和姓氏。

Example test = new Example("Derrick", "Hamilton");

然后,名称将存储在从类创建的对象中。参数name和surname只是数据的临时持有者。构造函数完成后,这些变量将不复存在。

答案 3 :(得分:0)

在这种情况下,firstName和secondName(作为函数参数)只有方法级别范围,因此只要控制从此方法返回,数据就会丢失。另一方面,名称和姓氏将被存储并可用于对此构造函数创建的对象的其他调用。

答案 4 :(得分:0)

name和surname是名为Example的类中定义的实例(成员)变量。当您创建Example类的对象时,内存将被分配给这两个变量并按默认值初始化。这些变量的范围保持不变,直到对象存在。您可以使用对象的引用来访问这些变量。

firstName和secondName是局部变量(方法参数),一旦你拿出方法,这些变量的范围就不存在了。您无法在方法之外访问这些变量。

在Example方法中,这不是它的一个Example类构造函数的一般方法。通过传递fistName和secondName的值来创建Example对象时,它将调用参数构造函数并将值从firstname设置为name,将secondName设置为surname。

为了获得最佳实践,请始终使用参数构造函数定义默认构造函数。

Example()
{
}