Java 为什么要将一个变量分配给另一个变量?

Java 为什么要将一个变量分配给另一个变量?,java,variable-assignment,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 } 我不明白为什么

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

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

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

我不明白为什么我需要设置name=firstName和姓氏=secondName。为什么我不能直接设定名字和姓氏

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

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

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

在这种情况下,作为函数参数的firstName和secondName只具有方法级别的作用域,因此一旦控件从此方法返回,数据将丢失。另一方面,名称和姓氏将被存储,并可用于对该构造函数创建的对象进行其他调用。

这些变量的类型不同:

Example()
{
}
firstName和secondName是方法参数。方法一结束,这些变量就超出范围 另一方面,名称和姓氏是类中的字段。只要实例存在,它们就会一直附加到该类的实例。 以下是这意味着什么的说明:

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());
a和b的值已更改,但示例中存储的值仍设置为传递给构造函数的值。

您最好按照以下良好做法编写:
Example()
{
}

这是指这个对象。firstname和secondname都是稍后将传入的参数。因此,将两个值赋给示例对象的字段

名称和姓氏是在名为Example的类中定义的instancemember变量。当您创建Example类的对象时,内存被分配给这两个变量,并按默认值初始化。这些变量的作用域一直保留到对象存在为止。您可以通过对象的引用来访问这些变量

firstName和secondName是局部variablemethod参数,一旦生成方法,这些变量的作用域就不存在了。无法在方法外部访问这些变量

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

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

Example()
{
}

你正在直接设置它们。嗯,这个构造函数至少不会编译。@为什么不呢?这个类编译得很好。@bcsb1001在进行编辑之前,它读取ExamplefirstName,secondName。这些名称作为参数传递-firstName和secondName是参数。由于没有冲突的变量名,所以没有必要在他的示例中包含这些名称。没有必要,但为了清楚起见,建议,至少我在学习OO时就是这么做的