-2

所以我仍然是一个初出茅庐的程序员,如果有人能向我解释下面的代码是如何工作的,我将不胜感激。

我知道如果没有一些我没有在这里列出的方法,代码将无法运行,但让我感到困惑的是从第 11 行开始: String street 被赋予了一个没有索引的变量的值(据我所知),但我' m 仍然能够以预期的值而不是无价值的 s 返回它。

String 和其他具有相同目的的变量如何不修改我最终返回的变量的值?

再次感谢我在这方面获得的任何帮助。

public class StreetAddress {
    String street, city, state, zip;

    StreetAddress(String s1, String c, String s2, String z) {
        street = s1;
        city = c;
        state = s2;
        zip = z;
    }

    void setStreet(String s) {
        street = s;
    }

    String getStreet() {
        return street;
    }

    void setCity(String c) {
        city = c;
    }

    String getCity() {
        return city;
    }

    void setState(String s) {
        state = s;
    }

    String getState() {
        return state;
    }

    void setZIP(String z) {
        zip = z;
    }

    String getZIP() {
        return zip;
    }

    String mailingLabel() {
        return street + "\n" + city + ", " + state + " " + zip;
    }
}

上面的类将接收下面的信息并返回一个格式化的标签。

StreetAddress add = new StreetAddress("Cheese Island", "East Hemisphere", "The Moon", "99999999");
System.out.println(add.mailingLabel());
add.setStreet("Solar Flare");
add.setCity("Corona");
add.setState("The Sun");
add.setZIP("00000000");
System.out.println(add.mailingLabel());
4

5 回答 5

1

这是一个描述 StreetAddress 概念的 java 类。基本上,该类描述了一个现实生活中的对象,该对象具有对该对象有意义的属性。在这种情况下,您的街道地址包含信息streetcitystatezip

您可以instantiate像这样创建或创建一个新的 StreetAddress 对象:

StreetAddress streetAddress = new StreetAddress("Lincoln street", "New York", "New York", "1234");

这意味着您现在有一个对象,您可以在程序中传递包含地址的对象:

林肯街,

纽约,

纽约 1234

如果你想从你的对象中获取一些信息,你可以使用这些getter方法。例如,如果您只想从对象中获取街道信息,您可以这样做:

String street = streetAddress.getStreet();

同样,如果要更新streetStreetAddress 对象中的字段,可以使用setter如下方法:

streetAddress.setStreet("Washington ave");

现在您的对象将包含街道地址:

华盛顿大街,

纽约,

纽约 1234

这些gettersetter方法对对象中的每个字段都以相同的方式工作:streetcitystatezip

最后的方法:

String mailingLabel(){  return street + "\n" + city + 
      ", " + state + " " + zip; } }

允许您返回与上述示例类似的对象的格式化版本。您可以通过执行以下操作将此格式化版本的对象打印到控制台:

System.out.print(streetAddress.mailLabel());

在 Java 中,您使用对象来描述现实世界的概念,并且在您的程序中,您可以创建许多像 StreetAddress 一样的对象来携带信息。对象及其数据在程序运行时存储在内存中,而不是存储在数据库中(除非它们是 EJB,但暂时忘记这一点)。如果您在类之间传递一个对象,它将保留其中的数据,直到您再次使用gettersand更改它setters;

希望这可以帮助 :)

于 2013-01-09T19:59:50.847 回答
0

您的构造函数设置了四个内部值;街道、城市、州和邮编。

一旦构造完成,就可以使用 getter 方法检索这四个变量。

这四个变量可以使用 setter 方法进行修改。

于 2013-01-09T19:38:48.477 回答
0

您向我们发送了一个带有构造函数的简单 java 类,它接受 3 个参数并初始化私有字段。所以,当你像这样调用这个构造函数时

StreetAddress address = new StreetAddress("Brookin", "New York", "NY", "12345");

相应的字段将被初始化。

你的类也有设置器 - 允许更改特定字段值的方法。例如,如果现在您调用address.setZIP("54321")邮政编码将被更改。

我希望这有帮助。

于 2013-01-09T19:42:01.917 回答
0

在其他地方你会说这样的话:

myAddr = new StreetAddress("My Street", "My City", "My State", "My Zip");

然后这些值存储在这个对象中,你可以稍后取回它们......

anotherZIP = myAddr.getZIP();
于 2013-01-09T19:42:48.397 回答
0

您问题的措辞有点不清楚,但您似乎对声明、实例化和初始化感到困惑。

在这一点上,我建议阅读有关它们如何发挥作用的快速教程:http: //docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

抽出一些可以帮助您集中注意力的快速片段:

String street 被赋予了一个没有被索引的变量的值(据我所知),
但我仍然能够用预期的值而不是无价值的值返回它

你在这里看到的(“第十一行”):

void setStreet(String s) {
    street = s;
}

是方法期望接收的声明(a String)。s和其他属性在StreetAddress这里初始化:

StreetAddress add = new StreetAddress("Cheese Island", "East Hemisphere", "The Moon", "99999999");

...然后在此处进一步更改该值:

add.setStreet("Solar Flare");

在最后一个示例中,“Solar Flare”是用于初始化String s内部变量的值setStreet()

于 2013-01-09T20:18:21.713 回答