在Java中使用大写字母在main之外定义Scanner类型的常量是一种好习惯

时间:2016-04-04 19:43:48

标签: java

我只是想学习Java。 我的教科书说,在main之外定义常量是一种好习惯,所以我不会无意中用大写字母来改变它们。 定义扫描程序(java.util.Scanner)以从键盘获取输入的典型方法是:

public static Scanner keyboard = new Scanner(System.in);

在主内部。

我认为扫描仪通常在程序运行时没有改变,所以它通常是一个常量。 在大写字母之外用大写字母定义常量扫描仪是不错的做法,所以前几行会是这样的?:

package test;
import java.util.Scanner;

public class Test_class_2{
    public static Scanner KEYBOARD = new Scanner(System.in);
    public static void main(String[] args) {

2 个答案:

答案 0 :(得分:1)

这不是一个好习惯,因为它是可变的。

只应在CAPS中声明不可变常量,并且还应添加final关键字,这意味着该值不能更改。类似的东西:

static final String CONSTANT_NAME = "CONSTANT_VALUE" ;

这是对java中可变和不可变值的一个很好的解释。

  

可变对象可以在构造后更改其字段。   不可变对象不能。不可变对象只是其对象   构造后状态(对象的数据)不能改变

答案 1 :(得分:0)

Java使用final关键字来定义常量。

final int PI = 3.14;//ths is a constant and you can't change its value

另一方面,键盘(您定义为Scanner)是指存储器中存储特定对象信息的位置。现在您可以更改键盘指向的位置,例如:

keyboard = new Scanner(System.in);//now keyboard points to a different location at the memory

所以通常键盘不是常量,因为在程序执行期间可以采用不同的值(可以指向不同的对象)。