Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的常量变量和方法_Java - Fatal编程技术网

java中的常量变量和方法

java中的常量变量和方法,java,Java,如果我们将一个变量定义为常量变量,那么当我们在方法中使用这个变量时,我们是否必须将该方法设置为静态的 static final int AGE=35; private int daysOfLife(){ return AGE*365; } 我们可以这样定义方法吗 尽管它没有给我任何错误,但是从实例方法中读取静态数据是一种好的实践吗 据我所知 “静态”表示它在类范围中使用。这意味着它可以在整个程序中使用。所以从技术上讲,它们可以以非静态的方式存储,但是它们仍然可以在该实例之外使用。1)没有必要

如果我们将一个变量定义为常量变量,那么当我们在方法中使用这个变量时,我们是否必须将该方法设置为静态的

static final int AGE=35;

private int daysOfLife(){
return AGE*365;
}
我们可以这样定义方法吗

尽管它没有给我任何错误,但是从实例方法中读取静态数据是一种好的实践吗

据我所知

“静态”表示它在类范围中使用。这意味着它可以在整个程序中使用。所以从技术上讲,它们可以以非静态的方式存储,但是它们仍然可以在该实例之外使用。

1)没有必要将方法设置为static,因为static意味着每次类开始运行static时它都是为类运行的,所以static块是首先运行的,只初始化一次,这就是为什么它在编译时不显示错误的原因

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

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


4) 所以不用担心方法是静态的

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

我会将您的操作分类为-读取写入,这里您尝试读取默认范围
最终
静态
变量在实例
私有
方法中

静态的概念存在于逻辑上对变量和方法进行分组,所以如果您的方法只有这一行,并且该方法中没有其他内容,我建议保持分组的一致性,并将其中任何一个变量作为实例变量(如果变量在所有对象中都是常量,则没有意义)并将其范围更改为
private
(如果您不希望变量在相同的包类中可用)或将该方法标记为static

在实例方法中读取
final
静态
变量是完全可以的,即使写入是有问题的(虽然
final
不能写入,但如果变量不是
final


如果该变量不会被其他地方的类名访问,则最好将该变量设置为实例,如果它将是类级常量,则将其设置为静态,并将方法更改为静态(在每个对象中初始化相同的常量字段将不必要地消耗内存)

是的,您确实需要将方法设置为静态。将方法设置为静态您可以(我认为您应该)将方法声明为静态,但您不必这样做。您绝对不必这样做。但既然你可以自己测试它,为什么还要相信我们的话呢?“从实例方法中读取静态数据是一种好的做法吗”不,是的。无论什么在实例方法中使用静态数据没有什么好处/坏处。方法是否应该是静态的与静态数据的使用无关。方法不能是静态的原因有很多。如果这些都不存在,该方法可能是静态的,这样做通常是好的,但它不是必需的,并且可能有理由不这样做,因此这不是一个硬性规则。