hasNext和hasNextLine的区别

大多数人对hasNext的印象停留在“判断是否有下一个值”上,而该方法还是一个阻塞式的方法

hasNext和hasNextLine的区别
二者都是用于判断“有无键盘输入”的,有则返回true,没有则阻塞!一定记住是阻塞而不是返回false,很多人都说是返回false,但你查源码会发现是不会返回false的,他会让你一直阻塞在判断阶段,二者只是在细节上有不同

  • hasNext()方法会判断接下来是否有非空字符.如果有,则返回true,没有则阻塞。例如一直敲回车相当于一直判断为空字符,但是不会返回false,而是一直阻塞在判断阶段,直到你输入了非空字符
  • hasNextLine() 方法会根据行匹配模式去判断接下来是否有一行(包括空行),如果有,则返回true。这个没什么特别的,只要是你敲了回车那都是true并且不会阻塞
    例如像这种if语句是永远不可能执行到内部方法体的
if(scan.hasNext()==false){
    System.out.println("hasNext和hasNextLine不会返回false");
}

再举一个例子加深理解:

Scanner scan = new Scanner(System.in);
System.out.println(scan.hasNextLine());
System.out.println(scan.hasNext());

运行该代码,一直不停敲回车键,第一次回车会直接输出true,而后面一直敲都会阻塞在hasNext语句上,运行如下图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值