2014-01-30 92 views
0

我想了解Java中的变量声明。在java中声明变量的方法

其实,我试图理解为什么你不会在类的顶部声明变量,启动它们,然后根据需要使用。

在Headstart Java书中,它声明局部变量是在方法中声明的,并在代码块中启动。我理解这方面。

我的问题是,如果你知道变量,为什么不在声明方法的声明中声明它,而不是在代码中等待并声明/初始化?

难道不会让代码更难阅读吗?

例如:

Class Foo { 

while.... blah blah 

    int bar = 3 + dog.getsize(); 

} 
+1

可能的重复[尽可能晚地声明局部变量](http://stackoverflow.com/questions/10204828/declare-local-variables-as-late-as-possible-or-at-the-nearest-curly -brace-they-b) – Reimeus

回答

2

这实在是一个风格问题。 但是,通常最好的做法是在首次使用时声明局部变量。它使代码阅读更容易理解。想象一下包含数百行的大型方法(顺便说一句:))。如果一个变量在顶部附近被声明,然后被引用了几百行,那么它会使代码阅读变得困难。

+0

我明白了。我的思维过程是想先做好准备,但正如你所说,当我开始执行它的任何代码时,我只需要回溯,找到该变量然后使用它。 现在有道理。谢谢! – rathor1622

1

如果一个方法有很多变数,你可以与之前的任何真正的代码中的许多声明一个“头重脚轻”的方法结束。另外,如果你的方法很长,你可能需要搜索一个变量的声明来找出它的类型。

此外,变量可以在声明时被初始化,这使得代码变短。通过将声明放在使用的地方,它与方法的部分都相关,并且很容易找到类型。这是更容易阅读,并编写这样的代码。这就是说,我更愿意将我的大部分变量声明(和初始化)放在它们相关的块或方法的顶部。

我只在类级别放置方法,如果它们需要在方法调用之间持续存在。任何只与方法相关的东西都应该在方法中声明。与代码块相关的东西在块的顶部被声明。

0

假设你的方法长50行,并且你只需要在第48行使用这个变量。当你读完第47行时,你可能无法记住变量是如何拼写的以及它的数据是什么类型是。这就是为什么局部变量在需要之前不久宣布是一个好主意。如果变量将在try块内声明,并且您需要在try块完成后检查该值,则会出现异常,但在这种情况下,您会在try之前声明。

0

JavaDoc

在java中有四个类型的变量:

  1. 实例变量(非静态字段)
  2. 类变量(静态字段)
  3. 局部变量
  4. 参数

如果你在一个类中声明一个变量,那么java会为你初始化它的值。同时声明一个局部变量,你必须初始化它的值以避免Variable might not have been initialized error

虽然它总是取决于变量的范围和你的算法。你应该总是在声明时关心代码的readability

有关Initialization in java的进一步参考。