Scanner
Scanner sc1 = new Scanner(System.in);
private Scanner(Readable source, Pattern pattern) {
//-确定源和分割模式非空
断言,判断一个条件是否为真,否则报错
assert source != null : "source should not be null";
assert pattern != null : "pattern should not be null";
//传入输入流
this.source = source;
//传入分隔令牌模式
delimPattern = pattern;
//传入一个容量为BUFFER_SIZE(默认1024字节)的CharBuffer对象
buf = CharBuffer.allocate(BUFFER_SIZE);
//传入limit=0;Invariants: mark <= position <= limit <= capacity
buf.limit(0);
//传入用分隔模式匹配字符缓存的匹配器
matcher = delimPattern.matcher(buf);
//设置匹配器可跨边界检验匹配是否正确
matcher.useTransparentBounds(true);
//匹配器不对区域边界进行铆钉
matcher.useAnchoringBounds(false);
//传入默认的语言环境下的格式化日期、数字和货币
useLocale(Locale.getDefault(Locale.Category.FORMAT));
}
String s2=sc1.next();
读取数据至buf,匹配分隔模式,返回之间的内容
//-读取数据至buf,匹配分隔模式,返回之间的内容
查找并返回此扫描程序中的下一个完整令牌。
匹配分隔模式,返回之间的内容
public String next() {
//确保未关闭
ensureOpen();
//清理规则缓存和类型缓存 hasNextPattern = null;typeCache = null;
clearCaches();
while (true) {
@1 若准备工作完成,获取完整令牌
String token = getCompleteTokenInBuffer(null);
if (token != null) {
matchValid = true;
skipped