2013-01-09 104 views
-2

所以我还是一个刚刚起步的程序员,如果有人能向我解释下面的代码是如何工作的,我会非常感激。这段代码的功能究竟如何?我无能为力

我知道没有一些方法我没有在这里列出的代码将无法正常工作,但让我感到困惑的是从第十一行开始:字符串街道被赋予一个未索引的变量的值(据我所知)但是我仍然能够将它与预期的价值而不是无价值的东西归还。

确切的说,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()); 
+1

我不明白这个问题。你能写一些使用这个类的客户端代码吗?你的预期与实际产出是多少? –

+0

看起来这是一个典型的bean,它拥有关于街道地址的信息。无非是信息存储和表示;这里我没有看到任何实际的逻辑。 – Makoto

+2

“索引”是什么意思? –

回答

1

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

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

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

这意味着,你现在有一个包含地址的对象,你可以通过在你的程序:

林肯街道,

纽约

纽约1234

如果要从对象中获取某些信息,可以使用getter方法。举例来说,如果你想抓住只能从对象的街道信息,你可以这样做:如果你想更新street场在你的StreetAddress对象,你可以使用一个setter方法这样

String street = streetAddress.getStreet(); 

同理:

streetAddress.setStreet("Washington ave"); 

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

华盛顿大街,

纽约,

纽约1234

这些gettersetter方法相同的方式工作在你的每个字段对象:streetcitystatezip

的最后一个方法:

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

可以让你回到类似于上面的例子来支持你目标的格式化版本。您可以通过执行此打印对象的此格式化版本到控制台:

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

在Java中使用对象来描述现实世界的概念,并在你的程序,你可以创建多个对象这样的StreetAddress一个随身携带的信息。对象及其数据在程序运行时存储在内存中,而不是存储在数据库中(除非它们是EJB,但现在就忘记了)。如果你在类之间传递一个对象,它会保存它中的数据,直到你用getterssetters再次修改它;

希望这有助于:)

0

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

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

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

0

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

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

相应的字段将被初始化。

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

我希望这会有所帮助。

0

别的地方,你会说这样的事情:

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

然后将这些值存储在这个对象,你可以让他们回来后...

anotherZIP = myAddr.getZIP(); 
0

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

在这一点上我会推荐阅读快速教程如何将这些发挥作用: http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

拉出一些快速的作品,可以帮助你集中注意力:

字符串街道给出一个变量的价值没有索引(据我所知)和
但我仍然能够返回它与预期的价值和无价值s

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

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

是什么样的方法期望接收声明(一String)。 sStreetAddress其他属性初始化这里:

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

...,然后将值这里进一步发生变化:

add.setStreet("Solar Flare"); 

在这最后一个例子,“太阳耀斑”是用来价值初始化setStreet()中的String s变量。