关于split数组长度问题

img


如图 我定义的arr的长度为2为什么我可以无限输入数据不会报错呢

img


如果我不加第一行的sout为什么run的时候console打不开 但是如果console在运行的话可以直接输入数据


public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入");
        String[] arr = new String[2];
        String next = input.next();
        arr = next.split(",");
        int length = arr.length;
        for (int i = 0; i < length; i++) {
            System.out.print(arr[i] + " ");
        }
    }

你输入数组重新指向了定义了数组,所以长度是改变了

因为split方法应该是新生成了一个数组,与你上面定义的数组不是同一个了,把新的地址给了arr
你可以打印出来地址看看,应该不是同一个数组了,

因为arr重新指向了新数组,跟你之前new的没有一毛钱关系了

在arr = input.next().split(","); 的时候,arr定义成了一个新数组