Java 中的控制台

2024年9月10日 | 阅读 15 分钟

在本节中,我们将学习关于Java 控制台的所有知识,即什么是控制台,我们如何使用控制台,如何实现控制台输出,如何使用控制台进行输入,等等。

什么是控制台?

要运行程序,我们可能需要根据要求从程序员或用户那里获取输入。我们不能总是只从程序中获取输入。有时,我们也可以从控制台或终端获取输入。从控制台获取输入的这个过程是通过 Java 控制台的概念引入的。Java 编程语言提供了几种从控制台获取输入并在同一控制台上提供相应输出的方法。

Java 控制台

使用 Java 控制台,我们可以考虑获取输入并显示输出。通常,控制台主要用于获取输入。有三种方法可以从 Java 控制台获取输入。它们是:

  1. 使用 Java Scanner 类(基础级别)
  2. 使用 Java BufferedReader 类(中级级别)
  3. 使用 Java Console 类

Java 中的 Scanner 类

用于在程序中扫描输入的类称为 Scanner 类。我们通过在 Scanner 类中创建一个对象来使用该类获取程序中的输入。这是通过控制台扫描用户输入的最简单方法之一。它用于扫描 Java 中的所有正则表达式。Scanner 类位于 util 包中。因此,要使用 Scanner 类扫描输入,我们需要导入“ Java.util ”包。

Scanner 类的语法

在这里,“ Scanner ”被视为一个类,“ obj ”是在类中创建的一个对象。因此,为了扫描整个程序中的任何输入,我们可以使用在“ Scanner ”类中创建的这个对象。

有不同的方法用于扫描不同的数据类型。我们将使用的方法类型取决于我们要获取的输入的_数据类型_。Scanner 类中有八种方法,因为有八种通用的基本数据类型。

Scanner 类中的方法

  1. nextByte()
    处理从用户读取 Byte 值的_方法_是 nextByte()
  2. nextDouble()
    处理从用户读取 Double 值的_方法_是 nextDouble()
  3. nextFloat()
    处理从用户读取 Float 值的_方法_是 nextFloat()
  4. nextInt()
    处理从用户读取 Int 值的_方法_是 nextInt()
  5. nextLine()
    处理从用户读取 String 值的_方法_是 nextLine()
  6. nextLong()
    处理从用户读取 Long 值的_方法_是 nextLong()
  7. nextShort()
    处理从用户读取 Short 值的_方法_是 nextShort()
  8. nextBoolean()
    处理从用户读取 Boolean 值的_方法_是 nextBoolean()

一个演示 Scanner 类扫描输入的程序

输入

输出

You have entered an Integer number 
5
You have entered a Float number
3.4
You have entered a String
Hello
You have entered a Boolean value
true

上述程序及其输出的解释

最初,导入了必需的包“ util.Scanner ”,以便访问和实现“ Scanner ”类。考虑并声明了一个名为“ Demo ”的类,其中也声明了 main 部分。在 main 部分下,创建了一个名为“ obj ”的对象,该对象是“ Scanner ”类的实例,以便使用该对象“ obj ”来扫描元素。在成功创建对象“ obj ”之后,根据声明的数据类型,对象会逐一调用方法。例如,“ x ”是一个变量,其中对象“ obj ”调用了用于扫描整数值的“ nextInt() ”方法。同样,其余变量被分配了对象,调用它们各自的方法。最后,允许使用 print 语句打印所有值。这就是“ Scanner ”类的工作方式。

Scanner 类的优点

  • 该类根据使用的数据类型和与用户需求匹配的数据类型提供了多种方法。
  • 它是扫描输入的基础类,几乎可以在所有 Java 版本上运行。

Scanner 类的缺点

  • 它运行和执行速度有点慢,因为在执行之前必须解析数据。
  • Scanner 类中的方法不同步。

Java 中的 BufferedReader 类

这是从用户那里获取输入的一种经典方法(有时也使用控制台)。还引入了一个新语句“ InputStreamReader ”,与“ BufferedReader ”一起使用,以通过 BufferedReader 扫描输入值。让我们看看 BufferedReader 的机制,包括其语法,然后是一个程序。

BufferedReader 类的语法

BufferedReader 类中的方法

  1. readLine()
    “ readLine() ”方法用于从用户那里扫描 String 值。
  2. parseInt()
    “ Integer.parseInt() ”方法用于从用户那里扫描整数值。
  3. parseDouble()
    “ Double.parseDouble() ”方法用于从用户那里扫描 double 值。
  4. parseFloat()
    “ Float.parseFloat() ”方法用于从用户那里扫描 float 值。

一个演示 BufferedReader 类扫描输入的程序

输入

输出

The entered String is: Hello
The entered value of integer is: 10
The entered value of float is: 3.5
The entered value of double is: 9.88

上述程序及其输出的解释

最初,导入了必需的包“ io.BufferedReader ”、“ io.InputStreamReader ”以及通用包“ io.* ”,以便借助支持类“ InputStreamReader ”来访问和实现“ BufferedReader ”类。考虑并声明了一个公共类“ Demo ”,其中也定义了 main 部分。在 main 部分下,考虑了一个“ InputStreamReader ”类的对象“ obj1 ”,以支持“ BufferedReader ”类中的元素扫描,并通过使用对象“ obj1 ”,我们可以启动扫描类“ BufferedReader ”。

在成功创建对象“ obj1 ”之后,就启动了扫描类“ BufferedReader ”。创建了另一个对象“ obj2 ”,其中将“ InputStreamReader ”的对象,即“ obj1 ”,作为补充参数。由 BufferedReader 类中创建的对象,即“ obj2 ”,根据声明的数据类型逐一调用方法。例如,“ s ”是一个变量,其中对象“ obj2 ”调用了用于扫描 String 的“ readLine() ”方法。同样,其余变量被分配了对象,调用它们各自的方法。最后,允许使用 print 语句打印所有值。这就是“ BufferedReader ”类的工作方式。

BufferedReader 类的优点

  • 该类提供的所有方法都完全同步。
  • 它是扫描输入(主要是在“多线程”概念期间)的强制类。
  • 与 Scanner 类相比,此类具有更大的缓冲区。
  • 与 Scanner 类相比,执行速度更快。

BufferedReader 类的缺点

BufferedReader 类中存在的方法不是内置的,而是在使用时需要解析。

Java 中的 Console 类

Java 中的“ Console ”类是从 Java 版本 1.5 开始引入的,并从该版本开始生效。它是 Java 编程语言中最受期待的用途之一。可以在“ Java.io ”包中访问“ Console ”类,该包是 Java 中所有程序构建所使用的基本包。在“ Console ”类中嵌入了多种方法。让我们在接下来的语句中学习所有这些方法。

使用 Java 中的“ Console ”类的一个主要优点是,在获取输入和显示输出时,像密码这样的机密数据或信息是隐藏的。这是在 Java 中首选 Console 类的主要原因。不仅是这个特性,控制台的可读方法也始终是同步的。但是,Console 类只能在命令提示符或终端上执行,而不能在任何其他 IDE 平台上执行。基本上,Java 中的“ Console ”类没有指定的语法。根据程序执行的目的和情况,“ Console ”类的语法和用法会有所不同。

Console 类中的方法

  1. readLine()
    用于从控制台读取一行文本或 String 的方法是“ readLine() ”方法。当在 String 类中创建对象时,可以访问或使用此方法。
  2. readLine( String, Object )
    用于提供预格式化提示以接收来自控制台输入的_方法_是“ readLine( String, Object ) ”方法。当在 String 类中创建对象时,可以使用此方法。“ readLine() ”方法与“ readLine( String, Object ) ”方法之间的唯一区别是传递给这些方法的参数的类型和数量。
  3. readPassword()
    用于以一种_不会_在屏幕上显示输入的方式读取或扫描密码的方法是“ readPassword() ”方法。在此方法中应考虑的数据类型是字符数组或“ char[] ”。
  4. readPassword( String, Object )
    用于以保密方式读取或扫描密码的方法是“ readPassword( String, Object ) ”方法,该方法会显示格式化的提示,并且输入不会在屏幕上显示。在此方法中应考虑的数据类型是字符数组或“ char[] ”。
  5. reader()
    该方法由“ Reader() ”类中创建的对象调用,该类处理并与控制台相关。此方法还有助于创建“ Reader() ”类中的对象。
  6. Console printf( String, Object )
    用于在控制台输出中打印字符串的_方法_是“ printf() ”。可以使用“ Console() ”类来访问它。
  7. flush()
    用于清除控制台上所有语句或内容的_方法_是“ flush() ”。这是一个通用方法,它既不创建对象,也不会被特定类中创建的对象访问。它只是清除控制屏幕上的内容。其返回数据类型通常为“ void ”。
  8. Console format( String, Object )
    当被要求打印时,用于在控制台输出屏幕上打印格式化字符串的_方法_是“ format( String, Object ) ”方法。我们通常使用它来获得一个完美排列且符合要求的分类字符串。可以访问此方法,并且它也是“ Console ”类的一部分。

不仅这些方法,还有其他几种方法也是“ Console ”类的一部分。方法的用法取决于程序的运行方式以及程序想要执行的操作。

一个演示 Console 类扫描输入的程序

输入

输出

You can enter an input using Console now!! 
Enter the first input: Hello
The String that you have entered is : 
Hello
Let us find the reader object of the Console class:
The reader object of the Console class is:
Java.io.Console$LineReader@1be6f5c3

输入 2

输出 2

You can enter an input using Console now!! 
Enter the first input: World
The String that you have entered is : 
World
Let us find the reader object of the Console class:
The reader object of the Console class is:
Java.io.Console$LineReader@1be6f5c3

上述程序及其输出的解释

最初,导入了必需的包“ Java.io.Console ”和通用包“ io.* ”,以便访问和实现“ Console ”类。考虑并声明了一个公共类“ Demo2 ”,其中也定义了 main 部分。在 main 部分下,考虑了“ Console ”类,其中创建了一个对象“ c ”,以便支持“ Console ”类中的元素扫描,并通过使用对象“ c ”,我们可以启动扫描类“ Console ”。

在成功创建对象“ c ”之后,就启动了扫描类“ Console ”,并根据需要考虑 Console 类的相应方法。由 Console 类中创建的对象,即“ c ”,根据声明的数据类型和要执行的操作类型逐一调用方法。例如,如果您想获取 String 作为输入,则需要访问方法“ readLine() ”,该方法已在上述程序中完成。“ x ”是一个 String 变量,其中存储了通过对象“ c ”调用方法“ readLine() ”获取的输入。

此过程或方法用于扫描 String。同样,其余变量,即“ Reader ”中创建的“ r ”,被赋值,以便存储 Console 类的 reader 对象。通过这种方式,变量被赋值给对象,调用它们各自的方法。最后,允许使用 print 语句打印所有值。这就是“ Console ”类的工作方式。

一个演示 Console 类扫描密码的程序

输入 1

输出 1

You can enter a password using Console now!! 
Enter the input password: 
The password that you have entered is: nikki@1234567890

输入 2

输出 2

You can enter a password using Console now!! 
Enter the input password: 
The password that you have entered is: nikhitha#1234567890

上述程序及其输出的解释

最初,导入了必需的包“ Java.io.Console ”和通用包“ io.* ”,以便访问和实现“ Console ”类。考虑并声明了一个公共类“ Demo1 ”,其中也定义了 main 部分。在 main 部分下,考虑了“ Console ”类,其中创建了一个对象“ c ”,以便支持“ Console ”类中的元素扫描,并通过使用对象“ c ”,我们可以启动扫描类“ Console ”。

在成功创建对象“ c ”之后,就启动了扫描类“ Console ”,并根据需要考虑 Console 类的相应方法。由 Console 类中创建的对象,即“ c ”,根据声明的数据类型和要执行的操作类型逐一调用方法。由于程序的目的是获取密码输入,我们需要使用方法“ readPassword() ”。例如,在之前的程序中,您想获取 String 作为输入,所以您访问了方法“ readLine() ”。“ x ”是一个 String 变量,其中存储了通过对象“ c ”调用方法“ readLine() ”获取的输入。同样,声明了一个名为“ pass ”的变量,数据类型为“ char[] ”,并用于使用方法“ readPassword() ”获取输入。

由于密码非常机密,在获取密码输入时,输入将不会显示。为了知道密码,我们需要访问并调用属于基本类“ String ”的成员方法“ valueOf() ”。此过程或方法用于扫描密码而不泄露其值。为了存储密码的值,声明了一个 String 变量“ x ”。通过这种方式,变量被赋值给对象,调用它们各自的方法。最后,允许使用 print 语句打印所有值。这就是“ Console ”类如何用于扫描密码。这种使用方式或方法可以防止除用户之外的其他人未经授权的访问,因为密码是不可见的。

Console 类的优点

  • 此类提供了一种方法,可以在扫描时_不显示_密码值的情况下将密码作为输入。
  • “ Console ”类的方法都是同步的。

Console 类的缺点

  • “ Console ”类的_工作_仅限于终端或控制台,而不限于 IDE(一个非交互式环境)。