java中有公共/全局变量吗?

java中有公共/全局变量吗?,java,Java,我正在编写一个使用java.util.Scanner获取用户输入的程序。这将用于多种方法 有没有可能 public class Main { Scanner input = new Scanner(System.in); public static void main(String[] args) { ... String mainInput = input.nextLine(); ... }

我正在编写一个使用java.util.Scanner获取用户输入的程序。这将用于多种方法

有没有可能

public class Main {

    Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
          ...
          String mainInput = input.nextLine();
          ...
       }

    private static void add(){
          ...
          String addInput = input.nextLine();
          ...
       }
}
或者我需要扫描仪输入=新扫描仪(System.in)在这两个方面 //方法

public class Main {

    public static void main(String[] args) {
          ...
          Scanner input = new Scanner(System.in);
          String mainInput = input.nextLine();
          ...
       }

    private static void add(){
          ...
          Scanner input = new Scanner(System.in);
          String addInput = input.nextLine();
          ...
       }
}
    
我计划采用3-4种其他方法

编辑:

在我的计划中,我遵循了第一条。我收到一个错误:无法从静态上下文引用非静态字段“输入”

回答

static Scanner input = new Scanner(System.in);

如果您立即读取输入,第一个方法将是我的选择。

这当然是可能的。或者选项3)让
add()
方法接受Scanner作为参数,如
private static void add(Scanner sc){…String addInput=sc.nextLine();…}
,所以我可以在main方法中创建一次,并将其传递给
add
方法,如
main。。。{Scanner input=new Scanner(System.in);…add(input);…}
@luk2302是否可以创建类的
静态对象
?例如,
Scanner static sc=new Scanner(…)
它无论如何都不工作@XO56您能澄清一下“静态对象”和“静态变量”是什么意思吗?顺便说一句,字段修饰符(如static、private、volatile等)出现在声明的类型之前,因此它应该是
static Scanner sc
“但是
static Scanner sc=new Scanner(System.in);
给出编译器错误”,这是因为
static
中存在键入错误。Java区分大小写,因此
静态
!=<代码>静态
。关于第1种方法与第2种方法,IMO第1种方法更好,因为它不会创建多个扫描仪来处理
系统。io
,在某些情况下(由于错误或应用IDE建议),稍后可能会有人决定关闭,这也将关闭
系统。io
阻止它在应用程序的其余部分使用(比如当我们再次想要使用
add()
方法时)。但我可能会使用第一条评论中的第三个选项。