Подтвердить что ты не робот

Почему метод contains() находит пустую строку в непустой строке в Java

Это странное поведение, которое я нашел с помощью методов Java String.indexOf() и String.contains(). Если у меня есть непустая строка, она говорит blablabla, и я пытаюсь найти в ней пустую строку, она всегда возвращает true, тогда как я ожидаю, что она вернет false.

Итак, в основном, почему код ниже возвращает true и 0?

String testThis = "";
String fileName = "blablablabla";
System.out.println(fileName.contains(testThis));
System.out.println(fileName.indexOf(testThis));

Логически (по крайней мере для меня) "" не встречается в blablablabla, но indexOf("") говорит, что он делает, почему?

4b9b3361

Ответ 1

В каждой строке возникает пустая строка. В частности, непрерывное подмножество строки должно соответствовать пустой строке. Любое пустое подмножество является смежным, и любая строка имеет пустую строку в качестве такого подмножества.

Возвращает true тогда и только тогда, когда эта строка содержит указанную последовательность значений char.

Пустое множество значений char существует в любой строке, в начале, в конце и между символами. Из чего-либо вы ничего не можете извлечь. Из физической части строки/пряжи можно сказать, что в ней существует часть нулевой длины.

Если содержит возвращает true, существует возможность вызова substring(, чтобы найти строку. "aaa".substring(1,1) должен возвращать "", но не цитируйте меня, поскольку у меня нет IDE на данный момент.

Ответ 2

"" происходит между каждым символом, а также в начале и в конце.