这段代码究竟是如何运作的?我很无能为力

时间:2013-01-09 19:34:13

标签: java

所以我仍然是一个初出茅庐的程序员,如果有人能向我解释下面的代码究竟是如何运作的话我真的很感激。

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

如何确切地说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());

5 个答案:

答案 0 :(得分:1)

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

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

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

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

  

林肯街,

     

纽约,

     

纽约1234

如果您想从对象中获取一些信息,可以使用getter方法。例如,如果您只想从对象中获取街道信息,则可以执行以下操作:

String street = streetAddress.getStreet();

同样,如果您要更新StreetAddress对象中的street字段,可以使用setter方法,如下所示:

streetAddress.setStreet("Washington ave");

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

  

Washington ave,

     

纽约,

     

纽约1234

这些gettersetter方法对您对象中的每个字段的工作方式相同:streetcitystate和{{1} }。

最终方法:

zip

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

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

在Java中,您使用对象来描述真实世界的概念,并且在您的程序中,您可以创建许多对象,例如此StreetAddress承载信息。对象及其数据在程序运行时存储在内存中,而不是存储在数据库中(除非它们是EJB,但暂时忘记了)。如果您在类之间传递对象,它将在其中维护数据,直到您使用System.out.print(streetAddress.mailLabel()); getters再次更改它;

希望这会有所帮助:)

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

那样调用这个构造函数时

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

将初始化相应的字段。

您的类也有setter - 允许更改特定字段值的方法。例如,如果现在您拨打address.setZIP("54321"),则会更改邮政编码。

我希望这会有所帮助。

答案 3 :(得分:0)

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

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

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

anotherZIP = myAddr.getZIP();

答案 4 :(得分:0)

你的问题的措辞有点不清楚,但似乎你对宣言与实例化与初始化有关。

此时我建议您阅读有关这些内容如何发挥作用的快速教程: http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

拉出一些可能有助于集中注意力的快速作品:

  

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

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

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

是声明方法期望接收的内容(String)。 s的{​​{1}}和StreetAddress的其他属性在此处初始化:

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

...然后在这里进一步改变值:

add.setStreet("Solar Flare");

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