java中的常量变量和方法

时间:2017-09-25 05:29:26

标签: java

如果我们将变量定义为常量变量,当我们在方法中使用这个变量时,我们必须将方法作为静态吗?

static final int AGE=35;

private int daysOfLife(){
return AGE*365;
}

我们可以像这样定义方法吗?

即使它没有给我任何错误,但从实例方法读取静态数据是一个好习惯吗?

3 个答案:

答案 0 :(得分:1)

你不应该只担心变量/方法是静态的还是非静态的,而是担心其他事情。

我会将您的行为归类为 - 阅读& WRITE ,在这里您尝试阅读 默认范围final& INSTANCE static方法中的private变量。

静态概念退出逻辑上对变量和方法进行分组,所以如果你的方法只有那条线而且该方法中没有其他任何东西,我建议保持该分组的一致性并使其变为该变量实例变量(如果变量在所有对象中保持不变,则没有意义)并将其范围更改为private(如果您不希望变量在相同的包类中可用) OR 将该方法标记为静态。

阅读final&实例方法中的static变量完全没问题,即使有问题(尽管final无法写入,但如果变量不是final })。

如果该变量不会被其他地方的类名访问,那么使该变量成为实例,并且如果它将是类级别常量,则将其设置为静态并将方法更改为静态(初始化相同的常量字段)在每个对象中都会花费你不必要的内存)。

答案 1 :(得分:0)

尽我所知....

'静态'表示它在类范围内使用。这意味着它可以在整个程序中使用。因此从技术上讲,它们可以存储在非静态方法中,但它们仍然可以在该实例之外使用。

答案 2 :(得分:0)

1)没有必要把方法作为静态,因为静态意味着当类开始运行静态时它会运行,所以静态块是第一个只运行的东西初始化一次,这就是为什么它没有在编译时显示错误

2)另外,我们不能在静态块中初始化或使用非静态变量,因为静态块将在实例变量之前运行,因此编译时将捕获错误

3)声明为final且 mutable 的变量仍然可以在某些方面改变;但是,变量在任何时候都不能指向不同的对象。

4)所以没有什么可担心使方法静态