如果我们将一个变量定义为常量,那么当我们在方法中使用该变量时,是否必须将方法设置为静态?
static final int AGE=35;
private int daysOfLife(){
return AGE*365;
}
我们可以像这样定义方法吗?
尽管它没有给我任何错误,但是从实例方法读取静态数据是一个好习惯吗?
最佳答案
您不应该只担心变量/方法是静态还是非静态,还应该担心其他事情。
我将您的操作分类为 - 读取和写入,在这里您尝试读取默认范围> 、 final
和 INSTANCE 、 private
方法中的 static
变量。
静态的概念存在于逻辑上对变量和方法进行分组,因此如果您的方法只有该行并且该方法中不会有其他任何内容,我建议保持该分组一致并使该变量成为一个实例变量(如果变量在所有对象中都是常量,则没有意义)并将其范围更改为 private
(如果您不希望变量在同一包类中可用)OR 将该方法标记为静态。
在实例方法中读取final
和static
变量是完全可以的,尽管写入是有问题的(尽管final
无法写入,但以防万一变量不是 final
)。
如果该变量不会在其他地方通过类名访问,则最好将该变量设为实例,然后如果它是类级别常量,则将其设为静态并将方法更改为静态(初始化相同的常量字段)每个对象都会不必要地消耗你的内存)。
关于java - java中的常量变量和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46398153/