Ответ 1
Это поведение не из-за разных операционных систем, но, вероятно, используются разные версии JVM.
Это "изменение поведения" вызвало ошибки неправильно записанные для Java 8.
Документация была обновлена для JDK 8, а также обсуждается в в этом вопросе, где split в Java 8 удаляет пустые строки в начале массива результатов. Вот почему дополнительная пустая строка перед !
не создается (следовательно, длина 2 вместо 3).
Обратите внимание на разницу в документации для метода split()
в Java 7 и в Java 8 для класса Pattern
и класс строки (Java 7, Java 8) соответственно. См. Исходный вопрос, связанный для получения дополнительной информации об этом.
Я также воспроизвел эту проблему на Java 7: sun-jdk-1.7.0_10 (ideone) и Java 8 sun- jdk-8u25 (ideone). См. здесь версии Java. Java 8 split предоставит возможность не добавлять лишнюю пустую строку в массив, тогда как разделение Java 7 будет.
Это не из-за того, что система является Linux или Windows, а скорее версией JVM. Вы можете дважды проверить версию JVM с помощью java -version