为什么无需提前设置数组大小就可通过Scanner创建数组?
原理说明
- Java的数组本身是固定长度的,但不需要在声明数组变量时手动指定长度,只要在数组对象实际初始化时能确定长度即可。你代码中的数组对象是
split()方法执行过程中完成初始化的,因此不需要你提前手动设置大小。 scanner.nextLine()会先完成整行输入的读取:该方法会一直阻塞到用户输入回车,之后会把整行输入(不含末尾的换行符)完整读取为一个String对象,此时你输入的所有内容、空格数量都已经完全确定,不存在内容未知的情况。split(" ")方法会自动完成数组的创建:这是String类的内置方法,它会以你传入的空格作为分隔符,遍历刚才读取到的完整字符串,切割得到所有子串后统计子串的总数量,之后在方法内部自动创建一个长度和子串数量完全匹配的String数组,将所有子串存入数组后再返回数组的引用,你直接接收这个返回值就能得到对应大小的数组。
举个简单的例子:如果你输入的是apple banana cat,split(" ")切割后得到3个子串,方法内部就会自动创建长度为3的String数组;如果你输入的是hello world,就会自动创建长度为2的数组,大小完全和你的输入匹配。
内容的提问来源于stack exchange,提问作者Jeremiahtaylor2017
相关产品推荐
相关产品推荐

