总的方法有以下几种:

next()、nextLine()、nextInt()、nextDouble()

其中,next()、nextLine()在键盘录入时可以接收任意数据,但是都会返回的内容都是字符串形式;

比如:键盘录入abc,那么会把abc看做字符串返回。键盘录入123,那么会把123看做字符串返回。

 代码示例:

```java
 Scanner sc = new Scanner(System.in);
 String s = sc.next();//录入的所有数据(无论是abc还是123)都会看做是字符串
 System.out.println(s);
 ```

其中,nextInt()只能录入整数,当录入小数或其他字符、字母就会报错;

nextDouble()能录入整数和小数,但返回的都是小数类型,录入字母、字符会报错。

键盘录入的第一种体系:

next(),nextInt(),nextDouble()在接收数据的时候,会遇到空格,回车,制表符其中一个就会停止接收数据。

即,当键盘录入的数据里面有空格、回车等时,如“abc abc"(两个abc中间有一个空格),打印输出的内容只会有一个abc

代码示例:

```java
 Scanner sc = new Scanner(System.in);
 String s = sc.next();
 System.out.println(s);
 //键盘录入:a b//注意录入的时候a和b之间加空格隔开。
 //此时控制台打印a
 //表示next方法在接收数据的时候,遇到空格就停止了,后面的本次不接收。
 ```

next(),nextInt(),nextDouble()在接收数据的时候,会遇到空格,回车,制表符其中一个就会停止接收数据。但是这些符号 + 后面的数据(空格以及后面的abc)还在内存中并没有接收。如果后面还有其他键盘录入的方法,会自动将这些数据接收。

代码示例:

```java
 Scanner sc = new Scanner(System.in);
 String s1 = sc.next();
 String s2 = sc.next();
 System.out.println(s1);
 System.out.println(s2);
 //此时值键盘录入一次a b(注意a和b之间用空格隔开)
 //那么第一个next();会接收a,a后面是空格,那么就停止,所以打印s1是a
 //但是空格+b还在内存中。
 //第二个next会去掉前面的空格,只接收b
 //所以第二个s2打印出来是b
 ```

键盘录入的第二种体系:

nextLine()方法是把一整行全部接收完毕。即使这一行里包括空格,也会在输出端一起打印。如键盘录入"abc abc",输出端打印"abc abc"

代码示例:

```java
 Scanner sc = new Scanner(System.in);
 String s = sc.nextLine();
 System.out.println(s);
 //键盘录入a b(注意a和b之间用空格隔开)
 //那么nextLine不会过滤前面和后面的空格,会把这一整行数据全部接收完毕。
 ```

ps:第一套体系和第二套体系一般不混用 


/**揭秘第一套体系和第二套体系不能混用*/
package demo8;
import java.util.Scanner;
public class Test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //next()为第一套体系
        System.out.println("请输入第一个字符串");//键盘录入abc abc
        String s1 = sc.next();//第一个next()接收到的实际是abc+空格
        System.out.println(s1);//打印输出时第一套体系遇到空格等停止,因此仅输出abc,而空格会留给下一个输出
        //sc.nextline()为第二套体系
        System.out.println("请输入第二个字符串");//当输入第一个字符串,摁空格以后程序运行,发现此条语句无法从键盘录入
        String s3 = sc.nextLine();//因为上一条语句的next()留了一个空格健给此处的nextline()
        System.out.println(s3);
        /**因此,第一二套体系不能混用*/
    }
}


键盘录入分为两套:

- next()、nextInt()、nextDouble()这三个配套使用。

如果用了这三个其中一个,就不要用nextLine()。

- nextLine()单独使用。

如果想要整数,那么先接收,再使用Integer.parseInt进行类型转换。

### 代码示例:

```java
 Scanner sc = new Scanner(System.in);
 String s = sc.next();//键盘录入123
 System.out.println("此时为字符串" + s);//此时123是字符串
 int i = sc.nextInt();//键盘录入123
 System.out.println("此时为整数:" + i);
 ```

录入的是字符串,想要整数,只需要接收了字符串以后,对字符串强转为整数即可。

```java
 Scanner sc = new Scanner(System.in);
 String s = sc.nextLine();//键盘录入123
 System.out.println("此时为字符串" + s);//此时123是字符串
 int i = Integer.parseInt(s);//想要整数再进行转换
 System.out.println("此时为整数:" + i);
 ```