Как определить, содержит ли переданный объект определённый метод?​

Тут нам поможет великий и ужасный механизм рефлексии, который при умелом подходе поможет разобрать любой объект мира Java по крупицам, а также модифицировать его. Для проверки объекта на содержание какого либо метода изначально нужно получить объект Class данного экземпляра, а уж из него можно вытянуть всё необходимое. Как обычно, пример в коде ниже:

Как вы видите, даже приватные методы с лёгкостью можно достать из объекта.

Как отсортировать список строк в обратном алфавитном порядке?​

Для сортировки списков в java у класса Collections есть перегруженный метод sort, который может принимать разные наборы аргументов. Одна из сигнатур метода выглядит следующим образом:

Метод принимает экземпляр класса, реализующего интерфейс List и параметризованный содержимым листа компаратор, который знает как сортировать этот самый лист. При вызове без компаратора метод отсортирует Ваш лист в обычном порядке, но если передать ему компаратор, который возвращает метод класса Collections reverseOrder(), то он отсортирует в обратном порядке лист. Пример в коде ниже.

 

Как отсортировать массив чисел?​

Для сортировки массивов в классе Arrays есть метод sort, в котором реализован оптимальный алгоритм. Можно, конечно, написать свои алгоритмы сортировки, но это полезно при начале обучения ЯП. Пользоваться же тем что уже написано до нас гораздо удобнее.

 

Что такое mutable и immutable типы? Что даёт классу String то, что его сделали immutable? ​

Immutable (неизменным) типом в ООП называется такой тип, объект которого после создания становиться неизменным, так сказать read-only. Соответственно mutable(изменчивые) типы готовы к изменениям на всём протяжении своего существования. Immutable тип, например String, не содержит методов для изменения своего состояния. Все методы, которые якобы изменяют состояние объекта String, на самом деле возвращают новые строки. Плюсы неизменности строк следующие:
-так как строки неизменны, их стало возможно использовать в пуле, тем самым добиться экономии памяти

s1 и s2 указывают на одну и ту же строку.
-возможность кэширования хэш-кода. Мы всегда можем быть уверены что хэш-код строки не изменился.
-безопасность. Подключения к базам, соединения, аргументы методов. Строки везде.
-потокобезопасность. Методы, обращающиеся из разных потоков к общей строке всегда видят одно и то же её состояние.

Что происходит, когда мы пишем «A»+»b»+»C»?​

Происходит чудо — называемое конкатенацией (или объединением) строк. Возвращается строка, состоящая из «суммируемых» строк. Математические операторы, в отличии от языка С, в Java перегружать нельзя. «+» является исключением, он перегружен изначально и помимо своих прямых обязанностей используется ещё для объединения строк.

Как развернуть строку задом наперёд?​

Для разворота строки в java у класса StringBuilder есть метод reverse, возвращающий перевёрнутую строку.

 

Как разбить строку на массив строк?​

Для деления строки у класса java.lang.String есть метод split, который в аргументе принимает символ — разделитель строки.

 

В какой кодировке хранятся строки в Java? Как преобразовать строку из UTF-8 в Windows-1251?​

Строки в java хранятся в Unicode. Для того что бы собрать строку в кодировке windows-1251 для неё нужно подготовить «правильные» байты.

 

Как отсортировать список в алфавитном порядке?​

Воспользуемся золотым правилом — не будем изобретать велосипед. Воспользуемся инструментами, которые идут в стандартной библиотеке — java.util.Collections, а точнее методом sort.

Стоит обратить внимание на то, что метод ничего не возвращает, вся сортировка инкапсулирована от клиента и происходит внутри листа, ссылку на который передали в метод.

Как правильно сравнивать строки в Java, игнорируя регистр букв?​

Для этой задачи у класса java.lang.String есть метод equalsIgnoreCase, который сравнивает строки, не обращая внимания на разницу в регистрах букв.