参考jdk17的api手册:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html
官方概念
scanner可以通过指定正则表达式(regular expressions)进行基本类型数据以及string的解析(实际上就是分割成几个tokens),官方把分割string方法分为正则表达式与定界符(delimiter pattern)两种方法。其中默认的定界符就是空格(whitespace)。
官方实例
next方法返回指针当前的下一个值,默认指针在0号位上,该位置没有数据。
关于hasnext与next方法取值的图解:
string是一行token
关于重置默认分界符
可以通过reset方法重置为空格
关于各个方法的阻塞问题
如果是两个next方法,会默认解析输入字符串并找到两个tokens
官方表示:在调用findInline,skip等方法匹配某个样式(pattern)时,会无视(或者说去掉)分界符并按照分界符去分割原来的字符为几个tokens。
使用正则表达式或者是分界符模式可能返回空的token
官方表示:要正确使用正则表达式:例如\s只是表示一个空格,\s+则是复数形式的连续匹配
关于scanner是如何做到读取可读对象到末尾而终结
通过抛出io异常而得知
scanner不是线程安全的
scanner默认扫描到的数字是十进制的
默认处理的数字是十进制(decimal numbers),可以通过指定基数(radix)来修改是多少进制