Мне было интересно, если метод CompareTo смотрит только на длину строк или он смотрит на каждый символ строки?
Он (потенциально) смотрит на каждый символ в строке. Это, конечно, не просто смотреть на длину.
и если посмотреть только на длину, как бы я мог сравнить два элемента в массиве строк, чтобы увидеть, какой элемент больше.
Это не так, поэтому этот вопрос спорный.
То, что я пытаюсь сделать, это написать метод, который рекурсивно просматривает правую часть массива, середину и левую часть и возвращает индекс самой длинной строки в массиве.
у меня все работает нормально, единственная проблема в том, что когда есть две строки одинаковой длины, он возвращает первую.
Нам нужно увидеть ваш код , чтобы понять, что на самом деле идет не так, но, скорее всего, не вызвано какой-то странностью в семантике String.compareTo(String)
как строки чисел сравниваются лексографически? будет 17 больше 15?
Да, он сравнивает строки лексикографически. Да, «17» будет больше, чем «15». (Но «17» будет больше, чем «15», если вы сравните строки также численно. С другой стороны, «7» лексикографически больше, чем «13», но численно меньше, чем оно.)
Возможно, вам нужно прочитать, что означает "лексикографический порядок"; Википедия подводит итог как:
"В математике лексикографический или лексикографический порядок (также известный как лексический порядок, словарный порядок, алфавитный порядок или лексикографический (al) продукт) представляет собой обобщение того, как алфавитный порядок слов основан на алфавитный порядок букв. "