时候应该Java程序员喜欢用
final Date now = new Date();
在
Date now = new Date();
时候应该Java程序员喜欢用
final Date now = new Date();
在
Date now = new Date();
除了决定一个变量是否应该是最终的或其他职位所涵盖的内容之外,我认为final Date now = ...
的问题在于,虽然现在的引用不会改变(它是最终的),但它的值可能是这样。所以我觉得这对于不知道Date是可变的开发人员有点误导。 例如,你可以写:
public static void main(String[] args) {
final Date now = new Date();
System.out.println(now);
now.setHours(5);
System.out.println(now);
}
,并得到2个不同的日期,你的最后期限后...
现在,这是任何可变变量真(的final List<String> l
内容也可以改变)但我认为在日期的情况下,假定不变性太容易了。
更好的解决方案将是使用约达时间库:
final DateTime now = new DateTime();
在这种情况下
,now
是不可改变的,不会改变(参考&值)。
这些设置方法已被弃用,但您说得对,可以调用它们。您的是迄今为止唯一正确的答案。 1 + – 2012-04-02 16:25:30
当你使用final关键字时,你永远不能改变变量的值。同样适用于日期。
在Java中,变量final
是一个变量,它的值一旦被赋值就不能改变。当变量被分配一个值时,你声明一个变量final
,并且你永远不需要改变该值。
问题是什么将是优点,而不是最终的。 – TheBlastOne 2012-04-02 16:24:29
最终变量只能被显式初始化一次。声明为final的引用变量永远不能被重新分配以引用不同的对象。
但是,对象内的数据是可以改变的。所以对象的状态可以改变,但不能引用。
对于变量,最终修饰符通常与静态一起使用以使常量成为类变量。 例子:
class Test{
final int value=10;
// The following are examples of declaring constants:
public static final int BOXWIDTH = 6;
static final String TITLE = "Manager";
public void changeValue(){
value = 12; //will give an error
}
}
,如果你的要求是这种类型比你可以用与最终日期。
前2段为+1 :)。 – 2012-04-02 16:34:03
如果要声明领域,这是只读的,和你想有一个类线程安全的 - 那么你应该使用final
修改。有时候如果在匿名类中使用它,你会被迫做一个变量final。在所有其他情况下,这并不重要。
这取决于你想如何使用它。在大多数情况下,我真的不认为这很重要。 – AedonEtLIRA 2012-04-02 16:22:43
与aix一致 - 没有关于使用'final'的特定于'Date'变量的内容。 – 2012-04-02 17:13:55
我不太清楚我对什么感兴趣...这是http://stackoverflow.com/questions/266806/is-there-any-performance-reason-to-declare-method-parameters-final-in-java是我想要的... – Zango 2012-04-03 08:13:59